diff options
author | Christian Persch <chpe@cvs.gnome.org> | 2004-12-24 08:21:16 +0800 |
---|---|---|
committer | Christian Persch <chpe@src.gnome.org> | 2004-12-24 08:21:16 +0800 |
commit | d127ec47856ee69466b909af12e5f1020a12cb15 (patch) | |
tree | e8c6dcbd55f1b143983b73878a9177883ac352e6 /src/bookmarks/ephy-bookmark-action.c | |
parent | 93079ee8ea5a7a2e89d4842c9c4cad71724a99f4 (diff) | |
download | gsoc2013-epiphany-d127ec47856ee69466b909af12e5f1020a12cb15.tar gsoc2013-epiphany-d127ec47856ee69466b909af12e5f1020a12cb15.tar.gz gsoc2013-epiphany-d127ec47856ee69466b909af12e5f1020a12cb15.tar.bz2 gsoc2013-epiphany-d127ec47856ee69466b909af12e5f1020a12cb15.tar.lz gsoc2013-epiphany-d127ec47856ee69466b909af12e5f1020a12cb15.tar.xz gsoc2013-epiphany-d127ec47856ee69466b909af12e5f1020a12cb15.tar.zst gsoc2013-epiphany-d127ec47856ee69466b909af12e5f1020a12cb15.zip |
A src/ephy-home-action.c: (ephy_home_action_activate),
2004-12-24 Christian Persch <chpe@cvs.gnome.org>
* lib/ephy-marshal.list:
* src/Makefile.am:
* src/bookmarks/ephy-bookmark-action.c:
(ephy_bookmark_action_get_type), (create_tool_item),
(open_in_tab_activate_cb), (open_in_window_activate_cb),
(activate_cb), (connect_proxy), (ephy_bookmark_action_class_init):
* src/bookmarks/ephy-bookmark-action.h:
* src/bookmarks/ephy-bookmarks-menu.c:
(ephy_bookmarks_menu_get_type), (add_action_for_bookmark),
(ephy_bookmarks_menu_class_init):
* src/bookmarks/ephy-bookmarks-menu.h:
* src/bookmarks/ephy-bookmarksbar.c: (ephy_bookmarksbar_get_type),
(ephy_bookmarksbar_action_request):
* src/bookmarks/ephy-favorites-menu.c:
(ephy_favorites_menu_get_type), (ephy_favorites_menu_rebuild):
* src/bookmarks/ephy-favorites-menu.h:
* src/bookmarks/ephy-topic-action.c: (ephy_topic_action_get_type),
(menu_activate_cb), (open_in_tabs_activate_cb),
(ephy_topic_action_class_init):
* src/bookmarks/ephy-topic-action.h:
A src/ephy-home-action.c: (ephy_home_action_activate),
(ephy_home_action_class_init), (ephy_home_action_get_type):
A src/ephy-home-action.h:
A src/ephy-link-action.c: (ephy_link_action_get_type):
A src/ephy-link-action.h:
A src/ephy-link.c: (ephy_link_flags_get_type),
(ephy_link_base_init), (ephy_link_get_type), (ephy_link_open):
A src/ephy-link.h:
* src/ephy-location-action.c: (ephy_location_action_get_type),
(action_activated_cb), (location_url_activate_cb), (connect_proxy),
(disconnect_proxy), (ephy_location_action_class_init):
* src/ephy-location-action.h:
* src/ephy-navigation-action.c: (ephy_navigation_action_get_type),
(activate_back_or_forward_menu_item_cb),
(activate_up_menu_item_cb), (build_back_or_forward_menu),
(build_up_menu):
* src/ephy-navigation-action.h:
* src/ephy-shell.c: (ephy_shell_new_tab):
* src/ephy-window.c: (setup_ui_manager), (open_link_cb),
(ephy_window_init):
* src/toolbar.c: (toolbar_get_type), (toolbar_setup_actions):
* src/window-commands.c:
* src/window-commands.h:
Consolidate link opening in one place by introducing an EphyLink interface
which bookmarks, topics, navigation, location, home, toolbars, bookmarks menu
and favourites menu implement, forwarding the link opening to the window.
Diffstat (limited to 'src/bookmarks/ephy-bookmark-action.c')
-rw-r--r-- | src/bookmarks/ephy-bookmark-action.c | 89 |
1 files changed, 35 insertions, 54 deletions
diff --git a/src/bookmarks/ephy-bookmark-action.c b/src/bookmarks/ephy-bookmark-action.c index 05975cc2c..90883cf36 100644 --- a/src/bookmarks/ephy-bookmark-action.c +++ b/src/bookmarks/ephy-bookmark-action.c @@ -21,19 +21,34 @@ #include "config.h" -#include <glib/gi18n.h> -#include <libgnomevfs/gnome-vfs-uri.h> -#include <gtk/gtktoolitem.h> - #include "ephy-bookmark-action.h" -#include "ephy-marshal.h" -#include "ephy-dnd.h" +#include "ephy-bookmarksbar-model.h" #include "ephy-bookmarksbar.h" #include "ephy-bookmarks.h" +#include "ephy-link.h" +#include "ephy-dnd.h" #include "ephy-favicon-cache.h" #include "ephy-shell.h" -#include "ephy-debug.h" #include "ephy-gui.h" +#include "ephy-debug.h" + +#include <glib/gi18n.h> +#include <gtk/gtkwidget.h> +#include <gtk/gtkhbox.h> +#include <gtk/gtklabel.h> +#include <gtk/gtkbutton.h> +#include <gtk/gtkentry.h> +#include <gtk/gtkstock.h> +#include <gtk/gtkimage.h> +#include <gtk/gtkmenuitem.h> +#include <gtk/gtkimagemenuitem.h> +#include <gtk/gtkseparatormenuitem.h> +#include <gtk/gtkmenushell.h> +#include <gtk/gtkmenu.h> +#include <gtk/gtktoolitem.h> +#include <gtk/gtktoolbar.h> +#include <gtk/gtkmain.h> +#include <libgnomevfs/gnome-vfs-uri.h> #include <string.h> @@ -52,7 +67,7 @@ static GtkTargetEntry drag_targets[] = }; static int n_drag_targets = G_N_ELEMENTS (drag_targets); -struct EphyBookmarkActionPrivate +struct _EphyBookmarkActionPrivate { EphyNode *node; gboolean smart_url; @@ -72,17 +87,8 @@ enum PROP_ICON }; -enum -{ - OPEN, - OPEN_IN_TAB, - LAST_SIGNAL -}; - static GObjectClass *parent_class = NULL; -static guint signals[LAST_SIGNAL] = { 0 }; - GType ephy_bookmark_action_get_type (void) { @@ -103,10 +109,11 @@ ephy_bookmark_action_get_type (void) (GInstanceInitFunc) ephy_bookmark_action_init, }; - type = g_type_register_static (GTK_TYPE_ACTION, + type = g_type_register_static (EPHY_TYPE_LINK_ACTION, "EphyBookmarkAction", &type_info, 0); } + return type; } @@ -117,7 +124,7 @@ create_tool_item (GtkAction *action) LOG ("Creating tool item for action %p", action) - item = (* GTK_ACTION_CLASS (parent_class)->create_tool_item) (action); + item = GTK_ACTION_CLASS (parent_class)->create_tool_item (action); hbox = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox); @@ -298,7 +305,8 @@ ephy_bookmark_action_sync_label (GtkAction *gaction, } static void -open_in_tab_activate_cb (GtkWidget *widget, EphyBookmarkAction *action) +open_in_tab_activate_cb (GtkWidget *widget, + EphyBookmarkAction *action) { const char *url; @@ -306,7 +314,8 @@ open_in_tab_activate_cb (GtkWidget *widget, EphyBookmarkAction *action) url = ephy_node_get_property_string (action->priv->node, EPHY_NODE_BMK_PROP_LOCATION); - g_signal_emit (action, signals[OPEN_IN_TAB], 0, url, FALSE); + ephy_link_open (EPHY_LINK (action), url, NULL, + EPHY_LINK_NEW_TAB | EPHY_LINK_JUMP_TO); } static void @@ -318,7 +327,8 @@ open_in_window_activate_cb (GtkWidget *widget, EphyBookmarkAction *action) url = ephy_node_get_property_string (action->priv->node, EPHY_NODE_BMK_PROP_LOCATION); - g_signal_emit (action, signals[OPEN_IN_TAB], 0, url, TRUE); + + ephy_link_open (EPHY_LINK (action), url, NULL, EPHY_LINK_NEW_WINDOW); } static void @@ -369,14 +379,8 @@ activate_cb (GtkWidget *widget, } } - if (ephy_gui_is_middle_click ()) - { - g_signal_emit (action, signals[OPEN_IN_TAB], 0, location, FALSE); - } - else - { - g_signal_emit (action, signals[OPEN], 0, location); - } + ephy_link_open (EPHY_LINK (action), location, NULL, + ephy_gui_is_middle_click () ? EPHY_LINK_NEW_TAB : 0); g_free (location); g_free (text); @@ -665,7 +669,7 @@ connect_proxy (GtkAction *action, GtkWidget *proxy) LOG ("Connecting action %p to proxy %p", action, proxy) - (* GTK_ACTION_CLASS (parent_class)->connect_proxy) (action, proxy); + GTK_ACTION_CLASS (parent_class)->connect_proxy (action, proxy); ephy_bookmark_action_sync_icon (action, NULL, proxy); g_signal_connect_object (action, "notify::icon", @@ -843,29 +847,6 @@ ephy_bookmark_action_class_init (EphyBookmarkActionClass *class) object_class->set_property = ephy_bookmark_action_set_property; object_class->get_property = ephy_bookmark_action_get_property; - signals[OPEN] = - g_signal_new ("open", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (EphyBookmarkActionClass, open), - NULL, NULL, - g_cclosure_marshal_VOID__STRING, - G_TYPE_NONE, - 1, - G_TYPE_STRING); - - signals[OPEN_IN_TAB] = - g_signal_new ("open_in_tab", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (EphyBookmarkActionClass, open_in_tab), - NULL, NULL, - ephy_marshal_VOID__STRING_BOOLEAN, - G_TYPE_NONE, - 2, - G_TYPE_STRING, - G_TYPE_BOOLEAN); - g_object_class_install_property (object_class, PROP_BOOKMARK, g_param_spec_pointer ("bookmark", |