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); } }