diff options
author | Marco Pesenti Gritti <marco@it.gnome.org> | 2003-06-06 01:53:51 +0800 |
---|---|---|
committer | Marco Pesenti Gritti <mpeseng@src.gnome.org> | 2003-06-06 01:53:51 +0800 |
commit | 686b095ac4f6590ae599b2c7d7d087683d09881f (patch) | |
tree | ab24678400af3d1cac56898410b27228879954a5 /src | |
parent | 4ccc0bb51ea56894f5c8bea291eb16ab1f019acf (diff) | |
download | gsoc2013-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')
-rwxr-xr-x | src/ephy-toolbars-model.c | 40 | ||||
-rw-r--r-- | src/ephy-window.c | 107 |
2 files changed, 144 insertions, 3 deletions
diff --git a/src/ephy-toolbars-model.c b/src/ephy-toolbars-model.c index 475de34f7..ca2109c90 100755 --- a/src/ephy-toolbars-model.c +++ b/src/ephy-toolbars-model.c @@ -355,3 +355,43 @@ ephy_toolbars_model_has_bookmark (EphyToolbarsModel *model, return (position != -1); } + +void +ephy_toolbars_model_set_flag (EphyToolbarsModel *model, + EggTbModelFlags flags) +{ + EggToolbarsModel *t = EGG_TOOLBARS_MODEL (model); + int i, n_toolbars; + + n_toolbars = egg_toolbars_model_n_toolbars + (EGG_TOOLBARS_MODEL (model)); + + for (i = 0; i < n_toolbars; i++) + { + EggTbModelFlags old_flags; + + old_flags = egg_toolbars_model_get_flags (t, i); + + egg_toolbars_model_set_flags (t, old_flags | flags, i); + } +} + +void +ephy_toolbars_model_unset_flag (EphyToolbarsModel *model, + EggTbModelFlags flags) +{ + EggToolbarsModel *t = EGG_TOOLBARS_MODEL (model); + int i, n_toolbars; + + n_toolbars = egg_toolbars_model_n_toolbars + (EGG_TOOLBARS_MODEL (model)); + + for (i = 0; i < n_toolbars; i++) + { + EggTbModelFlags old_flags; + + old_flags = egg_toolbars_model_get_flags (t, i); + + egg_toolbars_model_set_flags (t, old_flags ^ flags, i); + } +} 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); } } |