From: Po Lu <luangruo@yahoo.com>
Date: Sat, 22 Jan 2022 02:12:18 +0000 (+0800)
Subject: Clean up visible bell code on X
X-Git-Tag: emacs-29.0.90~2877^2~2
X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=882997e830d5a761e1cf86a2064df6d0958a5b51;p=emacs.git

Clean up visible bell code on X

* src/gtkutil.c (xg_create_scroll_bar):
(xg_create_horizontal_scroll_bar): Ensure that the scroll bars
have their own X windows.
* src/xterm.c (XTflash): Remove use of GDK functions for
drawing.
---

diff --git a/src/gtkutil.c b/src/gtkutil.c
index 3cb8cd15332..0ac71af8080 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -4431,6 +4431,10 @@ xg_create_scroll_bar (struct frame *f,
 
   wscroll = gtk_scrollbar_new (GTK_ORIENTATION_VERTICAL, GTK_ADJUSTMENT (vadj));
 
+#if !defined HAVE_PGTK && GTK_CHECK_VERSION (2, 18, 0)
+  eassert (gdk_window_ensure_native (gtk_widget_get_window (wscroll)));
+#endif
+
   xg_finish_scroll_bar_creation (f, wscroll, bar, scroll_callback,
                                  end_callback, scroll_bar_name);
   bar->horizontal = 0;
@@ -4463,6 +4467,10 @@ xg_create_horizontal_scroll_bar (struct frame *f,
 
   wscroll = gtk_scrollbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_ADJUSTMENT (hadj));
 
+#if !defined HAVE_PGTK && GTK_CHECK_VERSION (2, 18, 0)
+  eassert (gdk_window_ensure_native (gtk_widget_get_window (wscroll)));
+#endif
+
   xg_finish_scroll_bar_creation (f, wscroll, bar, scroll_callback,
                                  end_callback, scroll_bar_name);
   bar->horizontal = 1;
diff --git a/src/xterm.c b/src/xterm.c
index 0f98cc7bec6..81baeddbcaa 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -4650,38 +4650,6 @@ XTflash (struct frame *f)
   block_input ();
 
   {
-#ifdef USE_GTK
-    /* Use Gdk routines to draw.  This way, we won't draw over scroll bars
-       when the scroll bars and the edit widget share the same X window.  */
-    GdkWindow *window = gtk_widget_get_window (FRAME_GTK_WIDGET (f));
-#ifdef HAVE_GTK3
-#if GTK_CHECK_VERSION (3, 22, 0)
-    cairo_region_t *region = gdk_window_get_visible_region (window);
-    GdkDrawingContext *context = gdk_window_begin_draw_frame (window, region);
-    cairo_t *cr = gdk_drawing_context_get_cairo_context (context);
-#else
-    cairo_t *cr = gdk_cairo_create (window);
-#endif
-    cairo_set_source_rgb (cr, 1, 1, 1);
-    cairo_set_operator (cr, CAIRO_OPERATOR_DIFFERENCE);
-#define XFillRectangle(d, win, gc, x, y, w, h) \
-    do {                                       \
-      cairo_rectangle (cr, x, y, w, h);        \
-      cairo_fill (cr);                         \
-    }                                          \
-    while (false)
-#else /* ! HAVE_GTK3 */
-    GdkGCValues vals;
-    GdkGC *gc;
-    vals.foreground.pixel = (FRAME_FOREGROUND_PIXEL (f)
-                             ^ FRAME_BACKGROUND_PIXEL (f));
-    vals.function = GDK_XOR;
-    gc = gdk_gc_new_with_values (window,
-                                 &vals, GDK_GC_FUNCTION | GDK_GC_FOREGROUND);
-#define XFillRectangle(d, win, gc, x, y, w, h) \
-    gdk_draw_rectangle (window, gc, true, x, y, w, h)
-#endif /* ! HAVE_GTK3 */
-#else /* ! USE_GTK */
     GC gc;
 
     /* Create a GC that will use the GXxor function to flip foreground
@@ -4696,7 +4664,6 @@ XTflash (struct frame *f)
       gc = XCreateGC (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
 		      GCFunction | GCForeground, &values);
     }
-#endif
     {
       /* Get the height not including a menu bar widget.  */
       int height = FRAME_PIXEL_HEIGHT (f);
@@ -4772,22 +4739,7 @@ XTflash (struct frame *f)
 	XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc,
 			flash_left, FRAME_INTERNAL_BORDER_WIDTH (f),
 			width, height - 2 * FRAME_INTERNAL_BORDER_WIDTH (f));
-
-#ifdef USE_GTK
-#ifdef HAVE_GTK3
-#if GTK_CHECK_VERSION (3, 22, 0)
-      gdk_window_end_draw_frame (window, context);
-      cairo_region_destroy (region);
-#else
-      cairo_destroy (cr);
-#endif
-#else
-      g_object_unref (G_OBJECT (gc));
-#endif
-#undef XFillRectangle
-#else
       XFreeGC (FRAME_X_DISPLAY (f), gc);
-#endif
       x_flush (f);
     }
   }