Recycle the same dialog.
authorSalvatore Iovene <salvatore@iovene.com>
Sun, 13 Dec 2009 12:55:47 +0000 (14:55 +0200)
committerSalvatore Iovene <salvatore@iovene.com>
Sun, 13 Dec 2009 12:55:47 +0000 (14:55 +0200)
modules/tweakr-desktop.c

index fd6b27a..b012091 100644 (file)
@@ -316,36 +316,38 @@ _edit_bookmarks_clicked (GtkButton *button, TweakrDesktopSection *section)
         GtkWidget *panarea;
         gint ret;
 
-        section->bookmarks_dialog = gtk_dialog_new_with_buttons
-            (_("Edit bookmark labels"),
-             GTK_WINDOW (gtk_widget_get_ancestor
-                         (tweakr_section_get_widget
-                          (TWEAKR_SECTION (section)),
-                          GTK_TYPE_WINDOW)),
-             GTK_DIALOG_MODAL | GTK_DIALOG_NO_SEPARATOR,
-             GTK_STOCK_OK, GTK_RESPONSE_OK,
-             NULL);
-
-        panarea = hildon_pannable_area_new ();
-        section->bookmarks_box = gtk_vbox_new (FALSE, 0);
-        hildon_pannable_area_add_with_viewport
-            (HILDON_PANNABLE_AREA (panarea), section->bookmarks_box);
-        g_object_set (G_OBJECT (panarea), "height-request",
-                      MIN (350, g_slist_length (bookmarks) * 70), NULL);
-
-        g_slist_foreach (bookmarks, (GFunc) _add_bookmark, section);
-
-        gtk_box_pack_start
-            (GTK_BOX (GTK_DIALOG (section->bookmarks_dialog)->vbox),
-             panarea, TRUE, TRUE, 0);
-
+        if (section->bookmarks_dialog == NULL)
+        {
+            section->bookmarks_dialog = gtk_dialog_new_with_buttons
+                (_("Edit bookmark labels"),
+                 GTK_WINDOW (gtk_widget_get_ancestor
+                             (tweakr_section_get_widget
+                              (TWEAKR_SECTION (section)),
+                              GTK_TYPE_WINDOW)),
+                 GTK_DIALOG_MODAL | GTK_DIALOG_NO_SEPARATOR,
+                 GTK_STOCK_OK, GTK_RESPONSE_OK,
+                 NULL);
+
+            panarea = hildon_pannable_area_new ();
+            section->bookmarks_box = gtk_vbox_new (FALSE, 0);
+            hildon_pannable_area_add_with_viewport
+                (HILDON_PANNABLE_AREA (panarea), section->bookmarks_box);
+            g_object_set (G_OBJECT (panarea), "height-request",
+                          MIN (350, g_slist_length (bookmarks) * 70), NULL);
+
+            g_slist_foreach (bookmarks, (GFunc) _add_bookmark, section);
+
+            gtk_box_pack_start
+                (GTK_BOX (GTK_DIALOG (section->bookmarks_dialog)->vbox),
+                 panarea, TRUE, TRUE, 0);
+        }
         gtk_widget_show_all (GTK_DIALOG (section->bookmarks_dialog)->vbox);
         ret = gtk_dialog_run (GTK_DIALOG (section->bookmarks_dialog));
         if (ret == GTK_RESPONSE_OK)
         {
             section->save_bookmarks = TRUE;
         }
-        gtk_widget_destroy (section->bookmarks_dialog);
+        gtk_widget_hide (section->bookmarks_dialog);
 
         g_slist_foreach (bookmarks, (GFunc) g_free, NULL);
         g_slist_free (bookmarks);