[maemo-commits] [maemo-commits] r14357 - in projects/haf/trunk/gtk+: . gtk

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Mon Oct 8 17:12:29 EEST 2007
Author: xan
Date: 2007-10-08 17:12:26 +0300 (Mon, 08 Oct 2007)
New Revision: 14357

Modified:
   projects/haf/trunk/gtk+/ChangeLog
   projects/haf/trunk/gtk+/gtk/gtkcontainer.c
Log:
007-10-08  Xan Lopez  <xan.lopez at nokia.com>

	Patch by Tommi.

	* gtk/gtkcontainer.c: When updating the adjustments as a result of
	container resize (resize_update=TRUE) force the focused widget
	visible only if it is smaller than the viewport. Otherwise the
	updates starts to oscillate between two values (possibly
	HildonScrollArea is causing that.) That should be enough for vkb
	resized dialogs.

	Fixes: NB#71902


Modified: projects/haf/trunk/gtk+/ChangeLog
===================================================================
--- projects/haf/trunk/gtk+/ChangeLog	2007-10-08 13:39:10 UTC (rev 14356)
+++ projects/haf/trunk/gtk+/ChangeLog	2007-10-08 14:12:26 UTC (rev 14357)
@@ -1,14 +1,28 @@
 2007-10-08  Xan Lopez  <xan.lopez at nokia.com>
 
 	Patch by Tommi.
+	
+	* gtk/gtkcontainer.c: When updating the adjustments as a result of
+	container resize (resize_update=TRUE) force the focused widget
+	visible only if it is smaller than the viewport. Otherwise the
+	updates starts to oscillate between two values (possibly
+	HildonScrollArea is causing that.) That should be enough for vkb
+	resized dialogs.
 
-	* gtk/gtktreeview.c (gtk_tree_view_row_deleted): stop rubberbanding
-	when a row is deleted. It avoids certain crashers when rows inside the
-	selection are deleted and gtk_tree_view_stop_rubber_band is then called.
+	Fixes: NB#71902
+	
+2007-10-08  Xan Lopez  <xan.lopez at nokia.com>
 
-	The correct fix would probably be to correctly maintain the state of
-	the rubber band data on row_delete.
+	Patch by Tommi.
 
+	* gtk/gtktreeview.c (gtk_tree_view_row_deleted): stop
+	rubberbanding when a row is deleted. It avoids certain crashers
+	when rows inside the selection are deleted and
+	gtk_tree_view_stop_rubber_band is then called.
+
+	The correct fix would probably be to correctly maintain the state
+	of the rubber band data on row_delete.
+
 	Fixes: NB#71834
 
 2007-10-04  Xan Lopez  <xan.lopez at nokia.com>

Modified: projects/haf/trunk/gtk+/gtk/gtkcontainer.c
===================================================================
--- projects/haf/trunk/gtk+/gtk/gtkcontainer.c	2007-10-08 13:39:10 UTC (rev 14356)
+++ projects/haf/trunk/gtk+/gtk/gtkcontainer.c	2007-10-08 14:12:26 UTC (rev 14357)
@@ -1319,7 +1319,7 @@
   size_allocated_containers = g_slist_prepend (size_allocated_containers, container);
 }
 
-static void container_scroll_focus_adjustments (GtkContainer *container);
+static void container_scroll_focus_adjustments (GtkContainer *container, gboolean resize_update);
 #endif
 
 static gboolean
@@ -1377,7 +1377,7 @@
                 while (focus)
                   {
                     /* adjust all focus widget parents that could possibly scroll */
-                    container_scroll_focus_adjustments (GTK_CONTAINER (focus));
+                    container_scroll_focus_adjustments (GTK_CONTAINER (focus), TRUE);
                     focus = focus->parent;
                   }
               }
@@ -1746,11 +1746,11 @@
     }
 
 #ifdef MAEMO_CHANGES
-  container_scroll_focus_adjustments (container);
+  container_scroll_focus_adjustments (container, FALSE);
 }
 
 static void
-container_scroll_focus_adjustments (GtkContainer *container)
+container_scroll_focus_adjustments (GtkContainer *container, gboolean resize_update)
 {
 #endif
   /* check for h/v adjustments
@@ -1781,10 +1781,26 @@
 	   y += container->focus_child->allocation.y;
 	  
 	  if (vadj)
-	    gtk_adjustment_clamp_page (vadj, y, y + focus_child->allocation.height);
+	    {
+#ifdef MAEMO_CHANGES
+	      /* When updating the adjustments as a result of container resize
+	       * (resize_update=TRUE) force the focused widget visible only if
+	       * it is smaller than the viewport. Otherwise the updates starts
+	       * to oscillate between two values (possibly HildonScrollArea is
+	       * causing that.) That should be enough for vkb resized dialogs.
+	       */
+	      if (!resize_update || focus_child->allocation.height < vadj->page_size)
+#endif /* MAEMO_CHANGES */
+		gtk_adjustment_clamp_page (vadj, y, y + focus_child->allocation.height);
+	    }
 	  
 	  if (hadj)
-	    gtk_adjustment_clamp_page (hadj, x, x + focus_child->allocation.width);
+	    {
+#ifdef MAEMO_CHANGES
+	      if (!resize_update || focus_child->allocation.width < hadj->page_size)
+#endif /* MAEMO_CHANGES */
+		gtk_adjustment_clamp_page (hadj, x, x + focus_child->allocation.width);
+	    }
 	}
     }
 }


More information about the maemo-commits mailing list