emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r99493: xterm.c (XTflash): Use Gdk-ro


From: Jan D.
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r99493: xterm.c (XTflash): Use Gdk-routines if USE_GTK so scroll bars doesn't get
Date: Sat, 13 Feb 2010 14:28:09 +0100
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 99493 [merge]
committer: Jan D. <address@hidden>
branch nick: trunk
timestamp: Sat 2010-02-13 14:28:09 +0100
message:
  xterm.c (XTflash): Use Gdk-routines if USE_GTK so scroll bars doesn't get
  overdrawn.
modified:
  src/ChangeLog
  src/xterm.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2010-02-13 12:54:50 +0000
+++ b/src/ChangeLog     2010-02-13 13:27:32 +0000
@@ -1,7 +1,9 @@
 2010-02-13  Jan Djärv  <address@hidden>
 
-       * 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  <address@hidden>
 

=== modified file 'src/xterm.c'
--- a/src/xterm.c       2010-02-13 12:54:50 +0000
+++ b/src/xterm.c       2010-02-13 13:27:32 +0000
@@ -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);
     }
   }


reply via email to

[Prev in Thread] Current Thread [Next in Thread]