[gtk+/extended-layout-jhs: 28/64] Invalidate previously selected widget when choosing another one, to avoid



commit a53e7a0e50e3e91bc14928b0af20187ba0d916e6
Author: Mathias Hasselmann <mathias hasselmann gmx de>
Date:   Sun Jul 1 21:12:13 2007 +0000

    Invalidate previously selected widget when choosing another one, to avoid
    
    2007-07-01  Mathias Hasselmann  <mathias hasselmann gmx de>
    
    	* tests/testextendedlayout.c: Invalidate previously selected
    	widget when choosing another one, to avoid drawing artifacts.
    
    svn path=/branches/extended-layout/; revision=18329

 ChangeLog.gtk-extended-layout |    5 +++++
 tests/testextendedlayout.c    |   37 +++++++++++++++++++++++++------------
 2 files changed, 30 insertions(+), 12 deletions(-)
---
diff --git a/ChangeLog.gtk-extended-layout b/ChangeLog.gtk-extended-layout
index 75c1bd9..aa3f4ad 100644
--- a/ChangeLog.gtk-extended-layout
+++ b/ChangeLog.gtk-extended-layout
@@ -1,5 +1,10 @@
 2007-07-01  Mathias Hasselmann  <mathias hasselmann gmx de>
 
+	* tests/testextendedlayout.c: Invalidate previously selected
+	widget when choosing another one, to avoid drawing artifacts.
+
+2007-07-01  Mathias Hasselmann  <mathias hasselmann gmx de>
+
 	* tests/testextendedlayout.c: Improve drawing of baseline guides.
 
 2007-07-01  Mathias Hasselmann  <mathias hasselmann gmx de>
diff --git a/tests/testextendedlayout.c b/tests/testextendedlayout.c
index cad4907..bfba766 100644
--- a/tests/testextendedlayout.c
+++ b/tests/testextendedlayout.c
@@ -1314,10 +1314,31 @@ update_status (TestSuite *suite,
   g_string_free (status, TRUE);
 }
 
+static void
+queue_redraw (GtkWidget *page, 
+              GtkWidget *child)
+{
+  gint x, y;
+
+  gtk_widget_translate_coordinates (child, page, 0, 0, &x, &y);
+
+  gtk_widget_queue_draw_area (page,
+                              page->allocation.x,
+                              page->allocation.y + y,
+                              page->allocation.width,
+                              child->allocation.height);
+  gtk_widget_queue_draw_area (page,
+                              page->allocation.x + x,
+                              page->allocation.y,
+                              child->allocation.width,
+                              page->allocation.height);
+}
+
 static gboolean           
 watch_pointer_cb (gpointer data)
 {
   TestSuite *suite = data;
+  GtkWidget *prev = suite->current;
   TestCase *test = NULL;
 
   gboolean dirty;
@@ -1369,18 +1390,10 @@ watch_pointer_cb (gpointer data)
     {
       if (suite->current)
         {
-          gtk_widget_translate_coordinates (suite->current, page, 0, 0, &x, &y);
-
-          gtk_widget_queue_draw_area (page,
-                                      page->allocation.x,
-                                      page->allocation.y + y,
-                                      page->allocation.width,
-                                      suite->current->allocation.height);
-          gtk_widget_queue_draw_area (page,
-                                      page->allocation.x + x,
-                                      page->allocation.y,
-                                      suite->current->allocation.width,
-                                      page->allocation.height);
+          if (prev && prev != suite->current)
+            queue_redraw (page, prev);
+
+          queue_redraw (page, suite->current);
         }
       else
         {



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