]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkcontainer.c
GtkColorChooserWidget: deselect swatch before removing palettes
[~andy/gtk] / gtk / gtkcontainer.c
index 938887ea1406a7625a2293364980c95a9df43059..ce16fe4df42e224471754b0886415b08b200e474 100644 (file)
@@ -1362,13 +1362,6 @@ gtk_container_destroy (GtkWidget *widget)
   if (priv->restyle_pending)
     priv->restyle_pending = FALSE;
 
-  if (priv->resize_handler)
-    {
-      g_signal_handler_disconnect (priv->resize_clock, priv->resize_handler);
-      priv->resize_handler = 0;
-      priv->resize_clock = NULL;
-    }
-
   if (priv->focus_child)
     {
       g_object_unref (priv->focus_child);
@@ -1680,13 +1673,12 @@ gtk_container_idle_sizer (GdkFrameClock *clock,
 
   if (!container->priv->restyle_pending && !container->priv->resize_pending)
     {
-      g_signal_handler_disconnect (clock, container->priv->resize_handler);
-      container->priv->resize_handler = 0;
-      container->priv->resize_clock = NULL;
+      _gtk_container_stop_idle_sizer (container);
     }
   else
     {
-      gdk_frame_clock_request_frame (clock);
+      gdk_frame_clock_request_phase (clock,
+                                     GDK_FRAME_CLOCK_PHASE_LAYOUT);
     }
 }
 
@@ -1705,7 +1697,20 @@ gtk_container_start_idle_sizer (GtkContainer *container)
   container->priv->resize_clock = clock;
   container->priv->resize_handler = g_signal_connect (clock, "layout",
                                                      G_CALLBACK (gtk_container_idle_sizer), container);
-  gdk_frame_clock_request_frame (clock);
+  gdk_frame_clock_request_phase (clock,
+                                 GDK_FRAME_CLOCK_PHASE_LAYOUT);
+}
+
+void
+_gtk_container_stop_idle_sizer (GtkContainer *container)
+{
+  if (container->priv->resize_handler == 0)
+    return;
+
+  g_signal_handler_disconnect (container->priv->resize_clock,
+                               container->priv->resize_handler);
+  container->priv->resize_handler = 0;
+  container->priv->resize_clock = NULL;
 }
 
 static void