[epiphany/wip/gtkaction-to-gaction: 32/57] Use GAction for the combined stop/reload button
- From: Iulian Radu <iulianradu src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [epiphany/wip/gtkaction-to-gaction: 32/57] Use GAction for the combined stop/reload button
- Date: Mon, 11 Jul 2016 16:32:57 +0000 (UTC)
commit 5dca593964665fa973698f99cb12e998b2b9221f
Author: Iulian Radu <iulian radu67 gmail com>
Date: Tue Jun 28 00:11:27 2016 +0300
Use GAction for the combined stop/reload button
src/Makefile.am | 2 -
src/ephy-combined-stop-reload-action.c | 150 --------------------------------
src/ephy-combined-stop-reload-action.h | 60 -------------
src/ephy-toolbar.c | 42 +++++++---
src/ephy-toolbar.h | 16 ++--
src/ephy-window.c | 108 +++++++++++------------
src/ephy-window.h | 2 +
src/resources/epiphany-ui.xml | 2 -
src/window-commands.c | 138 +++++++++++++++++------------
src/window-commands.h | 13 ++-
10 files changed, 183 insertions(+), 350 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index ce61ce2..095c85d 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -32,8 +32,6 @@ libephymain_la_SOURCES = \
ephy-action-helper.h \
ephy-completion-model.c \
ephy-completion-model.h \
- ephy-combined-stop-reload-action.c \
- ephy-combined-stop-reload-action.h \
ephy-encoding-dialog.c \
ephy-encoding-dialog.h \
ephy-encoding-row.c \
diff --git a/src/ephy-toolbar.c b/src/ephy-toolbar.c
index 7eb1b4c..f19b312 100644
--- a/src/ephy-toolbar.c
+++ b/src/ephy-toolbar.c
@@ -35,6 +35,7 @@
#include "ephy-private.h"
#include "ephy-shell.h"
+#include <glib/gi18n.h>
#include <webkit2/webkit2.h>
enum {
@@ -55,8 +56,9 @@ struct _EphyToolbar {
EphyTitleBox *title_box;
GtkWidget *entry;
GtkWidget *navigation_box;
- GtkWidget *page_menu_button;
GtkWidget *new_tab_button;
+ GtkWidget *combined_stop_reload_button;
+ GtkWidget *page_menu_button;
GtkWidget *downloads_revealer;
GtkWidget *downloads_button;
GtkWidget *downloads_popover;
@@ -545,12 +547,31 @@ navigation_leave_notify_event_cb (GtkButton *button,
return G_SOURCE_REMOVE;
}
+void
+ephy_toolbar_change_combined_stop_reload_state (GSimpleAction *action,
+ GVariant *loading,
+ gpointer user_data)
+{
+ EphyWindow *window = EPHY_WINDOW (user_data);
+ EphyToolbar *toolbar;
+ GtkWidget *image;
+
+ if (g_variant_get_boolean (loading))
+ image = gtk_image_new_from_icon_name ("process-stop-symbolic",
+ GTK_ICON_SIZE_BUTTON);
+ else
+ image = gtk_image_new_from_icon_name ("view-refresh-symbolic",
+ GTK_ICON_SIZE_BUTTON);
+
+ toolbar = EPHY_TOOLBAR (ephy_window_get_toolbar (window));
+ gtk_button_set_image (GTK_BUTTON (toolbar->combined_stop_reload_button),
+ image);
+}
+
static void
ephy_toolbar_constructed (GObject *object)
{
EphyToolbar *toolbar = EPHY_TOOLBAR (object);
- GtkActionGroup *action_group;
- GtkAction *action;
GtkWidget *box, *button;
GtkMenu *menu;
EphyDownloadsManager *downloads_manager;
@@ -616,16 +637,14 @@ ephy_toolbar_constructed (GObject *object)
gtk_header_bar_pack_start (GTK_HEADER_BAR (toolbar), box);
/* Reload/Stop */
- action_group = ephy_window_get_toolbar_action_group (toolbar->window);
-
button = gtk_button_new ();
- /* FIXME: apparently we need an image inside the button for the action
- * icon to appear. */
- gtk_button_set_image (GTK_BUTTON (button), gtk_image_new ());
+ toolbar->combined_stop_reload_button = button;
+ gtk_button_set_image (GTK_BUTTON (button),
+ gtk_image_new_from_icon_name ("view-refresh-symbolic", GTK_ICON_SIZE_BUTTON));
gtk_widget_set_valign (button, GTK_ALIGN_CENTER);
- action = gtk_action_group_get_action (action_group, "ViewCombinedStopReload");
- gtk_activatable_set_related_action (GTK_ACTIVATABLE (button),
- action);
+ gtk_actionable_set_action_name (GTK_ACTIONABLE (button),
+ "toolbar.combined-stop-reload");
+ gtk_widget_show (GTK_WIDGET (button));
gtk_header_bar_pack_start (GTK_HEADER_BAR (toolbar), button);
/* New Tab */
@@ -638,7 +657,6 @@ ephy_toolbar_constructed (GObject *object)
gtk_button_set_label (GTK_BUTTON (button), NULL);
gtk_header_bar_pack_start (GTK_HEADER_BAR (toolbar), button);
-
/* Location bar + Title */
toolbar->title_box = ephy_title_box_new (toolbar->window);
toolbar->entry = ephy_title_box_get_location_entry (toolbar->title_box);
diff --git a/src/ephy-toolbar.h b/src/ephy-toolbar.h
index 6f3a235..53434aa 100644
--- a/src/ephy-toolbar.h
+++ b/src/ephy-toolbar.h
@@ -30,13 +30,17 @@ G_BEGIN_DECLS
G_DECLARE_FINAL_TYPE (EphyToolbar, ephy_toolbar, EPHY, TOOLBAR, GtkHeaderBar)
-GtkWidget *ephy_toolbar_new (EphyWindow *window);
+GtkWidget *ephy_toolbar_new (EphyWindow *window);
-GtkWidget *ephy_toolbar_get_location_entry (EphyToolbar *toolbar);
-EphyTitleBox *ephy_toolbar_get_title_box (EphyToolbar *toolbar);
-GMenu *ephy_toolbar_get_page_menu (EphyToolbar *toolbar);
-GtkWidget * ephy_toolbar_get_page_menu_button (EphyToolbar *toolbar);
-GtkWidget * ephy_toolbar_get_new_tab_button (EphyToolbar *toolbar);
+void ephy_toolbar_change_combined_stop_reload_state (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data);
+
+GtkWidget *ephy_toolbar_get_location_entry (EphyToolbar *toolbar);
+EphyTitleBox *ephy_toolbar_get_title_box (EphyToolbar *toolbar);
+GMenu *ephy_toolbar_get_page_menu (EphyToolbar *toolbar);
+GtkWidget *ephy_toolbar_get_page_menu_button (EphyToolbar *toolbar);
+GtkWidget *ephy_toolbar_get_new_tab_button (EphyToolbar *toolbar);
G_END_DECLS
diff --git a/src/ephy-window.c b/src/ephy-window.c
index 5123362..79c7fe1 100644
--- a/src/ephy-window.c
+++ b/src/ephy-window.c
@@ -23,7 +23,6 @@
#include "ephy-action-helper.h"
#include "ephy-bookmarks-ui.h"
-#include "ephy-combined-stop-reload-action.h"
#include "ephy-debug.h"
#include "ephy-embed-container.h"
#include "ephy-embed-prefs.h"
@@ -94,15 +93,6 @@ static const GtkActionEntry ephy_menu_entries [] = {
{ "EditPreferences", NULL, N_("Pr_eferences"), "<control>e", NULL,
G_CALLBACK (window_cmd_edit_preferences) },
- /* View actions. */
-
- { "ViewStop", NULL, N_("_Stop"), "Escape", NULL,
- G_CALLBACK (window_cmd_view_stop) },
- { "ViewAlwaysStop", NULL, N_("_Stop"), "Escape",
- NULL, G_CALLBACK (window_cmd_view_stop) },
- { "ViewReload", NULL, N_("_Reload"), "<control>R", NULL,
- G_CALLBACK (window_cmd_view_reload) },
-
/* Bookmarks actions. */
{ "FileBookmarkPage", NULL, N_("_Add Bookmark…"), "<control>D", NULL,
@@ -214,11 +204,6 @@ static const struct {
/* FIXME: these are not in any menu for now, so add them here. */
{ GDK_KEY_F11, 0, "ViewFullscreen", FALSE },
- { GDK_KEY_r, GDK_CONTROL_MASK, "ViewReload", FALSE },
- { GDK_KEY_R, GDK_CONTROL_MASK, "ViewReload", FALSE },
- { GDK_KEY_R, GDK_CONTROL_MASK |
- GDK_SHIFT_MASK, "ViewReload", FALSE },
-
/* Tab navigation */
{ GDK_KEY_Page_Up, GDK_CONTROL_MASK, "TabsPrevious", FALSE },
{ GDK_KEY_Page_Down, GDK_CONTROL_MASK, "TabsNext", FALSE },
@@ -230,11 +215,6 @@ static const struct {
{ GDK_KEY_l, GDK_CONTROL_MASK, "GoLocation", FALSE },
{ GDK_KEY_F6, 0, "GoLocation", FALSE },
/* Support all the MSIE tricks as well ;) */
- { GDK_KEY_F5, 0, "ViewReload", FALSE },
- { GDK_KEY_F5, GDK_CONTROL_MASK, "ViewReload", FALSE },
- { GDK_KEY_F5, GDK_SHIFT_MASK, "ViewReload", FALSE },
- { GDK_KEY_F5, GDK_CONTROL_MASK |
- GDK_SHIFT_MASK, "ViewReload", FALSE },
/* These keys are a bit strange: when pressed with no modifiers, they emit
* KP_PageUp/Down Control; when pressed with Control+Shift they are KP_9/3,
* when NumLock is on they are KP_9/3 and with NumLock and Control+Shift
@@ -252,19 +232,16 @@ static const struct {
{ XF86XK_Go, 0, "GoLocation", FALSE },
{ XF86XK_OpenURL, 0, "GoLocation", FALSE },
{ XF86XK_AddFavorite, 0, "FileBookmarkPage", FALSE },
- { XF86XK_Refresh, 0, "ViewReload", FALSE },
- { XF86XK_Reload, 0, "ViewReload", FALSE },
{ XF86XK_Send, 0, "FileSendTo", FALSE },
- { XF86XK_Stop, 0, "ViewStop", FALSE },
/* FIXME: what about ScrollUp, ScrollDown, Menu*, Option, LogOff, Save,.. any others? */
#endif /* HAVE_X11_XF86KEYSYM_H */
};
const struct {
const gchar *action_and_target;
- const gchar *accelerators[5];
+ const gchar *accelerators[9];
} accels [] = {
- /* Window accels */
+ /* Page Menu accels */
{ "win.new-tab", { "<Primary>T", NULL } },
{ "win.open", { "<Primary>O", NULL } },
{ "win.save-as", { "<shift><Primary>S", "<Primary>S", NULL } },
@@ -274,7 +251,6 @@ const struct {
{ "win.copy", { "<Primary>C", NULL } },
{ "win.cut", { "<Primary>X", NULL } },
{ "win.paste", { "<Primary>V", NULL } },
- { "win.select-all", { "<Primary>A", NULL } },
{ "win.zoom-in", { "<Primary>plus", "<Primary>KP_Add", "<Primary>equal", "ZoomIn", NULL } },
{ "win.zoom-out", { "<Primary>minus", "<Primary>KP_Subtract", "ZoomOut", NULL } },
{ "win.zoom-normal", { "<Primary>0", "<Primary>KP_0", NULL } },
@@ -286,6 +262,13 @@ const struct {
{ "win.page-source", { "<Primary>U", NULL } },
{ "win.toggle-inspector", { "<shift><Primary>I", "F12", NULL } },
{ "win.close", { "<Primary>W", NULL } },
+
+ { "win.select-all", { "<Primary>A", NULL } },
+
+ /* Navigation */
+ { "toolbar.stop", { "Escape", "Stop", NULL } },
+ { "toolbar.reload", { "<Primary>R", "<shift><Primary>R", "F5", "<Primary>F5", "<shift>F5",
"<shift><Primary>F5", "Refresh", "Reload", NULL } },
+ { "toolbar.combined-stop-reload", { NULL } }
}, accels_navigation_ltr [] = {
{ "toolbar.navigation-back", { "<alt>Left", "<alt>KP_Left", "KP_4", "Back", NULL } },
{ "toolbar.navigation-forward", { "<alt>Right", "<alt>KP_Right", "KP_6", "Forward", NULL } }
@@ -627,31 +610,31 @@ sync_tab_load_status (EphyWebView *view,
WebKitLoadEvent load_event,
EphyWindow *window)
{
- GtkActionGroup *action_group = window->action_group;
- GtkAction *action;
- GActionGroup *new_action_group;
- GAction *new_action;
+ GActionGroup *action_group;
+ GAction *action;
gboolean loading;
if (window->closing) return;
loading = ephy_web_view_is_loading (view);
- new_action_group = gtk_widget_get_action_group (GTK_WIDGET (window),
- "win");
-
- action = gtk_action_group_get_action (action_group, "ViewStop");
- gtk_action_set_sensitive (action, loading);
+ action_group = gtk_widget_get_action_group (GTK_WIDGET (window), "win");
/* disable print while loading, see bug #116344 */
- new_action = g_action_map_lookup_action (G_ACTION_MAP (new_action_group),
+ action = g_action_map_lookup_action (G_ACTION_MAP (action_group),
"print");
- new_ephy_action_change_sensitivity_flags (G_SIMPLE_ACTION (new_action), SENS_FLAG_LOADING, loading);
+ new_ephy_action_change_sensitivity_flags (G_SIMPLE_ACTION (action),
+ SENS_FLAG_LOADING, loading);
- action = gtk_action_group_get_action (window->toolbar_action_group,
- "ViewCombinedStopReload");
- ephy_combined_stop_reload_action_set_loading (EPHY_COMBINED_STOP_RELOAD_ACTION (action),
- loading);
+ action_group = gtk_widget_get_action_group (GTK_WIDGET (window), "toolbar");
+
+ action = g_action_map_lookup_action (G_ACTION_MAP (action_group),
+ "stop");
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), loading);
+
+ action = g_action_map_lookup_action (G_ACTION_MAP (action_group),
+ "combined-stop-reload");
+ g_action_change_state (action, g_variant_new_boolean (loading));
}
static void
@@ -1038,7 +1021,12 @@ static const GActionEntry ephy_toolbar_entries [] = {
{ "navigation-back", window_cmd_navigation, "s" },
{ "navigation-back-new-tab", window_cmd_navigation_new_tab, "s" },
{ "navigation-forward", window_cmd_navigation, "s" },
- { "navigation-forward-new-tab", window_cmd_navigation_new_tab, "s" }
+ { "navigation-forward-new-tab", window_cmd_navigation_new_tab, "s" },
+
+ { "stop", window_cmd_view_stop },
+ { "reload", window_cmd_view_reload },
+ { "always-stop", window_cmd_view_stop },
+ { "combined-stop-reload", window_cmd_combined_stop_reload, NULL, "false",
ephy_toolbar_change_combined_stop_reload_state }
};
static void
@@ -1096,14 +1084,6 @@ setup_ui_manager (EphyWindow *window)
G_CALLBACK (ephy_link_open), window);
g_object_unref (action);
- action = g_object_new (EPHY_TYPE_COMBINED_STOP_RELOAD_ACTION,
- "name", "ViewCombinedStopReload",
- "loading", FALSE,
- "window", window,
- NULL);
- gtk_action_group_add_action (action_group, action);
- g_object_unref (action);
-
gtk_action_group_set_accel_group (action_group, accel_group);
gtk_ui_manager_insert_action_group (manager, action_group, 0);
window->toolbar_action_group = action_group;
@@ -1173,9 +1153,10 @@ _ephy_window_set_default_actions_sensitive (EphyWindow *window,
flags, set);
/* Toolbar */
- action = gtk_action_group_get_action (window->toolbar_action_group,
- "ViewCombinedStopReload");
- ephy_action_change_sensitivity_flags (action,
+ new_action_group = gtk_widget_get_action_group (GTK_WIDGET (window), "toolbar");
+ new_action = g_action_map_lookup_action (G_ACTION_MAP (new_action_group),
+ "combined-stop-reload");
+ new_ephy_action_change_sensitivity_flags (G_SIMPLE_ACTION (new_action),
flags, set);
}
@@ -1806,8 +1787,8 @@ populate_context_menu (WebKitWebView *web_view,
"navigation-back", window->toolbar);
new_add_action_to_context_menu (context_menu, toolbar_action_group,
"navigation-forward", window->toolbar);
- add_action_to_context_menu (context_menu,
- window->action_group, "ViewReload");
+ new_add_action_to_context_menu (context_menu, toolbar_action_group,
+ "reload", window->toolbar);
webkit_context_menu_append (context_menu,
webkit_context_menu_item_new_separator ());
}
@@ -3086,13 +3067,11 @@ ephy_window_constructor (GType type,
{
GObject *object;
EphyWindow *window;
- EphyToolbar *toolbar;
GtkSettings *settings;
GtkAction *action;
GAction *new_action;
GActionGroup *new_action_group;
GSimpleActionGroup *new_simple_action_group;
- GtkActionGroup *toolbar_action_group;
GError *error = NULL;
guint settings_connection;
GtkCssProvider *css_provider;
@@ -3213,7 +3192,6 @@ ephy_window_constructor (GType type,
"win");
/* Disable actions not needed for popup mode. */
- toolbar_action_group = window->toolbar_action_group;
new_action = g_action_map_lookup_action (G_ACTION_MAP (new_action_group), "new-tab");
new_ephy_action_change_sensitivity_flags (G_SIMPLE_ACTION (new_action),
SENS_FLAG_CHROME,
@@ -3577,6 +3555,20 @@ ephy_window_get_location_controller (EphyWindow *window)
return window->location_controller;
}
+/**
+ * ephy_window_get_toolbar:
+ * @window: an #EphyWindow
+ *
+ * Returns the @window #EphyToolbar
+ *
+ * Returns: (transfer none): the @window #EphyToolbar
+ **/
+GtkWidget *
+ephy_window_get_toolbar (EphyWindow *window)
+{
+ return window->toolbar;
+}
+
typedef struct {
EphyWindow *window;
GCancellable *cancellable;
diff --git a/src/ephy-window.h b/src/ephy-window.h
index 8eb28dc..0279cec 100644
--- a/src/ephy-window.h
+++ b/src/ephy-window.h
@@ -52,6 +52,8 @@ void ephy_window_set_zoom (EphyWindow *window,
void ephy_window_activate_location (EphyWindow *window);
const char *ephy_window_get_location (EphyWindow *window);
+GtkWidget *ephy_window_get_toolbar (EphyWindow *window);
+
gboolean ephy_window_close (EphyWindow *window);
EphyWindowChrome ephy_window_get_chrome (EphyWindow *window);
diff --git a/src/resources/epiphany-ui.xml b/src/resources/epiphany-ui.xml
index 18b7dc6..1341651 100644
--- a/src/resources/epiphany-ui.xml
+++ b/src/resources/epiphany-ui.xml
@@ -16,7 +16,5 @@
</menu>
</popup>
- <accelerator name="AlwaysStopAccel" action="ViewAlwaysStop"/>
<accelerator name="BrowseWithCaretAccel" action="BrowseWithCaret"/>
-
</ui>
diff --git a/src/window-commands.c b/src/window-commands.c
index 4047d68..dd9f098 100644
--- a/src/window-commands.c
+++ b/src/window-commands.c
@@ -140,51 +140,20 @@ window_cmd_navigation_new_tab (GSimpleAction *action,
}
void
-window_cmd_undo_close_tab (GtkAction *action,
- EphyWindow *window)
-{
- ephy_session_undo_close_tab (ephy_shell_get_session (ephy_shell_get_default ()));
-}
-
-void
-window_cmd_file_send_to (GtkAction *action,
- EphyWindow *window)
+window_cmd_view_stop (GSimpleAction *action,
+ GVariant *value,
+ gpointer user_data)
{
+ EphyWindow *window = EPHY_WINDOW (user_data);
EphyEmbed *embed;
- char *command, *subject, *body;
- const char *location, *title;
- GdkScreen *screen;
- GError *error = NULL;
embed = ephy_embed_container_get_active_child
(EPHY_EMBED_CONTAINER (window));
g_return_if_fail (embed != NULL);
- location = ephy_web_view_get_address (ephy_embed_get_web_view (embed));
- title = ephy_embed_get_title (embed);
-
- subject = g_uri_escape_string (title, NULL, TRUE);
- body = g_uri_escape_string (location, NULL, TRUE);
-
- command = g_strconcat ("mailto:",
- "?Subject=", subject,
- "&Body=", body, NULL);
-
- g_free (subject);
- g_free (body);
-
- if (window) {
- screen = gtk_widget_get_screen (GTK_WIDGET (window));
- } else {
- screen = gdk_screen_get_default ();
- }
-
- if (!gtk_show_uri (screen, command, gtk_get_current_event_time (), &error)) {
- g_warning ("Unable to send link by email: %s\n", error->message);
- g_error_free (error);
- }
+ gtk_widget_grab_focus (GTK_WIDGET (embed));
- g_free (command);
+ webkit_web_view_stop_loading (EPHY_GET_WEBKIT_WEB_VIEW_FROM_EMBED (embed));
}
static gboolean
@@ -211,17 +180,13 @@ event_with_shift (void)
}
void
-window_cmd_go_location (GtkAction *action,
- EphyWindow *window)
-{
- ephy_window_activate_location (window);
-}
-
-void
-window_cmd_view_stop (GtkAction *action,
- EphyWindow *window)
+window_cmd_view_reload (GSimpleAction *action,
+ GVariant *value,
+ gpointer user_data)
{
+ EphyWindow *window = EPHY_WINDOW (user_data);
EphyEmbed *embed;
+ WebKitWebView *view;
embed = ephy_embed_container_get_active_child
(EPHY_EMBED_CONTAINER (window));
@@ -229,27 +194,88 @@ window_cmd_view_stop (GtkAction *action,
gtk_widget_grab_focus (GTK_WIDGET (embed));
- webkit_web_view_stop_loading (EPHY_GET_WEBKIT_WEB_VIEW_FROM_EMBED (embed));
+ view = EPHY_GET_WEBKIT_WEB_VIEW_FROM_EMBED (embed);
+ if (event_with_shift ())
+ webkit_web_view_reload_bypass_cache (view);
+ else
+ webkit_web_view_reload (view);
+}
+
+void window_cmd_combined_stop_reload (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ GActionGroup *action_group;
+ GAction *gaction;
+ GVariant *state;
+
+ action_group = gtk_widget_get_action_group (GTK_WIDGET (user_data), "toolbar");
+
+ state = g_action_get_state (G_ACTION (action));
+ /* If loading */
+ if (g_variant_get_boolean (state))
+ gaction = g_action_map_lookup_action (G_ACTION_MAP (action_group), "stop");
+ else
+ gaction = g_action_map_lookup_action (G_ACTION_MAP (action_group), "reload");
+
+ g_action_activate (gaction, NULL);
+
+ g_variant_unref (state);
}
void
-window_cmd_view_reload (GtkAction *action,
- EphyWindow *window)
+window_cmd_undo_close_tab (GtkAction *action,
+ EphyWindow *window)
+{
+ ephy_session_undo_close_tab (ephy_shell_get_session (ephy_shell_get_default ()));
+}
+
+void
+window_cmd_file_send_to (GtkAction *action,
+ EphyWindow *window)
{
EphyEmbed *embed;
- WebKitWebView *view;
+ char *command, *subject, *body;
+ const char *location, *title;
+ GdkScreen *screen;
+ GError *error = NULL;
embed = ephy_embed_container_get_active_child
(EPHY_EMBED_CONTAINER (window));
g_return_if_fail (embed != NULL);
- gtk_widget_grab_focus (GTK_WIDGET (embed));
+ location = ephy_web_view_get_address (ephy_embed_get_web_view (embed));
+ title = ephy_embed_get_title (embed);
- view = EPHY_GET_WEBKIT_WEB_VIEW_FROM_EMBED (embed);
- if (event_with_shift ())
- webkit_web_view_reload_bypass_cache (view);
- else
- webkit_web_view_reload (view);
+ subject = g_uri_escape_string (title, NULL, TRUE);
+ body = g_uri_escape_string (location, NULL, TRUE);
+
+ command = g_strconcat ("mailto:",
+ "?Subject=", subject,
+ "&Body=", body, NULL);
+
+ g_free (subject);
+ g_free (body);
+
+ if (window) {
+ screen = gtk_widget_get_screen (GTK_WIDGET (window));
+ } else {
+ screen = gdk_screen_get_default ();
+ }
+
+ if (!gtk_show_uri (screen, command, gtk_get_current_event_time (), &error)) {
+ g_warning ("Unable to send link by email: %s\n", error->message);
+ g_error_free (error);
+ }
+
+ g_free (command);
+}
+
+void
+window_cmd_go_location (GtkAction *action,
+ EphyWindow *window)
+{
+ ephy_window_activate_location (window);
}
void
diff --git a/src/window-commands.h b/src/window-commands.h
index 463306f..d3c811c 100644
--- a/src/window-commands.h
+++ b/src/window-commands.h
@@ -30,12 +30,17 @@ void window_cmd_navigation (GSimpleAction *action,
void window_cmd_navigation_new_tab (GSimpleAction *action,
GVariant *value,
gpointer user_data);
-void window_cmd_view_stop (GtkAction *action,
- EphyWindow *window);
+void window_cmd_view_stop (GSimpleAction *action,
+ GVariant *value,
+ gpointer user_data);
+void window_cmd_view_reload (GSimpleAction *action,
+ GVariant *value,
+ gpointer user_data);
+void window_cmd_combined_stop_reload (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data);
void window_cmd_go_location (GtkAction *action,
EphyWindow *window);
-void window_cmd_view_reload (GtkAction *action,
- EphyWindow *window);
void window_cmd_file_bookmark_page (GtkAction *action,
EphyWindow *window);
void window_cmd_undo_close_tab (GtkAction *action,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]