]> git.eshelyaron.com Git - emacs.git/commitdiff
Pick up default selection color on OSX when user defaults are not set.
authorJan Djärv <jan.h.d@swipnet.se>
Sat, 28 Sep 2013 10:01:50 +0000 (12:01 +0200)
committerJan Djärv <jan.h.d@swipnet.se>
Sat, 28 Sep 2013 10:01:50 +0000 (12:01 +0200)
* lisp/faces.el (region): Change ns_selection_color to
ns_selection_fg_color, add ns_selection_bg_color.

* src/nsterm.h (NS_SELECTION_BG_COLOR_DEFAULT): Renamed from
NS_SELECTION_COLOR_DEFAULT.
(NS_SELECTION_FG_COLOR_DEFAULT): New.

* src/nsterm.m (ns_selection_color): Remove.
(ns_get_color): Check for ns_selection_(fg|bg)_color using
NSColor selectedText(Background)Color.  Only for COCOA.
(ns_term_init): Remove assignment of ns_selection_color, logic
moved to ns_get_color.

lisp/ChangeLog
lisp/faces.el
src/ChangeLog
src/nsterm.h
src/nsterm.m

index 971cc1824489e15b341451c6736d255755f3a3ab..0affac1deaae0b8a06ed501c2a1fceaf98708c88 100644 (file)
@@ -1,3 +1,8 @@
+2013-09-28  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * faces.el (region): Change ns_selection_color to
+       ns_selection_fg_color, add ns_selection_bg_color.
+
 2013-09-28  Leo Liu  <sdl.web@gmail.com>
 
        * progmodes/octave.el (inferior-octave-completion-table)
index b135755f1650abf999979374120f11d91c47f277..589a1e1ca75438d5a8635cda45e089707333bbce 100644 (file)
@@ -2259,7 +2259,8 @@ terminal type to a different value."
      :foreground "gtk_selection_fg_color"
      :background "gtk_selection_bg_color")
     (((class color) (min-colors 88) (background light) (type ns))
-     :background "ns_selection_color")
+     :foreground "ns_selection_fg_color"
+     :background "ns_selection_bg_color")
     (((class color) (min-colors 88) (background light))
      :background "lightgoldenrod2")
     (((class color) (min-colors 16) (background dark))
index ec36db90dfa5ae6ab8e4372987fb2291dc886c44..4c298873dccedde8ccb3bb6f2fbf87b4f10fda18 100644 (file)
@@ -1,3 +1,15 @@
+2013-09-28  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.m (ns_selection_color): Remove.
+       (ns_get_color): Check for ns_selection_(fg|bg)_color using
+       NSColor selectedText(Background)Color.  Only for COCOA.
+       (ns_term_init): Remove assignment of ns_selection_color, logic
+       moved to ns_get_color.
+
+       * nsterm.h (NS_SELECTION_BG_COLOR_DEFAULT): Renamed from
+       NS_SELECTION_COLOR_DEFAULT.
+       (NS_SELECTION_FG_COLOR_DEFAULT): New.
+
 2013-09-28  Eli Zaretskii  <eliz@gnu.org>
 
        * xdisp.c (Fdump_tool_bar_row): Ifdef away the body if 'struct
index 9f7767b312e45c6f14ccd163ec8c2175ae47234b..e99ed3d289a8c48e8c414b1a1901fabc82822861 100644 (file)
@@ -911,7 +911,8 @@ extern char gnustep_base_version[];  /* version tracking */
 
 #define NS_SCROLL_BAR_WIDTH_DEFAULT     [EmacsScroller scrollerWidth]
 /* This is to match emacs on other platforms, ugly though it is. */
-#define NS_SELECTION_COLOR_DEFAULT     @"LightGoldenrod2";
+#define NS_SELECTION_BG_COLOR_DEFAULT  @"LightGoldenrod2";
+#define NS_SELECTION_FG_COLOR_DEFAULT  @"Black";
 #define RESIZE_HANDLE_SIZE 12
 
 /* Little utility macros */
index 65c67eb9b56d9d16a084d5b9c22624fe47c36c97..47000da94da08c670da7e97165f371e96ccd5531 100644 (file)
@@ -179,9 +179,6 @@ static Lisp_Object QUTF8_STRING;
    no way to control this behavior. */
 float ns_antialias_threshold;
 
-/* Used to pick up AppleHighlightColor on OS X */
-NSString *ns_selection_color;
-
 NSArray *ns_send_types =0, *ns_return_types =0, *ns_drag_types =0;
 NSString *ns_app_name = @"Emacs";  /* default changed later */
 
@@ -1454,11 +1451,41 @@ ns_get_color (const char *name, NSColor **col)
 /*fprintf (stderr, "ns_get_color: '%s'\n", name); */
   block_input ();
 
-  if ([nsname isEqualToString: @"ns_selection_color"])
+#ifdef NS_IMPL_COCOA
+  if ([nsname isEqualToString: @"ns_selection_bg_color"])
+    {
+      NSString *defname = [[NSUserDefaults standardUserDefaults]
+                            stringForKey: @"AppleHighlightColor"];
+
+      if (defname != nil)
+        nsname = defname;
+      else if ((new = [NSColor selectedTextBackgroundColor]) != nil)
+        {
+          *col = [new colorUsingColorSpaceName: NSCalibratedRGBColorSpace];
+          unblock_input ();
+          return 0;
+        }
+      else
+        nsname = NS_SELECTION_BG_COLOR_DEFAULT;
+
+      name = [nsname UTF8String];
+    }
+  else if ([nsname isEqualToString: @"ns_selection_fg_color"])
     {
-      nsname = ns_selection_color;
-      name = [ns_selection_color UTF8String];
+      /* NOTE: OSX applications normally don't set foreground selection, but
+         text may be unreadable if we don't.
+      */
+      if ((new = [NSColor selectedTextColor]) != nil)
+        {
+          *col = [new colorUsingColorSpaceName: NSCalibratedRGBColorSpace];
+          unblock_input ();
+          return 0;
+        }
+
+      nsname = NS_SELECTION_FG_COLOR_DEFAULT;
+      name = [nsname UTF8String];
     }
+#endif // NS_IMPL_COCOA
 
   /* First, check for some sort of numeric specification. */
   hex[0] = '\0';
@@ -4168,11 +4195,6 @@ ns_term_init (Lisp_Object display_name)
       ns_antialias_threshold = NILP (tmp) ? 10.0 : XFLOATINT (tmp);
     }
 
-  ns_selection_color = [[NSUserDefaults standardUserDefaults]
-                        stringForKey: @"AppleHighlightColor"];
-  if (ns_selection_color == nil)
-    ns_selection_color = NS_SELECTION_COLOR_DEFAULT;
-
   {
     NSColorList *cl = [NSColorList colorListNamed: @"Emacs"];