]> git.eshelyaron.com Git - emacs.git/commitdiff
Don't use the Gtk region face
authorLars Ingebrigtsen <larsi@gnus.org>
Sat, 23 Jul 2022 08:52:30 +0000 (10:52 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Sat, 23 Jul 2022 08:52:30 +0000 (10:52 +0200)
* lisp/faces.el (region): Don't use the Gtk region face, because
it produces low contrast combinations (bug#46493).
* src/gtkutil.h:
* src/gtkutil.c (xg_check_special_colors): Remove.

* src/xfns.c (x_defined_color):
* src/pgtkterm.c (pgtk_defined_color): Don't call.

etc/NEWS
lisp/faces.el
src/gtkutil.c
src/gtkutil.h
src/pgtkterm.c
src/xfns.c

index 666699e8c6684ea4afd5a865f5df5855c385f98d..780dbfa51e8f6bdd5576be90d941fa100a0c5835 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -166,6 +166,13 @@ of 'user-emacs-directory'.
 \f
 * Incompatible changes in Emacs 29.1
 
+---
+*** The Gtk selection face is no longer used for the region.
+The combination of a Gtk-controlled background and a foreground colour
+controlled by the internal Emacs machinery led to low-contrast faces
+in common default setups.  Emacs now uses the same 'region' face on
+Gtk and non-Gtk setups.
+
 ** Dired
 
 ---
index f04ea9115ee58456840fe864540eae2eec3311b1..b2589c5c06ac5640e3fa0e8dd481aab5cc6fc47d 100644 (file)
@@ -2502,9 +2502,6 @@ default."
 (defface region
   '((((class color) (min-colors 88) (background dark))
      :background "blue3" :extend t)
-    (((class color) (min-colors 88) (background light) (type gtk))
-     :distant-foreground "gtk_selection_fg_color"
-     :background "gtk_selection_bg_color" :extend t)
     (((class color) (min-colors 88) (background light) (type ns))
      :distant-foreground "ns_selection_fg_color"
      :background "ns_selection_bg_color" :extend t)
index a6bba096a43b30a279b8d5a024751e94f366ae45..87f166bf54d63e7f845faa9bcf3d0a6d1057a3b6 100644 (file)
@@ -727,88 +727,6 @@ get_utf8_string (const char *str)
   return utf8_str;
 }
 
-/* Check for special colors used in face spec for region face.
-   The colors are fetched from the Gtk+ theme.
-   Return true if color was found, false if not.  */
-
-bool
-xg_check_special_colors (struct frame *f,
-                         const char *color_name,
-                         Emacs_Color *color)
-{
-  bool success_p;
-  bool get_bg;
-  bool get_fg;
-#ifdef HAVE_GTK3
-  GtkStyleContext *gsty;
-  GdkRGBA col;
-  char buf[sizeof "rgb://rrrr/gggg/bbbb"];
-  int state;
-  GdkRGBA *c;
-  unsigned short r, g, b;
-#else
-  GtkStyle *gsty;
-  GdkColor *grgb;
-#endif
-
-  get_bg = !strcmp ("gtk_selection_bg_color", color_name);
-  get_fg = !get_bg && !strcmp ("gtk_selection_fg_color", color_name);
-  success_p = false;
-
-#ifdef HAVE_PGTK
-  while (FRAME_PARENT_FRAME (f))
-    f = FRAME_PARENT_FRAME (f);
-#endif
-
-  if (!FRAME_GTK_WIDGET (f) || !(get_bg || get_fg))
-    return success_p;
-
-  block_input ();
-#ifdef HAVE_GTK3
-  gsty = gtk_widget_get_style_context (FRAME_GTK_OUTER_WIDGET (f));
-  state = GTK_STATE_FLAG_SELECTED | GTK_STATE_FLAG_FOCUSED;
-
-  if (get_fg)
-    gtk_style_context_get_color (gsty, state, &col);
-  else
-    {
-      /* FIXME: Retrieving the background color is deprecated in
-        GTK+ 3.16.  New versions of GTK+ don't use the concept of a
-        single background color any more, so we shouldn't query for
-        it.  */
-      gtk_style_context_get (gsty, state,
-                            GTK_STYLE_PROPERTY_BACKGROUND_COLOR, &c,
-                            NULL);
-      col = *c;
-      gdk_rgba_free (c);
-    }
-
-  r = col.red * 65535;
-  g = col.green * 65535;
-  b = col.blue * 65535;
-#ifndef HAVE_PGTK
-  sprintf (buf, "rgb:%04x/%04x/%04x", r, g, b);
-  success_p = x_parse_color (f, buf, color) != 0;
-#else
-  sprintf (buf, "#%04x%04x%04x", r, g, b);
-  success_p = pgtk_parse_color (f, buf, color) != 0;
-#endif
-#else
-  gsty = gtk_widget_get_style (FRAME_GTK_WIDGET (f));
-  grgb = (get_bg ? &gsty->bg[GTK_STATE_SELECTED]
-         : &gsty->fg[GTK_STATE_SELECTED]);
-
-  color->red = grgb->red;
-  color->green = grgb->green;
-  color->blue = grgb->blue;
-  color->pixel = grgb->pixel;
-  success_p = 1;
-#endif
-  unblock_input ();
-  return success_p;
-}
-
-
 \f
 /***********************************************************************
                               Tooltips
index 190d66283142d816c096a66f21b9283ea0882b20..32b1fedbaa6841c57061987d409b4acd8f09325f 100644 (file)
@@ -179,9 +179,6 @@ extern GdkCursor * xg_create_default_cursor (GdkDisplay *gdpy);
 extern bool xg_create_frame_widgets (struct frame *f);
 extern void xg_free_frame_widgets (struct frame *f);
 extern void xg_set_background_color (struct frame *f, unsigned long bg);
-extern bool xg_check_special_colors (struct frame *f,
-                                    const char *color_name,
-                                    Emacs_Color *color);
 #ifdef HAVE_PGTK
 extern void xg_create_frame_outer_widgets (struct frame *f);
 #endif
index b283cef7cde22914c019ec321140324b30e0a480..54e70255f4571ad2d29163c1a4590dcb5bb01676 100644 (file)
@@ -6913,9 +6913,7 @@ pgtk_defined_color (struct frame *f, const char *name,
   int r;
 
   block_input ();
-  r = xg_check_special_colors (f, name, color_def);
-  if (!r)
-    r = pgtk_parse_color (f, name, color_def);
+  r = pgtk_parse_color (f, name, color_def);
   unblock_input ();
   return r;
 }
index ce867c1619cfd2a432ed09a017a1f952eb960761..7d394bd4f50aac83b91989f626713c2338a8d259 100644 (file)
@@ -670,11 +670,7 @@ x_defined_color (struct frame *f, const char *color_name,
   Colormap cmap = FRAME_X_COLORMAP (f);
 
   block_input ();
-#ifdef USE_GTK
-  success_p = xg_check_special_colors (f, color_name, color);
-#endif
-  if (!success_p)
-    success_p = x_parse_color (f, color_name, color) != 0;
+  success_p = x_parse_color (f, color_name, color) != 0;
   if (success_p && alloc_p)
     success_p = x_alloc_nearest_color (f, cmap, color);
   unblock_input ();