diff options
author | Diego Escalante Urrelo <diegoe@igalia.com> | 2012-01-23 07:41:47 +0800 |
---|---|---|
committer | Diego Escalante Urrelo <diegoe@igalia.com> | 2012-01-24 01:14:10 +0800 |
commit | 7511ee0b55d81858cb62c798854df29b135b517f (patch) | |
tree | aa553ea8babde32a1f096f0d551c79fd12e2c01a /src | |
parent | d626c6f1b880beabd1631f10891562067d287e28 (diff) | |
download | gsoc2013-epiphany-7511ee0b55d81858cb62c798854df29b135b517f.tar.gz gsoc2013-epiphany-7511ee0b55d81858cb62c798854df29b135b517f.tar.zst gsoc2013-epiphany-7511ee0b55d81858cb62c798854df29b135b517f.zip |
ephy-window: sync page actions with is-blank property
Add ::is-blank property to EphyWebView and update EphyWindow to sync
some of the page menu actions with it. There's no point in enabling
save/reload/bookmark/etc on about:blank.
https://bugzilla.gnome.org/show_bug.cgi?id=668105
Diffstat (limited to 'src')
-rw-r--r-- | src/ephy-window.c | 98 |
1 files changed, 97 insertions, 1 deletions
diff --git a/src/ephy-window.c b/src/ephy-window.c index 1b5737a66..9bba5c36b 100644 --- a/src/ephy-window.c +++ b/src/ephy-window.c @@ -420,7 +420,8 @@ enum SENS_FLAG_CONTEXT = 1 << 1, SENS_FLAG_DOCUMENT = 1 << 2, SENS_FLAG_LOADING = 1 << 3, - SENS_FLAG_NAVIGATION = 1 << 4 + SENS_FLAG_NAVIGATION = 1 << 4, + SENS_FLAG_IS_BLANK = 1 << 5 }; static gint @@ -1689,6 +1690,95 @@ sync_tab_navigation (EphyWebView *view, } static void +sync_tab_is_blank (EphyWebView *view, + GParamSpec *pspec, + EphyWindow *window) +{ + EphyWindowPrivate *priv = window->priv; + GtkActionGroup *action_group; + GtkAction *action; + gboolean is_blank = TRUE; + + if (window->priv->closing) return; + + is_blank = ephy_web_view_get_is_blank (view); + action_group = priv->action_group; + + /* Page menu */ + action = gtk_action_group_get_action (action_group, + "FileSaveAs"); + ephy_action_change_sensitivity_flags (action, + SENS_FLAG_IS_BLANK, is_blank); + + action = gtk_action_group_get_action (action_group, + "FileSaveAsApplication"); + ephy_action_change_sensitivity_flags (action, + SENS_FLAG_IS_BLANK, is_blank); + + action = gtk_action_group_get_action (action_group, + "FilePrint"); + ephy_action_change_sensitivity_flags (action, + SENS_FLAG_IS_BLANK, is_blank); + + action = gtk_action_group_get_action (action_group, + "FileSendTo"); + ephy_action_change_sensitivity_flags (action, + SENS_FLAG_IS_BLANK, is_blank); + + action = gtk_action_group_get_action (action_group, + "FileBookmarkPage"); + ephy_action_change_sensitivity_flags (action, + SENS_FLAG_IS_BLANK, is_blank); + + action = gtk_action_group_get_action (action_group, + "EditFind"); + ephy_action_change_sensitivity_flags (action, + SENS_FLAG_IS_BLANK, is_blank); + + action = gtk_action_group_get_action (action_group, + "EditFind"); + ephy_action_change_sensitivity_flags (action, + SENS_FLAG_IS_BLANK, is_blank); + + action = gtk_action_group_get_action (action_group, + "ViewEncoding"); + ephy_action_change_sensitivity_flags (action, + SENS_FLAG_IS_BLANK, is_blank); + + action = gtk_action_group_get_action (action_group, + "ViewZoomIn"); + ephy_action_change_sensitivity_flags (action, + SENS_FLAG_IS_BLANK, is_blank); + + action = gtk_action_group_get_action (action_group, + "ViewZoomOut"); + ephy_action_change_sensitivity_flags (action, + SENS_FLAG_IS_BLANK, is_blank); + + action = gtk_action_group_get_action (action_group, + "ViewPageSource"); + ephy_action_change_sensitivity_flags (action, + SENS_FLAG_IS_BLANK, is_blank); + + /* Page context popup */ + action = gtk_action_group_get_action (priv->popups_action_group, + "ContextBookmarkPage"); + ephy_action_change_sensitivity_flags (action, + SENS_FLAG_IS_BLANK, is_blank); + + action = gtk_action_group_get_action (priv->popups_action_group, + "InspectElement"); + ephy_action_change_sensitivity_flags (action, + SENS_FLAG_IS_BLANK, is_blank); + + /* Toolbar */ + action = gtk_action_group_get_action (priv->toolbar_action_group, + "ViewCombinedStopReload"); + ephy_action_change_sensitivity_flags (action, + SENS_FLAG_IS_BLANK, is_blank); +} + +static void sync_tab_popup_windows (EphyWebView *view, GParamSpec *pspec, EphyWindow *window) @@ -2469,6 +2559,9 @@ ephy_window_set_active_tab (EphyWindow *window, EphyEmbed *new_embed) G_CALLBACK (sync_tab_load_status), window); g_signal_handlers_disconnect_by_func (view, + G_CALLBACK (sync_tab_is_blank), + window); + g_signal_handlers_disconnect_by_func (view, G_CALLBACK (sync_tab_navigation), window); g_signal_handlers_disconnect_by_func (view, @@ -2563,6 +2656,9 @@ ephy_window_set_active_tab (EphyWindow *window, EphyEmbed *new_embed) g_signal_connect_object (view, "notify::navigation", G_CALLBACK (sync_tab_navigation), window, 0); + g_signal_connect_object (view, "notify::is-blank", + G_CALLBACK (sync_tab_is_blank), + window, 0); /* We run our button-press-event after the default * handler to make sure pages have a chance to perform * their own handling - for instance, have their own |