diff options
author | Marco Pesenti Gritti <marco@it.gnome.org> | 2003-04-30 03:08:25 +0800 |
---|---|---|
committer | Marco Pesenti Gritti <mpeseng@src.gnome.org> | 2003-04-30 03:08:25 +0800 |
commit | b4df6c7d7c84610ecb9808103f7e411d75dfbae2 (patch) | |
tree | d3b4707e9e730034e26429a314c6916281a39e9a /src | |
parent | db1b85b940e4ea707c0fadda76ba79ddec8f697b (diff) | |
download | gsoc2013-epiphany-b4df6c7d7c84610ecb9808103f7e411d75dfbae2.tar gsoc2013-epiphany-b4df6c7d7c84610ecb9808103f7e411d75dfbae2.tar.gz gsoc2013-epiphany-b4df6c7d7c84610ecb9808103f7e411d75dfbae2.tar.bz2 gsoc2013-epiphany-b4df6c7d7c84610ecb9808103f7e411d75dfbae2.tar.lz gsoc2013-epiphany-b4df6c7d7c84610ecb9808103f7e411d75dfbae2.tar.xz gsoc2013-epiphany-b4df6c7d7c84610ecb9808103f7e411d75dfbae2.tar.zst gsoc2013-epiphany-b4df6c7d7c84610ecb9808103f7e411d75dfbae2.zip |
We dont need a _remove api, unrefing the node will work better. Try to
2003-04-29 Marco Pesenti Gritti <marco@it.gnome.org>
* embed/ephy-history.c: (remove_obsolete_pages),
(pages_removed_cb), (ephy_history_get_last_page):
* embed/ephy-history.h:
We dont need a _remove api, unrefing the node will work
better.
Try to remove the host when it's empty. It still doesnt work
properly, prolly EphyNode bug.
* src/bookmarks/ephy-bookmark-properties.c:
(ephy_bookmark_properties_get_node):
* src/bookmarks/ephy-bookmark-properties.h:
* src/bookmarks/ephy-bookmarks-editor.c: (prop_dialog_destroy_cb),
(show_properties_dialog), (cmd_bookmark_properties),
(ephy_bookmarks_editor_finalize), (ephy_bookmarks_editor_init):
Do not open more than one dialog per node, just present it.
Picky picky Dave.
* src/ephy-automation.c: (impl_ephy_automation_loadurl):
* src/ephy-shell.c: (ephy_shell_new_tab):
Ever present the window when opening windows through automation.
Diffstat (limited to 'src')
-rw-r--r-- | src/bookmarks/ephy-bookmark-properties.c | 7 | ||||
-rw-r--r-- | src/bookmarks/ephy-bookmark-properties.h | 2 | ||||
-rw-r--r-- | src/bookmarks/ephy-bookmarks-editor.c | 37 | ||||
-rw-r--r-- | src/ephy-automation.c | 6 | ||||
-rw-r--r-- | src/ephy-shell.c | 12 |
5 files changed, 57 insertions, 7 deletions
diff --git a/src/bookmarks/ephy-bookmark-properties.c b/src/bookmarks/ephy-bookmark-properties.c index a82a5e727..38bcbe96f 100644 --- a/src/bookmarks/ephy-bookmark-properties.c +++ b/src/bookmarks/ephy-bookmark-properties.c @@ -458,3 +458,10 @@ ephy_bookmark_properties_new (EphyBookmarks *bookmarks, } return GTK_WIDGET (editor); } + +EphyNode * +ephy_bookmark_properties_get_node (EphyBookmarkProperties *properties) +{ + return properties->priv->bookmark; +} + diff --git a/src/bookmarks/ephy-bookmark-properties.h b/src/bookmarks/ephy-bookmark-properties.h index cd7c23a2f..fad54df5b 100644 --- a/src/bookmarks/ephy-bookmark-properties.h +++ b/src/bookmarks/ephy-bookmark-properties.h @@ -54,6 +54,8 @@ GtkWidget *ephy_bookmark_properties_new (EphyBookmarks *bookmark EphyNode *bookmark, GtkWindow *parent_window); +EphyNode *ephy_bookmark_properties_get_node (EphyBookmarkProperties *properties); + G_END_DECLS #endif /* EPHY_BOOKMARK_PROPERTIES_H */ diff --git a/src/bookmarks/ephy-bookmarks-editor.c b/src/bookmarks/ephy-bookmarks-editor.c index d314ab660..8747bdcfe 100644 --- a/src/bookmarks/ephy-bookmarks-editor.c +++ b/src/bookmarks/ephy-bookmarks-editor.c @@ -126,6 +126,7 @@ struct EphyBookmarksEditorPrivate EggActionGroup *action_group; int priority_col; EphyToolbarsModel *tb_model; + GHashTable *props_dialogs; }; enum @@ -407,10 +408,37 @@ cmd_delete (EggAction *action, } static void +prop_dialog_destroy_cb (GtkWidget *dialog, EphyBookmarksEditor *editor) +{ + EphyNode *node; + + node = ephy_bookmark_properties_get_node (EPHY_BOOKMARK_PROPERTIES (dialog)); + g_hash_table_remove (editor->priv->props_dialogs, node); +} + +static void +show_properties_dialog (EphyBookmarksEditor *editor, EphyNode *node) +{ + GtkWidget *dialog; + + dialog = g_hash_table_lookup (editor->priv->props_dialogs, node); + + if (!dialog) + { + dialog = ephy_bookmark_properties_new + (editor->priv->bookmarks, node, GTK_WINDOW (editor)); + g_signal_connect (dialog, "destroy", + G_CALLBACK (prop_dialog_destroy_cb), editor); + g_hash_table_insert (editor->priv->props_dialogs, node, dialog); + } + + gtk_window_present (GTK_WINDOW (dialog)); +} + +static void cmd_bookmark_properties (EggAction *action, EphyBookmarksEditor *editor) { - GtkWidget *dialog; GList *selection; GList *l; @@ -419,8 +447,7 @@ cmd_bookmark_properties (EggAction *action, for (l = selection; l; l = l->next) { EphyNode *node = EPHY_NODE (l->data); - dialog = ephy_bookmark_properties_new (editor->priv->bookmarks, node, GTK_WINDOW (editor)); - gtk_widget_show (GTK_WIDGET (dialog)); + show_properties_dialog (editor, node); } g_list_free (selection); @@ -582,6 +609,8 @@ ephy_bookmarks_editor_finalize (GObject *object) (gpointer *)&editor->priv->window); } + g_hash_table_destroy (editor->priv->props_dialogs); + g_free (editor->priv); G_OBJECT_CLASS (parent_class)->finalize (object); @@ -1348,6 +1377,8 @@ ephy_bookmarks_editor_init (EphyBookmarksEditor *editor) { editor->priv = g_new0 (EphyBookmarksEditorPrivate, 1); + editor->priv->props_dialogs = g_hash_table_new (g_direct_hash, + g_direct_equal); editor->priv->tb_model = ephy_shell_get_toolbars_model (ephy_shell); g_signal_connect (editor->priv->tb_model, "item_added", diff --git a/src/ephy-automation.c b/src/ephy-automation.c index 166ca245d..93573e924 100644 --- a/src/ephy-automation.c +++ b/src/ephy-automation.c @@ -90,7 +90,7 @@ impl_ephy_automation_loadurl (PortableServer_Servant _servant, const CORBA_boolean raise, CORBA_Environment * ev) { - EphyNewTabFlags flags = 0; + EphyNewTabFlags flags; const char *load_page = NULL; EphyWindow *window; Session *session; @@ -115,9 +115,11 @@ impl_ephy_automation_loadurl (PortableServer_Servant _servant, return; } + flags = EPHY_NEW_TAB_RAISE_WINDOW; + if (*url == '\0') { - flags = EPHY_NEW_TAB_HOMEPAGE; + flags |= EPHY_NEW_TAB_HOMEPAGE; } else { diff --git a/src/ephy-shell.c b/src/ephy-shell.c index 04ac7eb6e..51b53c7d6 100644 --- a/src/ephy-shell.c +++ b/src/ephy-shell.c @@ -521,14 +521,22 @@ ephy_shell_new_tab (EphyShell *shell, { grouped = TRUE; } - + tab = ephy_tab_new (); embed = ephy_tab_get_embed (tab); gtk_widget_show (GTK_WIDGET(embed)); ephy_window_add_tab (window, tab, grouped, jump_to); - gtk_widget_show (GTK_WIDGET(window)); + + if (flags & EPHY_NEW_TAB_RAISE_WINDOW) + { + gtk_window_present (GTK_WINDOW(window)); + } + else + { + gtk_widget_show (GTK_WIDGET(window)); + } if (flags & EPHY_NEW_TAB_HOMEPAGE) { |