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);