]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix opaque region treatment on GTK 3
authorPo Lu <luangruo@yahoo.com>
Tue, 19 Apr 2022 03:13:11 +0000 (11:13 +0800)
committerPo Lu <luangruo@yahoo.com>
Tue, 19 Apr 2022 03:13:59 +0000 (11:13 +0800)
* src/xfns.c (x_set_alpha_background):
* src/xterm.c (x_update_opaque_region): Update opaque region for
tooltip frames the correct way on GTK.

src/xfns.c
src/xterm.c

index 195af1381b9d03e31f789bc78a03127de1c8307a..9ceba98f67dcc4c4f45e4c5d4adca4a174705eef 100644 (file)
@@ -730,9 +730,11 @@ x_set_wait_for_wm (struct frame *f, Lisp_Object new_value, Lisp_Object old_value
 static void
 x_set_alpha_background (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
 {
-#ifndef HAVE_GTK3
   unsigned long opaque_region[] = {0, 0, FRAME_PIXEL_WIDTH (f),
                                   FRAME_PIXEL_HEIGHT (f)};
+#ifdef USE_GTK
+  GObjectClass *object_class;
+  GtkWidgetClass *class;
 #endif
 
   gui_set_alpha_background (f, arg, oldval);
@@ -776,6 +778,24 @@ x_set_alpha_background (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
                     FRAME_DISPLAY_INFO (f)->Xatom_net_wm_opaque_region,
                     XA_CARDINAL, 32, PropModeReplace,
                     (unsigned char *) &opaque_region, 4);
+#else
+  else
+    {
+      if (FRAME_TOOLTIP_P (f))
+       XChangeProperty (FRAME_X_DISPLAY (f),
+                        FRAME_X_WINDOW (f),
+                        FRAME_DISPLAY_INFO (f)->Xatom_net_wm_opaque_region,
+                        XA_CARDINAL, 32, PropModeReplace,
+                        (unsigned char *) &opaque_region, 4);
+      else
+       {
+         object_class = G_OBJECT_GET_CLASS (FRAME_GTK_OUTER_WIDGET (f));
+         class = GTK_WIDGET_CLASS (object_class);
+
+         if (class->style_updated)
+           class->style_updated (FRAME_GTK_OUTER_WIDGET (f));
+       }
+    }
 #endif
 }
 
index 99269e3e92b0319ee3f468b6bb940d26b284aa17..b5b2fe32947648893699468b280a80ff0d311619 100644 (file)
@@ -3783,7 +3783,6 @@ x_toolkit_position (struct frame *f, int x, int y,
 static void
 x_update_opaque_region (struct frame *f, XEvent *configure)
 {
-#ifndef HAVE_GTK3
   unsigned long opaque_region[] = {0, 0,
                                   (configure
                                    ? configure->xconfigure.width
@@ -3791,7 +3790,6 @@ x_update_opaque_region (struct frame *f, XEvent *configure)
                                   (configure
                                    ? configure->xconfigure.height
                                    : FRAME_PIXEL_HEIGHT (f))};
-#endif
 
   if (!FRAME_DISPLAY_INFO (f)->alpha_bits)
     return;
@@ -3810,6 +3808,13 @@ x_update_opaque_region (struct frame *f, XEvent *configure)
                     FRAME_DISPLAY_INFO (f)->Xatom_net_wm_opaque_region,
                     XA_CARDINAL, 32, PropModeReplace,
                     (unsigned char *) &opaque_region, 4);
+#else
+  else if (FRAME_TOOLTIP_P (f))
+    XChangeProperty (FRAME_X_DISPLAY (f),
+                    FRAME_X_WINDOW (f),
+                    FRAME_DISPLAY_INFO (f)->Xatom_net_wm_opaque_region,
+                    XA_CARDINAL, 32, PropModeReplace,
+                    (unsigned char *) &opaque_region, 4);
 #endif
   unblock_input ();
 }