diff options
author | Marco Pesenti Gritti <marco@it.gnome.org> | 2003-03-23 07:59:04 +0800 |
---|---|---|
committer | Marco Pesenti Gritti <mpeseng@src.gnome.org> | 2003-03-23 07:59:04 +0800 |
commit | 1cbf7f5f14b162826d5c016d836d8c2243986f58 (patch) | |
tree | 8342dd600cf3714ce92d0f1115914bfd23576955 /src | |
parent | 63135332334125311908d415423cd15602cd6535 (diff) | |
download | gsoc2013-epiphany-1cbf7f5f14b162826d5c016d836d8c2243986f58.tar gsoc2013-epiphany-1cbf7f5f14b162826d5c016d836d8c2243986f58.tar.gz gsoc2013-epiphany-1cbf7f5f14b162826d5c016d836d8c2243986f58.tar.bz2 gsoc2013-epiphany-1cbf7f5f14b162826d5c016d836d8c2243986f58.tar.lz gsoc2013-epiphany-1cbf7f5f14b162826d5c016d836d8c2243986f58.tar.xz gsoc2013-epiphany-1cbf7f5f14b162826d5c016d836d8c2243986f58.tar.zst gsoc2013-epiphany-1cbf7f5f14b162826d5c016d836d8c2243986f58.zip |
Never destroy but hide the bme. Present the window on activate. Allow to
2003-03-23 Marco Pesenti Gritti <marco@it.gnome.org>
* src/bookmarks/ephy-bookmarks-editor.c: (get_target_window),
(cmd_open_bookmarks_in_tabs), (cmd_open_bookmarks_in_browser),
(ephy_bookmarks_editor_finalize),
(ephy_bookmarks_editor_node_activated_cb), (delete_event_cb),
(ephy_bookmarks_editor_construct),
(ephy_bookmarks_editor_set_parent), (ephy_bookmarks_editor_new):
* src/bookmarks/ephy-bookmarks-editor.h:
* src/window-commands.c: (window_cmd_go_bookmarks):
Never destroy but hide the bme.
Present the window on activate.
Allow to put the editor in the background.
Smarter way to choose the window where to load the bookmark.
Diffstat (limited to 'src')
-rw-r--r-- | src/bookmarks/ephy-bookmarks-editor.c | 66 | ||||
-rw-r--r-- | src/bookmarks/ephy-bookmarks-editor.h | 6 | ||||
-rw-r--r-- | src/window-commands.c | 16 |
3 files changed, 71 insertions, 17 deletions
diff --git a/src/bookmarks/ephy-bookmarks-editor.c b/src/bookmarks/ephy-bookmarks-editor.c index bb27fa619..7383b2477 100644 --- a/src/bookmarks/ephy-bookmarks-editor.c +++ b/src/bookmarks/ephy-bookmarks-editor.c @@ -76,6 +76,7 @@ struct EphyBookmarksEditorPrivate EphyNodeFilter *bookmarks_filter; GtkWidget *search_entry; GtkWidget *menu_dock; + GtkWidget *window; EggMenuMerge *ui_merge; EggActionGroup *action_group; }; @@ -140,6 +141,19 @@ cmd_rename_bookmark (EggAction *action, { } +static GtkWidget * +get_target_window (EphyBookmarksEditor *editor) +{ + if (editor->priv->window) + { + return editor->priv->window; + } + else + { + return GTK_WIDGET (ephy_shell_get_active_window (ephy_shell)); + } +} + static void cmd_open_bookmarks_in_tabs (EggAction *action, EphyBookmarksEditor *editor) @@ -148,7 +162,7 @@ cmd_open_bookmarks_in_tabs (EggAction *action, GList *selection; GList *l; - window = EPHY_WINDOW (gtk_window_get_transient_for (GTK_WINDOW (editor))); + window = EPHY_WINDOW (get_target_window (editor)); selection = ephy_node_view_get_selection (editor->priv->bm_view); for (l = selection; l; l = l->next) @@ -177,7 +191,7 @@ cmd_open_bookmarks_in_browser (EggAction *action, GList *selection; GList *l; - window = EPHY_WINDOW (gtk_window_get_transient_for (GTK_WINDOW (editor))); + window = EPHY_WINDOW (get_target_window (editor)); selection = ephy_node_view_get_selection (editor->priv->bm_view); for (l = selection; l; l = l->next) @@ -339,6 +353,13 @@ ephy_bookmarks_editor_finalize (GObject *object) editor->priv->action_group); g_object_unref (editor->priv->ui_merge); + if (editor->priv->window) + { + g_object_remove_weak_pointer + (G_OBJECT(editor->priv->window), + (gpointer *)&editor->priv->window); + } + g_free (editor->priv); G_OBJECT_CLASS (parent_class)->finalize (object); @@ -384,9 +405,10 @@ ephy_bookmarks_editor_node_activated_cb (GtkWidget *view, (node, EPHY_NODE_BMK_PROP_LOCATION); g_return_if_fail (location != NULL); - window = gtk_window_get_transient_for (GTK_WINDOW (editor)); + window = GTK_WINDOW (get_target_window (editor)); g_return_if_fail (IS_EPHY_WINDOW (window)); ephy_window_load_url (EPHY_WINDOW (window), location); + gtk_window_present (GTK_WINDOW (window)); } static void @@ -485,6 +507,14 @@ add_widget (EggMenuMerge *merge, GtkWidget *widget, EphyBookmarksEditor *editor) gtk_widget_show (widget); } +static gboolean +delete_event_cb (EphyBookmarksEditor *editor) +{ + gtk_widget_hide (GTK_WIDGET (editor)); + + return TRUE; +} + static void ephy_bookmarks_editor_construct (EphyBookmarksEditor *editor) { @@ -498,6 +528,9 @@ ephy_bookmarks_editor_construct (EphyBookmarksEditor *editor) EggActionGroup *action_group; int i; + g_signal_connect (editor, "delete_event", + G_CALLBACK (delete_event_cb), NULL); + for (i = 0; i < ephy_bookmark_popup_n_entries; i++) { ephy_bookmark_popup_entries[i].user_data = editor; @@ -600,9 +633,27 @@ ephy_bookmarks_editor_construct (EphyBookmarksEditor *editor) g_free (selected_id_str); } +void +ephy_bookmarks_editor_set_parent (EphyBookmarksEditor *ebe, + GtkWidget *window) +{ + if (ebe->priv->window) + { + g_object_remove_weak_pointer + (G_OBJECT(ebe->priv->window), + (gpointer *)&ebe->priv->window); + } + + ebe->priv->window = window; + + g_object_add_weak_pointer + (G_OBJECT(ebe->priv->window), + (gpointer *)&ebe->priv->window); + +} + GtkWidget * -ephy_bookmarks_editor_new (EphyBookmarks *bookmarks, - GtkWindow *parent) +ephy_bookmarks_editor_new (EphyBookmarks *bookmarks) { EphyBookmarksEditor *editor; @@ -613,11 +664,6 @@ ephy_bookmarks_editor_new (EphyBookmarks *bookmarks, "bookmarks", bookmarks, NULL)); - if (parent) - { - gtk_window_set_transient_for (GTK_WINDOW (editor), parent); - } - ephy_bookmarks_editor_construct (editor); return GTK_WIDGET (editor); diff --git a/src/bookmarks/ephy-bookmarks-editor.h b/src/bookmarks/ephy-bookmarks-editor.h index cb2eeea59..69b671874 100644 --- a/src/bookmarks/ephy-bookmarks-editor.h +++ b/src/bookmarks/ephy-bookmarks-editor.h @@ -51,8 +51,10 @@ typedef struct GType ephy_bookmarks_editor_get_type (void); -GtkWidget *ephy_bookmarks_editor_new (EphyBookmarks *bookmarks, - GtkWindow *parent); +GtkWidget *ephy_bookmarks_editor_new (EphyBookmarks *bookmarks); + +void ephy_bookmarks_editor_set_parent (EphyBookmarksEditor *ebe, + GtkWidget *window); G_END_DECLS diff --git a/src/window-commands.c b/src/window-commands.c index bc793234d..c64761092 100644 --- a/src/window-commands.c +++ b/src/window-commands.c @@ -236,13 +236,19 @@ void window_cmd_go_bookmarks (EggAction *action, EphyWindow *window) { - GtkWidget *dialog; + static GtkWidget *dialog = NULL; EphyBookmarks *bookmarks; - bookmarks = ephy_shell_get_bookmarks (ephy_shell); - g_assert (bookmarks != NULL); - dialog = ephy_bookmarks_editor_new (bookmarks, GTK_WINDOW (window)); - gtk_widget_show (dialog); + if (dialog == NULL) + { + bookmarks = ephy_shell_get_bookmarks (ephy_shell); + g_assert (bookmarks != NULL); + dialog = ephy_bookmarks_editor_new (bookmarks); + } + + ephy_bookmarks_editor_set_parent (EPHY_BOOKMARKS_EDITOR (dialog), + GTK_WIDGET (window)); + gtk_window_present (GTK_WINDOW (dialog)); } void |