]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkcontainer.c
Replace a lot of idle and timeout calls by the new gdk_threads api.
[~andy/gtk] / gtk / gtkcontainer.c
index 995f904c121b82755cd342fe6f8eb547bd353c10..b7ced4e359d5ef5d8ee482e529b1781d7e43b07c 100644 (file)
@@ -120,7 +120,7 @@ gtk_container_get_type (void)
 
   if (!container_type)
     {
-      static const GTypeInfo container_info =
+      const GTypeInfo container_info =
       {
        sizeof (GtkContainerClass),
        (GBaseInitFunc) gtk_container_base_class_init,
@@ -135,7 +135,7 @@ gtk_container_get_type (void)
       };
 
       container_type =
-       g_type_register_static (GTK_TYPE_WIDGET, "GtkContainer"
+       g_type_register_static (GTK_TYPE_WIDGET, I_("GtkContainer")
                                &container_info, G_TYPE_FLAG_ABSTRACT);
     }
 
@@ -224,7 +224,7 @@ gtk_container_class_init (GtkContainerClass *class)
                                                       GTK_TYPE_WIDGET,
                                                      GTK_PARAM_WRITABLE));
   container_signals[ADD] =
-    g_signal_new ("add",
+    g_signal_new (I_("add"),
                  G_OBJECT_CLASS_TYPE (object_class),
                  G_SIGNAL_RUN_FIRST,
                  G_STRUCT_OFFSET (GtkContainerClass, add),
@@ -233,7 +233,7 @@ gtk_container_class_init (GtkContainerClass *class)
                  G_TYPE_NONE, 1,
                  GTK_TYPE_WIDGET);
   container_signals[REMOVE] =
-    g_signal_new ("remove",
+    g_signal_new (I_("remove"),
                  G_OBJECT_CLASS_TYPE (object_class),
                  G_SIGNAL_RUN_FIRST,
                  G_STRUCT_OFFSET (GtkContainerClass, remove),
@@ -242,7 +242,7 @@ gtk_container_class_init (GtkContainerClass *class)
                  G_TYPE_NONE, 1,
                  GTK_TYPE_WIDGET);
   container_signals[CHECK_RESIZE] =
-    g_signal_new ("check_resize",
+    g_signal_new (I_("check_resize"),
                  G_OBJECT_CLASS_TYPE (object_class),
                  G_SIGNAL_RUN_LAST,
                  G_STRUCT_OFFSET (GtkContainerClass, check_resize),
@@ -250,7 +250,7 @@ gtk_container_class_init (GtkContainerClass *class)
                  _gtk_marshal_VOID__VOID,
                  G_TYPE_NONE, 0);
   container_signals[SET_FOCUS_CHILD] =
-    g_signal_new ("set-focus-child",
+    g_signal_new (I_("set-focus-child"),
                  G_OBJECT_CLASS_TYPE (object_class),
                  G_SIGNAL_RUN_FIRST,
                  G_STRUCT_OFFSET (GtkContainerClass, set_focus_child),
@@ -497,7 +497,6 @@ gtk_container_child_set_valist (GtkContainer *container,
                                const gchar  *first_property_name,
                                va_list       var_args)
 {
-  GObject *object;
   GObjectNotifyQueue *nqueue;
   const gchar *name;
 
@@ -508,7 +507,6 @@ gtk_container_child_set_valist (GtkContainer *container,
   g_object_ref (container);
   g_object_ref (child);
 
-  object = G_OBJECT (container);
   nqueue = g_object_notify_queue_freeze (G_OBJECT (child), _gtk_widget_child_property_notify_context);
   name = first_property_name;
   while (name)
@@ -572,7 +570,6 @@ gtk_container_child_set_property (GtkContainer *container,
                                  const gchar  *property_name,
                                  const GValue *value)
 {
-  GObject *object;
   GObjectNotifyQueue *nqueue;
   GParamSpec *pspec;
 
@@ -585,7 +582,6 @@ gtk_container_child_set_property (GtkContainer *container,
   g_object_ref (container);
   g_object_ref (child);
 
-  object = G_OBJECT (container);
   nqueue = g_object_notify_queue_freeze (G_OBJECT (child), _gtk_widget_child_property_notify_context);
   pspec = g_param_spec_pool_lookup (_gtk_widget_child_property_pool, property_name,
                                    G_OBJECT_TYPE (container), TRUE);
@@ -1092,8 +1088,6 @@ gtk_container_get_resize_container (GtkContainer *container)
 static gboolean
 gtk_container_idle_sizer (gpointer data)
 {
-  GDK_THREADS_ENTER ();
-
   /* we may be invoked with a container_resize_queue of NULL, because
    * queue_resize could have been adding an extra idle function while
    * the queue still got processed. we better just ignore such case
@@ -1116,8 +1110,6 @@ gtk_container_idle_sizer (gpointer data)
 
   gdk_window_process_all_updates ();
 
-  GDK_THREADS_LEAVE ();
-
   return FALSE;
 }
 
@@ -1155,7 +1147,7 @@ _gtk_container_queue_resize (GtkContainer *container)
                {
                  GTK_PRIVATE_SET_FLAG (resize_container, GTK_RESIZE_PENDING);
                  if (container_resize_queue == NULL)
-                   g_idle_add_full (GTK_PRIORITY_RESIZE,
+                   gdk_threads_add_idle_full (GTK_PRIORITY_RESIZE,
                                     gtk_container_idle_sizer,
                                     NULL, NULL);
                  container_resize_queue = g_slist_prepend (container_resize_queue, resize_container);
@@ -1710,10 +1702,8 @@ up_down_compare (gconstpointer a,
   CompareInfo *compare = data;
   gint y1, y2;
 
-  if (!get_allocation_coords (compare->container, (GtkWidget *)a, &allocation1))
-    return 0;
-  if (!get_allocation_coords (compare->container, (GtkWidget *)b, &allocation2))
-    return 0;
+  get_allocation_coords (compare->container, (GtkWidget *)a, &allocation1);
+  get_allocation_coords (compare->container, (GtkWidget *)b, &allocation2);
 
   y1 = allocation1.y + allocation1.height / 2;
   y2 = allocation2.y + allocation2.height / 2;
@@ -1839,10 +1829,8 @@ left_right_compare (gconstpointer a,
   CompareInfo *compare = data;
   gint x1, x2;
 
-  if (!get_allocation_coords (compare->container, (GtkWidget *)a, &allocation1))
-    return 0;
-  if (!get_allocation_coords (compare->container, (GtkWidget *)b, &allocation2))
-    return 0;
+  get_allocation_coords (compare->container, (GtkWidget *)a, &allocation1);
+  get_allocation_coords (compare->container, (GtkWidget *)b, &allocation2);
 
   x1 = allocation1.x + allocation1.width / 2;
   x2 = allocation2.x + allocation2.width / 2;
@@ -1983,19 +1971,26 @@ _gtk_container_focus_sort (GtkContainer     *container,
                           GtkDirectionType  direction,
                           GtkWidget        *old_focus)
 {
-  children = g_list_copy (children);
+  GList *visible_children = NULL;
+
+  while (children)
+    {
+      if (GTK_WIDGET_REALIZED (children->data))
+       visible_children = g_list_prepend (visible_children, children->data);
+      children = children->next;
+    }
   
   switch (direction)
     {
     case GTK_DIR_TAB_FORWARD:
     case GTK_DIR_TAB_BACKWARD:
-      return gtk_container_focus_sort_tab (container, children, direction, old_focus);
+      return gtk_container_focus_sort_tab (container, visible_children, direction, old_focus);
     case GTK_DIR_UP:
     case GTK_DIR_DOWN:
-      return gtk_container_focus_sort_up_down (container, children, direction, old_focus);
+      return gtk_container_focus_sort_up_down (container, visible_children, direction, old_focus);
     case GTK_DIR_LEFT:
     case GTK_DIR_RIGHT:
-      return gtk_container_focus_sort_left_right (container, children, direction, old_focus);
+      return gtk_container_focus_sort_left_right (container, visible_children, direction, old_focus);
     }
 
   g_assert_not_reached ();
@@ -2072,7 +2067,7 @@ chain_widget_destroyed (GtkWidget *widget,
                                         user_data);
   
   g_object_set_data (G_OBJECT (container),
-                     "gtk-container-focus-chain",
+                     I_("gtk-container-focus-chain"),
                      chain);  
 }
 
@@ -2129,7 +2124,7 @@ gtk_container_set_focus_chain (GtkContainer *container,
   chain = g_list_reverse (chain);
   
   g_object_set_data (G_OBJECT (container),
-                     "gtk-container-focus-chain",
+                     I_("gtk-container-focus-chain"),
                      chain);
 }
 
@@ -2188,7 +2183,8 @@ gtk_container_unset_focus_chain (GtkContainer  *container)
       
       container->has_focus_chain = FALSE;
       
-      g_object_set_data (G_OBJECT (container), "gtk-container-focus-chain",
+      g_object_set_data (G_OBJECT (container), 
+                         I_("gtk-container-focus-chain"),
                          NULL);
 
       tmp_list = chain;