aboutsummaryrefslogtreecommitdiffstats
path: root/src/ephy-window.c
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@it.gnome.org>2003-06-06 01:53:51 +0800
committerMarco Pesenti Gritti <mpeseng@src.gnome.org>2003-06-06 01:53:51 +0800
commit686b095ac4f6590ae599b2c7d7d087683d09881f (patch)
treeab24678400af3d1cac56898410b27228879954a5 /src/ephy-window.c
parent4ccc0bb51ea56894f5c8bea291eb16ab1f019acf (diff)
downloadgsoc2013-epiphany-686b095ac4f6590ae599b2c7d7d087683d09881f.tar
gsoc2013-epiphany-686b095ac4f6590ae599b2c7d7d087683d09881f.tar.gz
gsoc2013-epiphany-686b095ac4f6590ae599b2c7d7d087683d09881f.tar.bz2
gsoc2013-epiphany-686b095ac4f6590ae599b2c7d7d087683d09881f.tar.lz
gsoc2013-epiphany-686b095ac4f6590ae599b2c7d7d087683d09881f.tar.xz
gsoc2013-epiphany-686b095ac4f6590ae599b2c7d7d087683d09881f.tar.zst
gsoc2013-epiphany-686b095ac4f6590ae599b2c7d7d087683d09881f.zip
s/ask download/ask for download
2003-06-05 Marco Pesenti Gritti <marco@it.gnome.org> * data/epiphany.schemas.in: s/ask download/ask for download * lib/egg/egg-editable-toolbar.c: (toolbar_changed_cb), (egg_editable_toolbar_set_model): * lib/egg/egg-toolbars-model.c: (egg_toolbars_model_set_flags), (egg_toolbars_model_class_init): * lib/egg/egg-toolbars-model.h: * lib/egg/eggtoolbar.c: (egg_toolbar_internal_insert_element): Update. * src/ephy-toolbars-model.c: (ephy_toolbars_model_set_flag), (ephy_toolbars_model_unset_flag): * src/ephy-toolbars-model.h: Add a way to set/unset a flag on all toolbars. * src/ephy-window.c: (ephy_window_init), (translate_default_chrome), (update_exit_fullscreen_popup_position), (size_changed_cb), (exit_fullscreen_button_clicked_cb), (ephy_window_fullscreen), (ephy_window_unfullscreen), (ephy_window_set_chrome): Implement an exit fullscreen button. Force toolbars style to be icon only.
Diffstat (limited to 'src/ephy-window.c')
-rw-r--r--src/ephy-window.c107
1 files changed, 104 insertions, 3 deletions
diff --git a/src/ephy-window.c b/src/ephy-window.c
index a828b9fc9..69af5e7aa 100644
--- a/src/ephy-window.c
+++ b/src/ephy-window.c
@@ -263,6 +263,7 @@ struct EphyWindowPrivate
GtkWidget *main_vbox;
GtkWidget *menu_dock;
GtkWidget *menubar;
+ GtkWidget *exit_fullscreen_popup;
Toolbar *toolbar;
GtkWidget *statusbar;
EggActionGroup *action_group;
@@ -586,6 +587,7 @@ ephy_window_init (EphyWindow *window)
window->priv->chrome_mask = 0;
window->priv->closing = FALSE;
window->priv->ppview_toolbar = NULL;
+ window->priv->exit_fullscreen_popup = NULL;
/* Setup the window and connect verbs */
setup_window (window);
@@ -714,7 +716,8 @@ translate_default_chrome (EmbedChromeMask *chrome_mask)
EMBED_CHROME_OPENASFULLSCREEN);
/* Load defaults */
- if (eel_gconf_get_boolean (CONF_WINDOWS_SHOW_STATUSBAR))
+ if (eel_gconf_get_boolean (CONF_WINDOWS_SHOW_STATUSBAR) &&
+ !(*chrome_mask & EMBED_CHROME_OPENASFULLSCREEN))
{
*chrome_mask |= EMBED_CHROME_STATUSBARON;
}
@@ -758,6 +761,104 @@ update_layout_toggles (EphyWindow *window)
mask & EMBED_CHROME_OPENASFULLSCREEN);
}
+static void
+update_exit_fullscreen_popup_position (EphyWindow *window)
+{
+ GdkRectangle screen_rect;
+ int popup_height;
+
+ gtk_window_get_size (GTK_WINDOW (window->priv->exit_fullscreen_popup),
+ NULL, &popup_height);
+
+ gdk_screen_get_monitor_geometry (gdk_screen_get_default (),
+ gdk_screen_get_monitor_at_window
+ (gdk_screen_get_default (),
+ GTK_WIDGET (window)->window),
+ &screen_rect);
+
+ gtk_window_move (GTK_WINDOW (window->priv->exit_fullscreen_popup),
+ screen_rect.x, screen_rect.height - popup_height);
+}
+
+static void
+size_changed_cb (GdkScreen *screen, EphyWindow *window)
+{
+ update_exit_fullscreen_popup_position (window);
+}
+
+static void
+exit_fullscreen_button_clicked_cb (GtkWidget *button, EphyWindow *window)
+{
+ EmbedChromeMask mask;
+
+ mask = ephy_window_get_chrome (window);
+
+ mask ^= EMBED_CHROME_OPENASFULLSCREEN;
+ mask |= EMBED_CHROME_DEFAULT;
+
+ ephy_window_set_chrome (window, mask);
+}
+
+static void
+ephy_window_fullscreen (EphyWindow *window)
+{
+ GtkWidget *popup, *button, *icon, *label, *hbox;
+ EphyToolbarsModel *tmodel;
+
+ gtk_window_fullscreen (GTK_WINDOW (window));
+
+ tmodel = ephy_shell_get_toolbars_model (ephy_shell);
+ ephy_toolbars_model_set_flag (tmodel, EGG_TB_MODEL_ICONS_ONLY);
+
+ popup = gtk_window_new (GTK_WINDOW_POPUP);
+ window->priv->exit_fullscreen_popup = popup;
+
+ button = gtk_button_new ();
+ g_signal_connect (button, "clicked",
+ G_CALLBACK (exit_fullscreen_button_clicked_cb),
+ window);
+ gtk_widget_show (button);
+ gtk_container_add (GTK_CONTAINER (popup), button);
+
+ hbox = gtk_hbox_new (FALSE, 2);
+ gtk_widget_show (hbox);
+ gtk_container_add (GTK_CONTAINER (button), hbox);
+
+ icon = gtk_image_new_from_stock (GTK_STOCK_QUIT, GTK_ICON_SIZE_BUTTON);
+ gtk_widget_show (icon);
+ gtk_box_pack_start (GTK_BOX (hbox), icon, FALSE, FALSE, 0);
+
+ label = gtk_label_new (_("Exit Fullscreen"));
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+
+ update_exit_fullscreen_popup_position (window);
+
+ gtk_widget_show (popup);
+
+ g_signal_connect (G_OBJECT (gdk_screen_get_default ()),
+ "size-changed", G_CALLBACK (size_changed_cb),
+ popup);
+}
+
+static void
+ephy_window_unfullscreen (EphyWindow *window)
+{
+ EphyToolbarsModel *tmodel;
+
+ tmodel = ephy_shell_get_toolbars_model (ephy_shell);
+ ephy_toolbars_model_unset_flag (tmodel, EGG_TB_MODEL_ICONS_ONLY);
+
+ g_signal_handlers_disconnect_by_func (G_OBJECT (gdk_screen_get_default ()),
+ G_CALLBACK (size_changed_cb),
+ window);
+
+ gtk_widget_destroy (window->priv->exit_fullscreen_popup);
+ window->priv->exit_fullscreen_popup = NULL;
+
+ gtk_window_unfullscreen (GTK_WINDOW (window));
+}
+
void
ephy_window_set_chrome (EphyWindow *window,
EmbedChromeMask flags)
@@ -812,11 +913,11 @@ ephy_window_set_chrome (EphyWindow *window,
save_window_chrome (window);
if (flags & EMBED_CHROME_OPENASFULLSCREEN)
{
- gtk_window_fullscreen (GTK_WINDOW (window));
+ ephy_window_fullscreen (window);
}
else
{
- gtk_window_unfullscreen (GTK_WINDOW (window));
+ ephy_window_unfullscreen (window);
}
}