[goocanvas] 2010-07-25 Damon Chaplin <damon gnome org>



commit 7f4cd3063c849ee9b3ae9fa9e8f587bd8793ae98
Author: Damon Chaplin <damon gnome org>
Date:   Sun Jul 25 17:24:07 2010 +0100

    2010-07-25  Damon Chaplin  <damon gnome org>
    
    	    * src/goocanvas.c (goo_canvas_configure_hadjustment)
    	    (goo_canvas_configure_vadjustment): freeze updates until finished,
    	    and fixed bug setting hadjustment page size.
    	    (goo_canvas_focus_in, goo_canvas_focus_out): removed grab_focus()
    	    calls that replaced "GTK_WIDGET_SET/UNSET_FLAGS (widget, GTK_HAS_FOCUS)"
    	    I don't think the macros should have been there anyway.
    
    	    * src/goocanvasatk.c (goo_canvas_item_accessible_get_extents): tidied
    	    up a little - get canvas window once and reuse.

 ChangeLog          |   12 ++++++++++++
 src/goocanvas.c    |   17 +++++++++++------
 src/goocanvasatk.c |   14 ++++++++------
 3 files changed, 31 insertions(+), 12 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 4378491..aebf620 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2010-07-25  Damon Chaplin  <damon gnome org>
+
+	* src/goocanvas.c (goo_canvas_configure_hadjustment)
+	(goo_canvas_configure_vadjustment): freeze updates until finished,
+	and fixed bug setting hadjustment page size.
+	(goo_canvas_focus_in, goo_canvas_focus_out): removed grab_focus()
+	calls that replaced "GTK_WIDGET_SET/UNSET_FLAGS (widget, GTK_HAS_FOCUS)"
+	I don't think the macros should have been there anyway.
+
+	* src/goocanvasatk.c (goo_canvas_item_accessible_get_extents): tidied
+	up a little - get canvas window once and reuse.
+
 2010-07-25  Murray Cumming  <murrayc murrayc com>
 
 	Fix the build with the latest GTK+ 3.0 API.
diff --git a/src/goocanvas.c b/src/goocanvas.c
index 21e6406..1a9f82c 100644
--- a/src/goocanvas.c
+++ b/src/goocanvas.c
@@ -1605,6 +1605,8 @@ goo_canvas_configure_hadjustment (GooCanvas *canvas,
   gdouble page_size;
   GtkAllocation allocation;
 
+  canvas->freeze_count++;
+
   if (gtk_adjustment_get_upper (adj) != window_width)
     {
       gtk_adjustment_set_upper (adj, window_width);
@@ -1616,6 +1618,7 @@ goo_canvas_configure_hadjustment (GooCanvas *canvas,
   if (page_size != allocation.width)
     {
       page_size = allocation.width;
+      gtk_adjustment_set_page_size (adj, page_size);
       gtk_adjustment_set_page_increment (adj, page_size * 0.9);
       gtk_adjustment_set_step_increment (adj, page_size * 0.1);
       changed = TRUE;
@@ -1628,6 +1631,8 @@ goo_canvas_configure_hadjustment (GooCanvas *canvas,
       value_changed = TRUE;
     }
   
+  canvas->freeze_count--;
+
   if (changed)
     gtk_adjustment_changed (adj);
 
@@ -1648,6 +1653,8 @@ goo_canvas_configure_vadjustment (GooCanvas *canvas,
   GtkAllocation allocation;
   gdouble page_size;
 
+  canvas->freeze_count++;
+
   if (gtk_adjustment_get_upper (adj) != window_height)
     {
       gtk_adjustment_set_upper (adj, window_height);
@@ -1658,8 +1665,8 @@ goo_canvas_configure_vadjustment (GooCanvas *canvas,
   page_size = gtk_adjustment_get_page_size (adj);
   if (page_size != allocation.height)
     {
-      gtk_adjustment_set_page_size (adj, allocation.height);
-      page_size = gtk_adjustment_get_page_size (adj);
+      page_size = allocation.height;
+      gtk_adjustment_set_page_size (adj, page_size);
       gtk_adjustment_set_page_increment (adj, page_size * 0.9);
       gtk_adjustment_set_step_increment (adj, page_size * 0.1);
       changed = TRUE;
@@ -1672,6 +1679,8 @@ goo_canvas_configure_vadjustment (GooCanvas *canvas,
       value_changed = TRUE;
     }
   
+  canvas->freeze_count--;
+
   if (changed)
     gtk_adjustment_changed (adj);
 
@@ -3216,8 +3225,6 @@ goo_canvas_focus_in        (GtkWidget      *widget,
 {
   GooCanvas *canvas = GOO_CANVAS (widget);
 
-  gtk_widget_grab_focus (widget);
-
   if (canvas->focused_item)
     return propagate_event (canvas, canvas->focused_item,
 			    "focus_in_event", (GdkEvent*) event);
@@ -3232,8 +3239,6 @@ goo_canvas_focus_out       (GtkWidget      *widget,
 {
   GooCanvas *canvas = GOO_CANVAS (widget);
 
-  gtk_widget_grab_focus (widget);
-
   if (canvas->focused_item)
     return propagate_event (canvas, canvas->focused_item,
 			    "focus_out_event", (GdkEvent*) event);
diff --git a/src/goocanvasatk.c b/src/goocanvasatk.c
index a02348e..565f1bc 100644
--- a/src/goocanvasatk.c
+++ b/src/goocanvasatk.c
@@ -121,7 +121,7 @@ goo_canvas_item_accessible_get_extents (AtkComponent *component,
   gint window_x, window_y;
   gint toplevel_x, toplevel_y;
   GdkRectangle rect;
-  GdkWindow *window;
+  GdkWindow *canvas_window, *window;
 
   g_return_if_fail (GOO_IS_CANVAS_ITEM_ACCESSIBLE (component));
 
@@ -133,9 +133,12 @@ goo_canvas_item_accessible_get_extents (AtkComponent *component,
 
   item = GOO_CANVAS_ITEM (object);
 
-
   canvas = goo_canvas_item_get_canvas (item);
-  if (!canvas || !gtk_widget_get_window (GTK_WIDGET (canvas)))
+  if (!canvas)
+    return;
+
+  canvas_window = gtk_widget_get_window (GTK_WIDGET (canvas));
+  if (!canvas_window)
     return;
 
   goo_canvas_item_accessible_get_item_extents (item, &rect);
@@ -145,14 +148,13 @@ goo_canvas_item_accessible_get_extents (AtkComponent *component,
   if (!goo_canvas_item_accessible_is_item_in_window (item, &rect))
     return;
 
-  gdk_window_get_origin (gtk_widget_get_window (GTK_WIDGET (canvas)),
-			 &window_x, &window_y);
+  gdk_window_get_origin (canvas_window, &window_x, &window_y);
   *x = rect.x + window_x;
   *y = rect.y + window_y;
 
   if (coord_type == ATK_XY_WINDOW)
     {
-      window = gdk_window_get_toplevel (gtk_widget_get_window (GTK_WIDGET (canvas)));
+      window = gdk_window_get_toplevel (canvas_window);
       gdk_window_get_origin (window, &toplevel_x, &toplevel_y);
       *x -= toplevel_x;
       *y -= toplevel_y;



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