Mercurial > emacs
changeset 107141:b5f6df970d0f
xterm.c (XTflash): Use Gdk-routines if USE_GTK so scroll bars doesn't get
overdrawn.
author | Jan D. <jan.h.d@swipnet.se> |
---|---|
date | Sat, 13 Feb 2010 14:27:32 +0100 |
parents | f257bf772280 |
children | c00bb092f636 3417b6095672 |
files | src/ChangeLog src/xterm.c |
diffstat | 2 files changed, 25 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog Sat Feb 13 13:54:50 2010 +0100 +++ b/src/ChangeLog Sat Feb 13 14:27:32 2010 +0100 @@ -1,7 +1,9 @@ 2010-02-13 Jan Djärv <jan.h.d@swipnet.se> - * xterm.c (x_clear_frame_area): Cal gtk_widget_queue_draw if USE_GTK, + * xterm.c (x_clear_frame_area): Call gtk_widget_queue_draw if USE_GTK, bug #5571. + (XTflash): Use Gdk-routines if USE_GTK so scroll bars doesn't get + overdrawn. 2010-02-10 Jan Djärv <jan.h.d@swipnet.se>
--- a/src/xterm.c Sat Feb 13 13:54:50 2010 +0100 +++ b/src/xterm.c Sat Feb 13 14:27:32 2010 +0100 @@ -3015,6 +3015,21 @@ 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. */ + GdkGCValues vals; + vals.foreground.pixel = (FRAME_FOREGROUND_PIXEL (f) + ^ FRAME_BACKGROUND_PIXEL (f)); + vals.function = GDK_XOR; + GdkGC *gc = gdk_gc_new_with_values (FRAME_GTK_WIDGET (f)->window, + &vals, + GDK_GC_FUNCTION + | GDK_GC_FOREGROUND); +#define XFillRectangle(d, win, gc, x, y, w, h) \ + gdk_draw_rectangle (FRAME_GTK_WIDGET (f)->window, \ + gc, TRUE, x, y, w, h) +#else GC gc; /* Create a GC that will use the GXxor function to flip foreground @@ -3029,7 +3044,7 @@ 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_TEXT_LINES_TO_PIXEL_HEIGHT (f, FRAME_LINES (f)); @@ -3072,6 +3087,7 @@ (height - flash_height - FRAME_INTERNAL_BORDER_WIDTH (f)), width, flash_height); + } else /* If it is short, flash it all. */ @@ -3133,7 +3149,12 @@ flash_left, FRAME_INTERNAL_BORDER_WIDTH (f), width, height - 2 * FRAME_INTERNAL_BORDER_WIDTH (f)); +#ifdef USE_GTK + g_object_unref (G_OBJECT (gc)); +#undef XFillRectangle +#else XFreeGC (FRAME_X_DISPLAY (f), gc); +#endif x_flush (f); } }