gtk+ r22384 - in trunk: . gdk/directfb



Author: neo
Date: Thu Feb 19 22:31:04 2009
New Revision: 22384
URL: http://svn.gnome.org/viewvc/gtk+?rev=22384&view=rev

Log:
2009-02-19  Sven Neumann  <sven gimp org>

	* gdk/directfb/gdkwindow-directfb.c
	(gdk_directfb_window_move_resize): looks like being called with
	negative width and height should be interpreted as a move. Fixes
	scrolling and makes popups work to some extent.

	(_gdk_directfb_move_resize_child): formatting.



Modified:
   trunk/ChangeLog
   trunk/gdk/directfb/gdkwindow-directfb.c

Modified: trunk/gdk/directfb/gdkwindow-directfb.c
==============================================================================
--- trunk/gdk/directfb/gdkwindow-directfb.c	(original)
+++ trunk/gdk/directfb/gdkwindow-directfb.c	Thu Feb 19 22:31:04 2009
@@ -1334,15 +1334,17 @@
 
   if (!private->input_only)
     {
-    if (impl->drawable.surface) {
-      GdkDrawableImplDirectFB *dimpl = GDK_DRAWABLE_IMPL_DIRECTFB (private->impl);
-      if(dimpl->cairo_surface) {
-        cairo_surface_destroy(dimpl->cairo_surface);
-        dimpl->cairo_surface= NULL;
-      }
-    impl->drawable.surface->Release (impl->drawable.surface);
-    impl->drawable.surface = NULL;
-  }
+      if (impl->drawable.surface)
+        {
+          if (impl->drawable.cairo_surface)
+            {
+              cairo_surface_destroy (impl->drawable.cairo_surface);
+              impl->drawable.cairo_surface = NULL;
+            }
+
+          impl->drawable.surface->Release (impl->drawable.surface);
+          impl->drawable.surface = NULL;
+        }
 
       parent_impl = GDK_WINDOW_IMPL_DIRECTFB (GDK_WINDOW_OBJECT (private->parent)->impl);
 
@@ -1359,7 +1361,8 @@
   for (list = private->children; list; list = list->next)
     {
       private = GDK_WINDOW_OBJECT (list->data);
-  	  impl  = GDK_WINDOW_IMPL_DIRECTFB (private->impl);
+      impl  = GDK_WINDOW_IMPL_DIRECTFB (private->impl);
+
       _gdk_directfb_move_resize_child (list->data,
                                        private->x, private->y,
                                        impl->drawable.width, impl->drawable.height);
@@ -1427,8 +1430,14 @@
   private = GDK_WINDOW_OBJECT (window);
   impl = GDK_WINDOW_IMPL_DIRECTFB (private->impl);
 
+  if (with_move && (width < 0 && height < 0))
+    {
+      gdk_directfb_window_move (window, x, y);
+      return;
+    }
+
   if (width < 1)
-     width = 1;
+    width = 1;
   if (height < 1)
     height = 1;
 
@@ -1467,7 +1476,8 @@
     }
   else
     {
-      GdkRectangle old = { private->x, private->y, impl->drawable.width, impl->drawable.height };
+      GdkRectangle old = { private->x, private->y,
+                           impl->drawable.width, impl->drawable.height };
       GdkRectangle new = { x, y, width, height };
 
       if (! with_move)



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