gtk+ r19339 - in trunk: . gtk



Author: ebassi
Date: Thu Jan 10 14:27:54 2008
New Revision: 19339
URL: http://svn.gnome.org/viewvc/gtk+?rev=19339&view=rev

Log:
2008-01-10  Emmanuele Bassi  <ebassi gnome org>

	* gtk/gtkrecentchoosermenu.c:
	(idle_populate_func), (idle_populate_clean_up): Fix possible
	recursion by resetting the idle source id. (#507605, William
	Pitcock)

Modified:
   trunk/ChangeLog
   trunk/gtk/gtkrecentchoosermenu.c

Modified: trunk/gtk/gtkrecentchoosermenu.c
==============================================================================
--- trunk/gtk/gtkrecentchoosermenu.c	(original)
+++ trunk/gtk/gtkrecentchoosermenu.c	Thu Jan 10 14:27:54 2008
@@ -926,8 +926,6 @@
   pdata = (MenuPopulateData *) data;
   priv = pdata->menu->priv;
 
-  priv->populate_id = 0;
-
   if (!pdata->items)
     {
       pdata->items = gtk_recent_chooser_get_items (GTK_RECENT_CHOOSER (pdata->menu));
@@ -936,6 +934,7 @@
           /* show the placeholder here */
           gtk_widget_show (pdata->placeholder);
           pdata->displayed_items = 1;
+          priv->populate_id = 0;
 
 	  return FALSE;
 	}
@@ -978,6 +977,8 @@
       g_list_foreach (pdata->items, (GFunc) gtk_recent_info_unref, NULL);
       g_list_free (pdata->items);
 
+      priv->populate_id = 0;
+
       retval = FALSE;
     }
   else
@@ -991,14 +992,17 @@
 {
   MenuPopulateData *pdata = data;
 
-  /* show the placeholder in case no item survived
-   * the filtering process in the idle loop
-   */
-  if (!pdata->displayed_items)
-    gtk_widget_show (pdata->placeholder);
-  g_object_unref (pdata->placeholder);
+  if (pdata->menu->priv->populate_id == 0)
+    {
+      /* show the placeholder in case no item survived
+       * the filtering process in the idle loop
+       */
+      if (!pdata->displayed_items)
+        gtk_widget_show (pdata->placeholder);
+      g_object_unref (pdata->placeholder);
 
-  g_slice_free (MenuPopulateData, data);
+      g_slice_free (MenuPopulateData, data);
+    }
 }
 
 static void



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