aboutsummaryrefslogtreecommitdiffstats
path: root/src/ephy-window.c
diff options
context:
space:
mode:
authorXan Lopez <xan@igalia.com>2012-01-12 02:21:23 +0800
committerXan Lopez <xan@igalia.com>2012-01-14 04:21:46 +0800
commit042f09bcf84db2ade9aa18f881ac5064aacbf116 (patch)
tree00a2a71a94d286561b5773387e1a7a5afc79a4b6 /src/ephy-window.c
parentade53ab2fdcec609ca42b1277be1f8889bafbaa7 (diff)
downloadgsoc2013-epiphany-042f09bcf84db2ade9aa18f881ac5064aacbf116.tar
gsoc2013-epiphany-042f09bcf84db2ade9aa18f881ac5064aacbf116.tar.gz
gsoc2013-epiphany-042f09bcf84db2ade9aa18f881ac5064aacbf116.tar.bz2
gsoc2013-epiphany-042f09bcf84db2ade9aa18f881ac5064aacbf116.tar.lz
gsoc2013-epiphany-042f09bcf84db2ade9aa18f881ac5064aacbf116.tar.xz
gsoc2013-epiphany-042f09bcf84db2ade9aa18f881ac5064aacbf116.tar.zst
gsoc2013-epiphany-042f09bcf84db2ade9aa18f881ac5064aacbf116.zip
Drop menubar and create an actions menu button in the toolbar
Similar to Chrome's wrench menu, but used only (in the future) for page-related actions. For now we have mechanically moved most stuff there, now we need to start removing them one by one when appropriate.
Diffstat (limited to 'src/ephy-window.c')
-rw-r--r--src/ephy-window.c72
1 files changed, 22 insertions, 50 deletions
diff --git a/src/ephy-window.c b/src/ephy-window.c
index 0b0005f7d..fe27a9b10 100644
--- a/src/ephy-window.c
+++ b/src/ephy-window.c
@@ -48,6 +48,7 @@
#include "ephy-navigation-action.h"
#include "ephy-navigation-history-action.h"
#include "ephy-notebook.h"
+#include "ephy-page-menu-action.h"
#include "ephy-prefs.h"
#include "ephy-settings.h"
#include "ephy-shell.h"
@@ -111,6 +112,7 @@ static const GtkActionEntry ephy_menu_entries [] = {
{ "Tools", NULL, N_("T_ools") },
{ "Toolbar", NULL, N_("_Toolbars") },
{ "PopupAction", NULL, "" },
+ { "PagePopupAction", NULL, "" },
{ "NotebookPopupAction", NULL, "" },
/* File menu */
@@ -774,7 +776,6 @@ static void
sync_chromes_visibility (EphyWindow *window)
{
EphyWindowPrivate *priv = window->priv;
- GtkWidget *menubar;
gboolean show_menubar, show_toolbar, show_tabsbar;
if (priv->closing) return;
@@ -783,10 +784,6 @@ sync_chromes_visibility (EphyWindow *window)
&show_toolbar,
&show_tabsbar);
- menubar = gtk_ui_manager_get_widget (window->priv->manager, "/menubar");
- g_assert (menubar != NULL);
-
- g_object_set (menubar, "visible", show_menubar, NULL);
g_object_set (priv->toolbar, "visible", show_toolbar, NULL);
ephy_notebook_set_show_tabs (EPHY_NOTEBOOK (priv->notebook), show_tabsbar);
@@ -860,18 +857,6 @@ ephy_window_unfullscreen (EphyWindow *window)
sync_chromes_visibility (window);
}
-static void
-menubar_deactivate_cb (GtkWidget *menubar,
- EphyWindow *window)
-{
- g_signal_handlers_disconnect_by_func
- (menubar, G_CALLBACK (menubar_deactivate_cb), window);
-
- gtk_menu_shell_deselect (GTK_MENU_SHELL (menubar));
-
- sync_chromes_visibility (window);
-}
-
static gboolean
scroll_event_cb (GtkWidget *widget,
GdkEventScroll *event,
@@ -896,7 +881,7 @@ ephy_window_key_press_event (GtkWidget *widget,
{
EphyWindow *window = EPHY_WINDOW (widget);
EphyWindowPrivate *priv = window->priv;
- GtkWidget *menubar, *focus_widget;
+ GtkWidget *focus_widget;
gboolean shortcircuit = FALSE, force_chain = FALSE, handled = FALSE;
guint modifier = event->state & gtk_accelerator_get_default_mod_mask ();
guint i;
@@ -978,26 +963,6 @@ ephy_window_key_press_event (GtkWidget *widget,
return GTK_WIDGET_CLASS (ephy_window_parent_class)->key_press_event (widget, event);
}
- /* Show and activate the menubar, if it isn't visible */
- if (priv->menubar_accel_keyval != 0 &&
- event->keyval == priv->menubar_accel_keyval &&
- modifier == priv->menubar_accel_modifier)
- {
- menubar = gtk_ui_manager_get_widget (window->priv->manager, "/menubar");
- g_return_val_if_fail (menubar != NULL , FALSE);
-
- if (!gtk_widget_get_visible (menubar))
- {
- g_signal_connect (menubar, "deactivate",
- G_CALLBACK (menubar_deactivate_cb), window);
-
- gtk_widget_show (menubar);
- gtk_menu_shell_select_first (GTK_MENU_SHELL (menubar), FALSE);
-
- return TRUE;
- }
- }
-
return GTK_WIDGET_CLASS (ephy_window_parent_class)->key_press_event (widget, event);
}
@@ -1290,31 +1255,30 @@ enable_edit_actions_sensitivity (EphyWindow *window)
static void
edit_menu_show_cb (GtkWidget *menu,
- EphyWindow *window)
+ EphyWindow *window)
{
- update_edit_actions_sensitivity (window, FALSE);
+ update_edit_actions_sensitivity (window, FALSE);
}
static void
edit_menu_hide_cb (GtkWidget *menu,
- EphyWindow *window)
+ EphyWindow *window)
{
- enable_edit_actions_sensitivity (window);
+ enable_edit_actions_sensitivity (window);
}
static void
init_menu_updaters (EphyWindow *window)
{
- GtkWidget *edit_menu_item, *edit_menu;
+ GtkWidget *edit_menu;
- edit_menu_item = gtk_ui_manager_get_widget
- (window->priv->manager, "/menubar/EditMenu");
- edit_menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (edit_menu_item));
+ edit_menu = gtk_ui_manager_get_widget
+ (window->priv->manager, "/ui/PagePopup");
- g_signal_connect (edit_menu, "show",
- G_CALLBACK (edit_menu_show_cb), window);
- g_signal_connect (edit_menu, "hide",
- G_CALLBACK (edit_menu_hide_cb), window);
+ g_signal_connect (edit_menu, "show",
+ G_CALLBACK (edit_menu_show_cb), window);
+ g_signal_connect (edit_menu, "hide",
+ G_CALLBACK (edit_menu_hide_cb), window);
}
static EphyWebView*
@@ -1627,6 +1591,14 @@ setup_ui_manager (EphyWindow *window)
gtk_action_group_add_action (action_group, action);
g_object_unref (action);
+ action = g_object_new (EPHY_TYPE_PAGE_MENU_ACTION,
+ "name", "PageMenu",
+ "icon-name", "send-to-symbolic",
+ "window", window,
+ NULL);
+ gtk_action_group_add_action_with_accel (action_group, action, "<alt>E");
+ g_object_unref (action);
+
gtk_ui_manager_insert_action_group (manager, action_group, 0);
window->priv->toolbar_action_group = action_group;
g_object_unref (action_group);