[gdl] Fixed drawing of preview windows



commit a52cdd74b96ff3e4fe206b98ea9700e19f749056
Author: Johannes Schmid <jhs gnome org>
Date:   Sun Feb 12 14:48:59 2012 +0100

    Fixed drawing of preview windows

 gdl/gdl-dock-master.c |   46 +++++++++++++++++++++++++---------------------
 1 files changed, 25 insertions(+), 21 deletions(-)
---
diff --git a/gdl/gdl-dock-master.c b/gdl/gdl-dock-master.c
index d3fdc9c..616c65b 100644
--- a/gdl/gdl-dock-master.c
+++ b/gdl/gdl-dock-master.c
@@ -452,14 +452,8 @@ gdl_dock_master_drag_end (GdlDockItem *item,
     g_return_if_fail (GDL_DOCK_OBJECT (item) == request->applicant);
     
     /* Erase previously drawn rectangle */
-    if (master->priv->rect_owner)
-    {
-        gdl_dock_xor_rect_hide (master->priv->rect_owner);
-    }
-    if (master->priv->area_window)
-    {
-        gtk_widget_hide (master->priv->area_window);
-    }
+    if (master->priv->rect_drawn)
+        gdl_dock_master_xor_rect (master);    
 
     /* cancel conditions */
     if (cancelled || request->applicant == request->target)
@@ -636,24 +630,34 @@ gdl_dock_master_xor_rect (GdlDockMaster *master)
     
     master->priv->rect_drawn = ~master->priv->rect_drawn;
     
-    if (master->priv->rect_owner) {
-        if (master->priv->area_window)
+    if (master->priv->rect_owner) 
+    {
+        if (master->priv->rect_drawn)
         {
-            gtk_widget_hide (master->priv->area_window);
+            gdl_dock_xor_rect (master->priv->rect_owner,
+                               &master->priv->drag_request->rect);
         }
-        gdl_dock_xor_rect (master->priv->rect_owner,
-                           &master->priv->drag_request->rect);
-        return;
-    }
-    
-    rect = &master->priv->drag_request->rect;
+        else
+        {
+            gdl_dock_xor_rect_hide(master->priv->rect_owner);
+            master->priv->rect_owner = NULL;
+        }
+    }        
+    if (master->priv->rect_drawn && !master->priv->rect_owner)
+    {
+            rect = &master->priv->drag_request->rect;
 
-    if (!master->priv->area_window)
+            if (!master->priv->area_window)
+            {
+                master->priv->area_window = gdl_preview_window_new ();
+            }
+
+            gdl_preview_window_update (GDL_PREVIEW_WINDOW (master->priv->area_window), rect);
+    }
+    else if (master->priv->area_window)
     {
-        master->priv->area_window = gdl_preview_window_new ();
+        gtk_widget_hide (master->priv->area_window);
     }
-
-    gdl_preview_window_update (GDL_PREVIEW_WINDOW (master->priv->area_window), rect);
 }
 
 static void



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