aboutsummaryrefslogtreecommitdiffstats
path: root/src/toolbar.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/toolbar.c')
-rwxr-xr-xsrc/toolbar.c77
1 files changed, 49 insertions, 28 deletions
diff --git a/src/toolbar.c b/src/toolbar.c
index 2e2424a12..ed24eb858 100755
--- a/src/toolbar.c
+++ b/src/toolbar.c
@@ -24,7 +24,9 @@
#include "toolbar.h"
#include "ephy-favicon-action.h"
+#include "ephy-link.h"
#include "ephy-go-action.h"
+#include "ephy-home-action.h"
#include "ephy-location-entry.h"
#include "ephy-location-action.h"
#include "ephy-navigation-action.h"
@@ -38,9 +40,10 @@
#include "eel-gconf-extensions.h"
#include "ephy-debug.h"
-#include <string.h>
#include <glib/gi18n.h>
+#include <gtk/gtkstock.h>
#include <gtk/gtkuimanager.h>
+#include <string.h>
static void toolbar_class_init (ToolbarClass *klass);
static void toolbar_init (Toolbar *t);
@@ -88,29 +91,39 @@ struct ToolbarPrivate
GType
toolbar_get_type (void)
{
- static GType type = 0;
+ static GType type = 0;
- if (G_UNLIKELY (type == 0))
- {
- static const GTypeInfo our_info =
- {
- sizeof (ToolbarClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) toolbar_class_init,
- NULL,
- NULL, /* class_data */
- sizeof (Toolbar),
- 0, /* n_preallocs */
- (GInstanceInitFunc) toolbar_init
- };
-
- type = g_type_register_static (EGG_TYPE_EDITABLE_TOOLBAR,
+ if (G_UNLIKELY (type == 0))
+ {
+ static const GTypeInfo our_info =
+ {
+ sizeof (ToolbarClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc) toolbar_class_init,
+ NULL,
+ NULL, /* class_data */
+ sizeof (Toolbar),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) toolbar_init
+ };
+
+ static const GInterfaceInfo link_info =
+ {
+ NULL,
+ NULL,
+ NULL
+ };
+
+ type = g_type_register_static (EGG_TYPE_EDITABLE_TOOLBAR,
"Toolbar",
&our_info, 0);
- }
+ g_type_add_interface_static (type,
+ EPHY_TYPE_LINK,
+ &link_info);
+ }
- return type;
+ return type;
}
static void
@@ -152,12 +165,6 @@ arbitrary_url_notifier (GConfClient *client,
}
static void
-go_location_cb (GtkAction *action, char *location, EphyWindow *window)
-{
- ephy_window_load_url (window, location);
-}
-
-static void
zoom_to_level_cb (GtkAction *action, float zoom, EphyWindow *window)
{
ephy_window_set_zoom (window, zoom);
@@ -355,6 +362,8 @@ toolbar_setup_actions (Toolbar *t)
NULL);
g_signal_connect (action, "activate",
G_CALLBACK (window_cmd_go_up), t->priv->window);
+ g_signal_connect_swapped (action, "open-link",
+ G_CALLBACK (ephy_link_open), t);
gtk_action_group_add_action (t->priv->action_group, action);
g_object_unref (action);
@@ -368,8 +377,8 @@ toolbar_setup_actions (Toolbar *t)
"tooltip", _("Enter a web address to open, or a phrase to search for on the web"),
"visible-overflown", FALSE,
NULL);
- g_signal_connect (action, "go_location",
- G_CALLBACK (go_location_cb), t->priv->window);
+ g_signal_connect_swapped (action, "open-link",
+ G_CALLBACK (ephy_link_open), t);
g_signal_connect (action, "notify::address",
G_CALLBACK (sync_user_input_cb), t);
gtk_action_group_add_action (t->priv->action_group, action);
@@ -408,6 +417,18 @@ toolbar_setup_actions (Toolbar *t)
G_CALLBACK (window_cmd_load_location), t->priv->window);
gtk_action_group_add_action (t->priv->action_group, action);
g_object_unref (action);
+
+ action = g_object_new (EPHY_TYPE_HOME_ACTION,
+ "name", "GoHome",
+ "label", _("_Home"),
+ "stock_id", GTK_STOCK_HOME,
+ "tooltip", _("Go to the home page"),
+ "is_important", TRUE,
+ NULL);
+ g_signal_connect_swapped (action, "open-link",
+ G_CALLBACK (ephy_link_open), t);
+ gtk_action_group_add_action_with_accel (t->priv->action_group, action, "<alt>Home");
+ g_object_unref (action);
}
static void