[epiphany] Open homepage in new tab when middle clicking on homepage button
- From: Michael Catanzaro <mcatanzaro src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [epiphany] Open homepage in new tab when middle clicking on homepage button
- Date: Wed, 26 Dec 2018 18:46:39 +0000 (UTC)
commit cf424884672f7883e1afadc7fedaa177944d58f4
Author: Jan-Michael Brummer <jan brummer tabos org>
Date: Sun Dec 23 21:33:26 2018 +0100
Open homepage in new tab when middle clicking on homepage button
Mimic Firefox behaviour and open a new homepage tab and set it as active child.
Fixes: https://gitlab.gnome.org/GNOME/epiphany/issues/368
src/ephy-action-bar-start.c | 25 +++++++++++++++++++++++++
src/ephy-window.c | 1 +
src/window-commands.c | 25 +++++++++++++++++++++++++
src/window-commands.h | 3 +++
4 files changed, 54 insertions(+)
---
diff --git a/src/ephy-action-bar-start.c b/src/ephy-action-bar-start.c
index 1fe13119d..3c83174fb 100644
--- a/src/ephy-action-bar-start.c
+++ b/src/ephy-action-bar-start.c
@@ -378,6 +378,29 @@ navigation_button_release_event_cb (GtkButton *button,
return G_SOURCE_REMOVE;
}
+static gboolean
+homepage_button_release_event_cb (GtkButton *button,
+ GdkEvent *event,
+ gpointer user_data)
+{
+ EphyActionBarStart *action_bar_start = EPHY_ACTION_BAR_START (user_data);
+ GActionGroup *action_group;
+ GAction *action;
+
+ action_group = gtk_widget_get_action_group (gtk_widget_get_ancestor (GTK_WIDGET (action_bar_start),
EPHY_TYPE_WINDOW), "toolbar");
+
+ switch (((GdkEventButton *)event)->button) {
+ case GDK_BUTTON_MIDDLE:
+ action = g_action_map_lookup_action (G_ACTION_MAP (action_group), "homepage-new-tab");
+ g_action_activate (action, NULL);
+ break;
+ default:
+ break;
+ }
+
+ return G_SOURCE_REMOVE;
+}
+
static gboolean
navigation_leave_notify_event_cb (GtkButton *button,
GdkEvent *event,
@@ -459,6 +482,8 @@ ephy_action_bar_start_constructed (GObject *object)
} else {
gtk_widget_set_visible (action_bar_start->homepage_button, FALSE);
}
+ g_signal_connect (action_bar_start->homepage_button, "button-release-event",
+ G_CALLBACK (homepage_button_release_event_cb), action_bar_start);
}
static void
diff --git a/src/ephy-window.c b/src/ephy-window.c
index 6670babcc..9be41ff81 100644
--- a/src/ephy-window.c
+++ b/src/ephy-window.c
@@ -829,6 +829,7 @@ static const GActionEntry toolbar_entries [] = {
{ "navigation-back-new-tab", window_cmd_navigation_new_tab },
{ "navigation-forward", window_cmd_navigation },
{ "navigation-forward-new-tab", window_cmd_navigation_new_tab },
+ { "homepage-new-tab", window_cmd_homepage_new_tab },
{ "stop", window_cmd_stop },
{ "reload", window_cmd_reload },
diff --git a/src/window-commands.c b/src/window-commands.c
index 3b844913e..43da871f4 100644
--- a/src/window-commands.c
+++ b/src/window-commands.c
@@ -2558,3 +2558,28 @@ window_cmd_open_application_manager (GSimpleAction *action,
ephy_web_view_load_url (web_view, "about:applications");
}
+
+void
+window_cmd_homepage_new_tab (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ EphyWindow *window = EPHY_WINDOW (user_data);
+ EphyEmbed *embed;
+ EphyWebView *web_view;
+
+ embed = ephy_embed_container_get_active_child (EPHY_EMBED_CONTAINER (window));
+ g_assert (embed != NULL);
+
+ embed = ephy_shell_new_tab (ephy_shell_get_default (),
+ EPHY_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (embed))),
+ NULL,
+ 0);
+
+ web_view = ephy_embed_get_web_view (embed);
+ ephy_web_view_load_homepage (web_view);
+
+ ephy_embed_container_set_active_child (EPHY_EMBED_CONTAINER (window), embed);
+
+ gtk_widget_grab_focus (GTK_WIDGET (embed));
+}
diff --git a/src/window-commands.h b/src/window-commands.h
index 1ad38c2f4..c06aa39b7 100644
--- a/src/window-commands.h
+++ b/src/window-commands.h
@@ -212,5 +212,8 @@ void window_cmd_toggle_reader_mode (GSimpleAction *action,
void window_cmd_open_application_manager (GSimpleAction *action,
GVariant *parameter,
gpointer user_data);
+void window_cmd_homepage_new_tab (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]