summaryrefslogtreecommitdiff
path: root/gdk/directfb
diff options
context:
space:
mode:
authorSven Neumann <sven@gimp.org>2009-02-19 22:31:04 +0000
committerSven Neumann <neo@src.gnome.org>2009-02-19 22:31:04 +0000
commit92c30df34d5206d56f0475334d45c797e9d90064 (patch)
tree4a17600d37cc96fef257b6d9b4506dde5eb2e22a /gdk/directfb
parent69fe31489ccef0764c0856aae88185c84b86188e (diff)
downloadgtk+-92c30df34d5206d56f0475334d45c797e9d90064.tar.gz
looks like being called with negative width and height should be
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. svn path=/trunk/; revision=22384
Diffstat (limited to 'gdk/directfb')
-rw-r--r--gdk/directfb/gdkwindow-directfb.c34
1 files changed, 22 insertions, 12 deletions
diff --git a/gdk/directfb/gdkwindow-directfb.c b/gdk/directfb/gdkwindow-directfb.c
index 0fb6c94cf3..3ca4caa70a 100644
--- a/gdk/directfb/gdkwindow-directfb.c
+++ b/gdk/directfb/gdkwindow-directfb.c
@@ -1334,15 +1334,17 @@ _gdk_directfb_move_resize_child (GdkWindow *window,
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 @@ _gdk_directfb_move_resize_child (GdkWindow *window,
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 @@ gdk_directfb_window_move_resize (GdkWindow *window,
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 @@ gdk_directfb_window_move_resize (GdkWindow *window,
}
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)