]> Pileus Git - ~andy/gtk/commitdiff
Make _gdk_windowing_window_queue_translation a GdkWindiwImpl call
authorAlexander Larsson <alexl@redhat.com>
Mon, 15 Dec 2008 13:55:53 +0000 (14:55 +0100)
committerAlexander Larsson <alex@localhost.localdomain>
Thu, 2 Apr 2009 08:15:15 +0000 (10:15 +0200)
gdk/gdkinternals.h
gdk/gdkoffscreenwindow.c
gdk/gdkwindow.c
gdk/gdkwindowimpl.h
gdk/x11/gdkgeometry-x11.c
gdk/x11/gdkprivate-x11.h
gdk/x11/gdkwindow-x11.c

index ffa22375df9f48d889c1e864bab50ee752c6e76d..ecc9b097eea5b36486e06f0bca073e99a020a952 100644 (file)
@@ -359,11 +359,6 @@ gint _gdk_windowing_get_bits_for_depth (GdkDisplay *display,
 
 #define GDK_WINDOW_IS_MAPPED(window) ((((GdkWindowObject*)window)->state & GDK_WINDOW_STATE_WITHDRAWN) == 0)
 
-void _gdk_windowing_window_queue_translation (GdkWindow *window,
-                                             GdkRegion *area,
-                                             gint       dx,
-                                             gint       dy);
-
 
 /* Called to do the windowing system specific part of gdk_window_destroy(),
  *
index 7f87b822bb57f0cb55c041ef43f58cb28e101d5a..03b52a6b0b4fa5a188977ea54ec9aa86fd78366e 100644 (file)
@@ -1119,6 +1119,15 @@ gdk_offscreen_window_queue_antiexpose (GdkWindow *window,
   return FALSE;
 }
 
+static void
+gdk_offscreen_window_queue_translation (GdkWindow *window,
+                                       GdkRegion *area,
+                                       gint       dx,
+                                       gint       dy)
+{
+}
+
+
 static void
 gdk_offscreen_window_class_init (GdkOffscreenWindowClass *klass)
 {
@@ -1173,6 +1182,7 @@ gdk_offscreen_window_impl_iface_init (GdkWindowImplIface *iface)
   iface->merge_child_shapes = gdk_offscreen_window_merge_child_shapes;
   iface->set_static_gravities = gdk_offscreen_window_set_static_gravities;
   iface->queue_antiexpose = gdk_offscreen_window_queue_antiexpose;
+  iface->queue_translation = gdk_offscreen_window_queue_translation;
   iface->get_origin = gdk_offscreen_window_get_origin;
 }
 
index 81d8dd235e9801616aeb70d53a72c229c9ab2fd6..8bcdd3739cd2cf5a118598a90c2b98f23920b797 100644 (file)
@@ -5559,9 +5559,8 @@ gdk_window_move_resize_internal (GdkWindow *window,
 
       /* The old_region area is moved and we queue translations for all expose events
         to it that will be sent before the copy operation */
-      /* TODO: Make queue_translation a vtable call instead of hardcoding this crap */
-      if (!gdk_window_is_offscreen (impl_window)) 
-       _gdk_windowing_window_queue_translation ((GdkWindow *)impl_window, old_region, dx, dy);
+      GDK_WINDOW_IMPL_GET_IFACE (impl_window->impl)->queue_translation ((GdkWindow *)impl_window,
+                                                                       old_region, dx, dy);
       
       /* convert from parent coords to impl */
       gdk_region_offset (copy_area, private->abs_x - private->x, private->abs_y - private->y);
@@ -5732,15 +5731,13 @@ gdk_window_scroll (GdkWindow *window,
   /* Get window clip and convert to real window coords, this
      area is moved and we queue translations for all expose events
      to it that will be sent before the copy operation */
-  /* TODO: Make queue_translation a vtable call instead of hardcoding this crap */
-  if (!gdk_window_is_offscreen (impl_window))
-    {
-      source_area = gdk_region_copy (private->clip_region);
-      /* convert from window coords to real parent */
-      gdk_region_offset (source_area, private->abs_x, private->abs_y);
-      _gdk_windowing_window_queue_translation ((GdkWindow *)impl_window, source_area, dx, dy);
-      gdk_region_destroy (source_area);
-    }
+
+  source_area = gdk_region_copy (private->clip_region);
+  /* convert from window coords to real parent */
+  gdk_region_offset (source_area, private->abs_x, private->abs_y);
+  GDK_WINDOW_IMPL_GET_IFACE (impl_window->impl)->queue_translation ((GdkWindow *)impl_window,
+                                                                   source_area, dx, dy);
+  gdk_region_destroy (source_area);
   
   /* convert from window coords to impl */
   gdk_region_offset (copy_area, private->abs_x, private->abs_y);
@@ -5809,13 +5806,10 @@ gdk_window_move_region (GdkWindow       *window,
   gdk_window_invalidate_region (window, nocopy_area, FALSE);
   gdk_region_destroy (nocopy_area);
 
-  /* TODO: Make queue_translation a vtable call instead of hardcoding this crap */
-  if (!gdk_window_is_offscreen (impl_window))
-    {
-      gdk_region_offset (source_area, private->abs_x, private->abs_y);
-      _gdk_windowing_window_queue_translation ((GdkWindow *)impl_window, source_area, dx, dy);
-    }
-
+  gdk_region_offset (source_area, private->abs_x, private->abs_y);
+  GDK_WINDOW_IMPL_GET_IFACE (impl_window->impl)->queue_translation ((GdkWindow *)impl_window,
+                                                                   source_area, dx, dy);
+  
   /* convert from window coords to impl */
   gdk_region_offset (copy_area, private->abs_x, private->abs_y);
   
index 3509d87facd5b3494c893a7c060fc0ae770b1d46..ad1f6206e3d7a59fdf624875be03c7f0d3d0f0ac 100644 (file)
@@ -108,6 +108,11 @@ struct _GdkWindowImplIface
    */
   gboolean     (* queue_antiexpose)     (GdkWindow       *window,
                                         GdkRegion       *update_area);
+  void         (* queue_translation)    (GdkWindow       *window,
+                                        GdkRegion       *area,
+                                        gint            dx,
+                                        gint            dy);
+  
 };
 
 /* Interface Functions */
index 47f210bbcfcde2e21acc326d5bda8df96e6353b9..b88d4eecd354ff3f415f4e40e5de5c775b2ff1f3 100644 (file)
@@ -357,10 +357,10 @@ gdk_window_queue (GdkWindow          *window,
 }
 
 void
-_gdk_windowing_window_queue_translation (GdkWindow *window,
-                                        GdkRegion *area,
-                                        gint       dx,
-                                        gint       dy)
+_gdk_x11_window_queue_translation (GdkWindow *window,
+                                  GdkRegion *area,
+                                  gint       dx,
+                                  gint       dy)
 {
   GdkWindowQueueItem *item = g_new (GdkWindowQueueItem, 1);
   item->type = GDK_WINDOW_QUEUE_TRANSLATE;
index ad1dfca7db88889fcb82c92542c4d2d20957780d..e1c4666f854ff98d8aa559d39c68a0370deb8bf6 100644 (file)
@@ -127,9 +127,12 @@ void _gdk_window_process_expose    (GdkWindow     *window,
                                     gulong         serial,
                                     GdkRectangle  *area);
 
-gboolean _gdk_x11_window_queue_antiexpose (GdkWindow *window,
-                                          GdkRegion *area);
-
+gboolean _gdk_x11_window_queue_antiexpose  (GdkWindow *window,
+                                           GdkRegion *area);
+void     _gdk_x11_window_queue_translation (GdkWindow *window,
+                                           GdkRegion *area,
+                                           gint       dx,
+                                           gint       dy);
 
 void     _gdk_selection_window_destroyed   (GdkWindow            *window);
 gboolean _gdk_selection_filter_clear_event (XSelectionClearEvent *event);
index 86d7586807c4a513c615866daed8d3f6144c400b..3b6d56300cfd8679116202f509d5970949484a99 100644 (file)
@@ -5925,6 +5925,7 @@ gdk_window_impl_iface_init (GdkWindowImplIface *iface)
   iface->merge_child_shapes = gdk_window_x11_merge_child_shapes;
   iface->set_static_gravities = gdk_window_x11_set_static_gravities;
   iface->queue_antiexpose = _gdk_x11_window_queue_antiexpose;
+  iface->queue_translation = _gdk_x11_window_queue_translation;
 }
 
 #define __GDK_WINDOW_X11_C__