gnu.emacs.bug
[Top] [All Lists]

bug#4381: 23.1.50; Cocoa Emacs: face background for 'region set in ns-wi

Subject: bug#4381: 23.1.50; Cocoa Emacs: face background for 'region set in ns-win.el after .emacs
From: Adrian Robert
Date: Thu, 24 Sep 2009 12:15:31 -0400
Newsgroups: gnu.emacs.bug



On Sep 24, 2009, at 11:14 AM, Stefan Monnier wrote:

Colors there are defined for dark and light backgrounds, which
is not supported by the NS implementation.
Why isn't it supported?
The only system-defined selection color on NS platforms is for the
unconfigurable standard background color of white.

I'm not sure we're talking about the same thing.  The lisp/faces.el
notion of dark/light background doesn't have anything to do with the
desktop's background, but with the Emacs buffers's default background
(i.e. whether the background color of the `default' face is rather
light or rather dark).

No, we are. The background of content panes in apps under NS (text editors, email readers, PDF viewers, etc.) is unconfigurably fixed to be white. So the system-defined selection color will work well with light backgrounds, but not dark. The patch I attached handles this in a reasonable way though.



--- faces.el.~1.446.~   2009-09-05 15:33:48.000000000 -0400
+++ faces.el    2009-09-23 23:06:19.000000000 -0400
@@ -2281,6 +2281,8 @@ terminal type to a different value."
 (defface region
   '((((class color) (min-colors 88) (background dark))
      :background "blue3")
+    (((class color) (min-colors 88) (background light) (type ns))
+     :background "ns_selection_color")
     (((class color) (min-colors 88) (background light))
      :background "lightgoldenrod2")
     (((class color) (min-colors 16) (background dark))

Could you add a comment explaining why you put (background light) in
the specs?  I guess it's because the ns_selection_color is (almost)
always defined with the assumption that it will be used on text
displayed on a light background., right?

Something like:

;; Region face: under NS, use the system-defined selection color
;; (optimized for the system-fixed white background of other apps),
;; if background is light.





<Prev in Thread] Current Thread [Next in Thread>