diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ephy-fullscreen-popup.c | 28 | ||||
-rw-r--r-- | src/ephy-fullscreen-popup.h | 15 | ||||
-rwxr-xr-x | src/ephy-toolbar.c | 16 | ||||
-rw-r--r-- | src/ephy-toolbar.h | 4 | ||||
-rw-r--r-- | src/ephy-window.c | 23 |
5 files changed, 52 insertions, 34 deletions
diff --git a/src/ephy-fullscreen-popup.c b/src/ephy-fullscreen-popup.c index bf6795cc0..b10a0496d 100644 --- a/src/ephy-fullscreen-popup.c +++ b/src/ephy-fullscreen-popup.c @@ -52,8 +52,9 @@ struct _EphyFullscreenPopupPrivate GtkWidget *lock; GtkWidget *lock_ebox; GtkWidget *button; - gboolean spinning; - gboolean show_lock; + guint show_button : 1; + guint spinning : 1; + guint show_lock : 1; }; enum @@ -99,11 +100,14 @@ static void ephy_fullscreen_popup_update_visibility (EphyFullscreenPopup *popup) { EphyFullscreenPopupPrivate *priv = popup->priv; - gboolean show_frame; + gboolean show_frame, show_sep; show_frame = priv->spinning || priv->show_lock; + show_sep = show_frame && priv->show_button; - g_object_set (priv->sep, "visible", show_frame, NULL); + g_object_set (priv->button, "visible", priv->show_button, + "sensitive", priv->show_button, NULL); + g_object_set (priv->sep, "visible", show_sep, NULL); g_object_set (priv->frame, "visible", show_frame, NULL); g_object_set (priv->spinner, "visible", priv->spinning, NULL); g_object_set (priv->lock_ebox, "visible", priv->show_lock, NULL); @@ -171,6 +175,16 @@ ephy_fullscreen_popup_set_window (EphyFullscreenPopup *popup, /* public functions */ void +ephy_fullscreen_popup_set_show_leave (EphyFullscreenPopup *popup, + gboolean show_button) +{ + EphyFullscreenPopupPrivate *priv = popup->priv; + + priv->show_button = show_button; + ephy_fullscreen_popup_update_visibility (popup); +} + +void ephy_fullscreen_popup_set_spinning (EphyFullscreenPopup *popup, gboolean spinning) { @@ -201,7 +215,11 @@ ephy_fullscreen_popup_set_security_state (EphyFullscreenPopup *popup, static void ephy_fullscreen_popup_init (EphyFullscreenPopup *popup) { - popup->priv = EPHY_FULLSCREEN_POPUP_GET_PRIVATE (popup); + EphyFullscreenPopupPrivate *priv; + + priv = popup->priv = EPHY_FULLSCREEN_POPUP_GET_PRIVATE (popup); + + priv->show_button = TRUE; } static GObject * diff --git a/src/ephy-fullscreen-popup.h b/src/ephy-fullscreen-popup.h index 393d31efb..b3ad634e0 100644 --- a/src/ephy-fullscreen-popup.h +++ b/src/ephy-fullscreen-popup.h @@ -27,12 +27,12 @@ G_BEGIN_DECLS -#define EPHY_TYPE_FULLSCREEN_POPUP (ephy_fullscreen_popup_get_type ()) -#define EPHY_FULLSCREEN_POPUP(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EPHY_TYPE_FULLSCREEN_POPUP, EphyFullscreenPopup)) -#define EPHY_FULLSCREEN_POPUP_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EPHY_TYPE_FULLSCREEN_POPUP, EphyFullscreenPopupClass)) -#define EPHY_IS_FULLSCREEN_POPUP(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EPHY_TYPE_FULLSCREEN_POPUP)) -#define EPHY_IS_FULLSCREEN_POPUP_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EPHY_TYPE_FULLSCREEN_POPUP)) -#define EPHY_FULLSCREEN_POPUP_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EPHY_TYPE_FULLSCREEN_POPUP, EphyFullscreenPopupClass)) +#define EPHY_TYPE_FULLSCREEN_POPUP (ephy_fullscreen_popup_get_type ()) +#define EPHY_FULLSCREEN_POPUP(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EPHY_TYPE_FULLSCREEN_POPUP, EphyFullscreenPopup)) +#define EPHY_FULLSCREEN_POPUP_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EPHY_TYPE_FULLSCREEN_POPUP, EphyFullscreenPopupClass)) +#define EPHY_IS_FULLSCREEN_POPUP(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EPHY_TYPE_FULLSCREEN_POPUP)) +#define EPHY_IS_FULLSCREEN_POPUP_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EPHY_TYPE_FULLSCREEN_POPUP)) +#define EPHY_FULLSCREEN_POPUP_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EPHY_TYPE_FULLSCREEN_POPUP, EphyFullscreenPopupClass)) typedef struct _EphyFullscreenPopup EphyFullscreenPopup; typedef struct _EphyFullscreenPopupPrivate EphyFullscreenPopupPrivate; @@ -58,6 +58,9 @@ GType ephy_fullscreen_popup_get_type (void); GtkWidget *ephy_fullscreen_popup_new (EphyWindow *window); +void ephy_fullscreen_popup_set_show_leave (EphyFullscreenPopup *popup, + gboolean show_button); + void ephy_fullscreen_popup_set_spinning (EphyFullscreenPopup *popup, gboolean spinning); diff --git a/src/ephy-toolbar.c b/src/ephy-toolbar.c index 8ece4642a..a92b22a68 100755 --- a/src/ephy-toolbar.c +++ b/src/ephy-toolbar.c @@ -75,7 +75,7 @@ struct _EphyToolbarPrivate gulong set_focus_handler; gboolean show_lock; gboolean lock_visible; - gboolean fullscreen; + gboolean leave_fullscreen_visible; gboolean spinning; }; @@ -119,10 +119,12 @@ static void ephy_toolbar_update_fixed_visibility (EphyToolbar *toolbar) { EphyToolbarPrivate *priv = toolbar->priv; + gboolean show; - g_object_set (priv->sep_item, "visible", priv->fullscreen, NULL); - g_object_set (priv->exit_button, "visible", priv->fullscreen, - "sensitive", priv->fullscreen, NULL); + show = priv->leave_fullscreen_visible; + g_object_set (priv->sep_item, "visible", show, NULL); + g_object_set (priv->exit_button, "visible", show, + "sensitive", show, NULL); } static void @@ -412,12 +414,12 @@ ephy_toolbar_set_favicon (EphyToolbar *toolbar, } void -ephy_toolbar_set_fullscreen_mode (EphyToolbar *toolbar, - gboolean fullscreen) +ephy_toolbar_set_show_leave_fullscreen (EphyToolbar *toolbar, + gboolean show) { EphyToolbarPrivate *priv = toolbar->priv; - priv->fullscreen = fullscreen; + priv->leave_fullscreen_visible = show; ephy_toolbar_update_fixed_visibility (toolbar); } diff --git a/src/ephy-toolbar.h b/src/ephy-toolbar.h index a1dbd205f..a7b90a81d 100644 --- a/src/ephy-toolbar.h +++ b/src/ephy-toolbar.h @@ -67,8 +67,8 @@ EphyToolbar *ephy_toolbar_new (EphyWindow *window); void ephy_toolbar_set_favicon (EphyToolbar *toolbar, const char *icon); -void ephy_toolbar_set_fullscreen_mode (EphyToolbar *toolbar, - gboolean fullscreen); +void ephy_toolbar_set_show_leave_fullscreen (EphyToolbar *toolbar, + gboolean show); void ephy_toolbar_activate_location (EphyToolbar *t); diff --git a/src/ephy-window.c b/src/ephy-window.c index bd97d29e2..9b58668db 100644 --- a/src/ephy-window.c +++ b/src/ephy-window.c @@ -561,18 +561,15 @@ ephy_window_fullscreen (EphyWindow *window) { GtkWidget *popup; EphyTab *tab; + gboolean lockdown_fs; window->priv->fullscreen_mode = TRUE; - sync_chromes_visibility (window); - - if (eel_gconf_get_boolean (CONF_LOCKDOWN_FULLSCREEN)) - { - /* no need to show "exit fullscreen" button */ - return; - } + lockdown_fs = eel_gconf_get_boolean (CONF_LOCKDOWN_FULLSCREEN); popup = ephy_fullscreen_popup_new (window); + ephy_fullscreen_popup_set_show_leave + (EPHY_FULLSCREEN_POPUP (popup), !lockdown_fs); window->priv->fullscreen_popup = popup; g_signal_connect_swapped (popup, "exit-clicked", G_CALLBACK (exit_fullscreen_clicked_cb), window); @@ -582,17 +579,15 @@ ephy_window_fullscreen (EphyWindow *window) sync_tab_load_status (tab, NULL, window); sync_tab_security (tab, NULL, window); - if (get_toolbar_visibility (window) == FALSE) - { - gtk_widget_show (popup); - } - egg_editable_toolbar_set_model (EGG_EDITABLE_TOOLBAR (window->priv->toolbar), EGG_TOOLBARS_MODEL ( ephy_shell_get_toolbars_model (ephy_shell, TRUE))); - ephy_toolbar_set_fullscreen_mode (window->priv->toolbar, TRUE); + ephy_toolbar_set_show_leave_fullscreen (window->priv->toolbar, + !lockdown_fs); + + sync_chromes_visibility (window); } static void @@ -602,7 +597,7 @@ ephy_window_unfullscreen (EphyWindow *window) destroy_fullscreen_popup (window); - ephy_toolbar_set_fullscreen_mode (window->priv->toolbar, FALSE); + ephy_toolbar_set_show_leave_fullscreen (window->priv->toolbar, FALSE); egg_editable_toolbar_set_model (EGG_EDITABLE_TOOLBAR (window->priv->toolbar), |