diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ephy-window.c | 55 | ||||
-rw-r--r-- | src/ephy-window.h | 2 | ||||
-rw-r--r-- | src/window-commands.c | 22 |
3 files changed, 22 insertions, 57 deletions
diff --git a/src/ephy-window.c b/src/ephy-window.c index 2fda4cf13..1f58e3bb3 100644 --- a/src/ephy-window.c +++ b/src/ephy-window.c @@ -703,32 +703,6 @@ setup_window (EphyWindow *window) } static void -sync_find_dialog (FindDialog *dialog, GParamSpec *spec, EphyWindow *window) -{ - EggActionGroup *action_group; - EggAction *action; - FindNavigationFlags flags; - gboolean can_go_prev = FALSE, can_go_next = FALSE; - - flags = find_dialog_get_navigation_flags (dialog); - - if (flags & FIND_CAN_GO_PREV) - { - can_go_prev = TRUE; - } - if (flags & FIND_CAN_GO_NEXT) - { - can_go_next = TRUE; - } - - action_group = window->priv->action_group; - action = egg_action_group_get_action (action_group, "EditFindPrev"); - g_object_set (action, "sensitive", can_go_prev, NULL); - action = egg_action_group_get_action (action_group, "EditFindNext"); - g_object_set (action, "sensitive", can_go_next, NULL); -} - -static void sync_tab_address (EphyTab *tab, GParamSpec *pspec, EphyWindow *window) { const char *address; @@ -1855,31 +1829,26 @@ ephy_window_notebook_switch_page_cb (GtkNotebook *notebook, update_tabs_menu_sensitivity (window); } -EphyDialog * -ephy_window_get_find_dialog (EphyWindow *window) +void +ephy_window_find (EphyWindow *window) { EphyDialog *dialog; EphyEmbed *embed; - if (window->priv->find_dialog) + if (window->priv->find_dialog == NULL) { - return window->priv->find_dialog; - } - - embed = ephy_window_get_active_embed (window); - g_return_val_if_fail (GTK_IS_WINDOW(window), NULL); - dialog = find_dialog_new_with_parent (GTK_WIDGET(window), - embed); + embed = ephy_window_get_active_embed (window); + g_return_if_fail (GTK_IS_WINDOW(window)); - sync_find_dialog (FIND_DIALOG (dialog), NULL, window); - g_signal_connect_object (dialog, "notify::embed", - G_CALLBACK (sync_find_dialog), window, 0); - g_signal_connect_object (dialog, "notify::navigation", - G_CALLBACK (sync_find_dialog), window, 0); + dialog = find_dialog_new_with_parent (GTK_WIDGET(window), + embed); + window->priv->find_dialog = dialog; - window->priv->find_dialog = dialog; + g_object_add_weak_pointer(G_OBJECT (dialog), + (gpointer *) &window->priv->find_dialog); + } - return dialog; + ephy_dialog_show (window->priv->find_dialog); } static void diff --git a/src/ephy-window.h b/src/ephy-window.h index 092c30020..d1eeb1d20 100644 --- a/src/ephy-window.h +++ b/src/ephy-window.h @@ -112,7 +112,7 @@ Toolbar *ephy_window_get_toolbar (EphyWindow *window); /* Dialogs */ -EphyDialog *ephy_window_get_find_dialog (EphyWindow *window); +void ephy_window_find (EphyWindow *window); void ephy_window_print (EphyWindow *window); diff --git a/src/window-commands.c b/src/window-commands.c index 53b134eef..b53ebc709 100644 --- a/src/window-commands.c +++ b/src/window-commands.c @@ -23,7 +23,6 @@ #include "ephy-shell.h" #include "ephy-debug.h" #include "window-commands.h" -#include "find-dialog.h" #include "print-dialog.h" #include "eel-gconf-extensions.h" #include "ephy-prefs.h" @@ -61,12 +60,7 @@ void window_cmd_edit_find (EggAction *action, EphyWindow *window) { - EphyDialog *dialog; - dialog = ephy_window_get_find_dialog (window); - - g_object_ref (dialog); - - ephy_dialog_show (dialog); + ephy_window_find (window); } void @@ -476,22 +470,24 @@ void window_cmd_edit_find_next (EggAction *action, EphyWindow *window) { - EphyDialog *dialog; + EphyEmbed *embed; - dialog = ephy_window_get_find_dialog (window); + embed = ephy_window_get_active_embed (window); + g_return_if_fail (embed != NULL); - find_dialog_go_next (FIND_DIALOG(dialog), FALSE); + ephy_embed_find_next (embed, FALSE); } void window_cmd_edit_find_prev (EggAction *action, EphyWindow *window) { - EphyDialog *dialog; + EphyEmbed *embed; - dialog = ephy_window_get_find_dialog (window); + embed = ephy_window_get_active_embed (window); + g_return_if_fail (embed != NULL); - find_dialog_go_prev (FIND_DIALOG(dialog), FALSE); + ephy_embed_find_next (embed, TRUE); } void |