diff options
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | doc/reference/tmpl/ephy-embed.sgml | 2 | ||||
-rw-r--r-- | src/Makefile.am | 2 | ||||
-rw-r--r-- | src/ephy-window.c | 62 |
4 files changed, 51 insertions, 25 deletions
@@ -1,3 +1,13 @@ +2005-01-31 Christian Persch <chpe@cvs.gnome.org> + + * src/Makefile.am: + * src/ephy-window.c: (ephy_window_get_type), + (ephy_window_link_iface_init), (ephy_window_open_link), + (ephy_window_init), (ephy_window_load_url): + + Make EphyWindow implement EphyLink interface. + Make ephy-link.h public. + 2005-01-30 Christian Persch <chpe@cvs.gnome.org> * embed/ephy-history.c: (ephy_history_new): diff --git a/doc/reference/tmpl/ephy-embed.sgml b/doc/reference/tmpl/ephy-embed.sgml index 25ecd5321..8f7eddc2f 100644 --- a/doc/reference/tmpl/ephy-embed.sgml +++ b/doc/reference/tmpl/ephy-embed.sgml @@ -209,6 +209,8 @@ be done by casting). @: @: @: +@: +@: @: <!-- ##### SIGNAL EphyEmbed::ge-security-change ##### --> diff --git a/src/Makefile.am b/src/Makefile.am index 5159faa8e..a9375ff11 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -33,7 +33,6 @@ NOINST_H_FILES = \ ephy-go-action.h \ ephy-history-window.h \ ephy-home-action.h \ - ephy-link.h \ ephy-link-action.h \ ephy-location-action.h \ ephy-navigation-action.h \ @@ -50,6 +49,7 @@ NOINST_H_FILES = \ INST_H_FILES = \ ephy-extension.h \ ephy-extensions-manager.h \ + ephy-link.h \ ephy-notebook.h \ ephy-session.h \ ephy-shell.h \ diff --git a/src/ephy-window.c b/src/ephy-window.c index b1f1c1096..5c37f4252 100644 --- a/src/ephy-window.c +++ b/src/ephy-window.c @@ -71,10 +71,14 @@ #include <gtk/gtkmessagedialog.h> static void ephy_window_class_init (EphyWindowClass *klass); +static void ephy_window_link_iface_init (EphyLinkIface *iface); static void ephy_window_init (EphyWindow *gs); static void ephy_window_finalize (GObject *object); static void ephy_window_show (GtkWidget *widget); - +static EphyTab *ephy_window_open_link (EphyLink *link, + const char *address, + EphyTab *tab, + EphyLinkFlags flags); static void ephy_window_notebook_switch_page_cb (GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, @@ -430,10 +434,20 @@ ephy_window_get_type (void) 0, /* n_preallocs */ (GInstanceInitFunc) ephy_window_init }; + static const GInterfaceInfo link_info = + { + (GInterfaceInitFunc) ephy_window_link_iface_init, + NULL, + NULL + }; type = g_type_register_static (GTK_TYPE_WINDOW, "EphyWindow", &our_info, 0); + + g_type_add_interface_static (type, + EPHY_TYPE_LINK, + &link_info); } return type; @@ -2334,6 +2348,12 @@ ephy_window_focus_out_event (GtkWidget *widget, } static void +ephy_window_link_iface_init (EphyLinkIface *iface) +{ + iface->open_link = ephy_window_open_link; +} + +static void ephy_window_class_init (EphyWindowClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); @@ -2455,12 +2475,12 @@ action_request_forward_cb (GObject *toolbar, } static EphyTab * -open_link_cb (EphyLink *link, - const char *address, - EphyTab *tab, - EphyLinkFlags flags, - EphyWindow *window) +ephy_window_open_link (EphyLink *link, + const char *address, + EphyTab *tab, + EphyLinkFlags flags) { + EphyWindow *window = EPHY_WINDOW (link); EphyTab *new_tab; g_return_val_if_fail (address != NULL, NULL); @@ -2529,8 +2549,8 @@ ephy_window_init (EphyWindow *window) setup_ui_manager (window); window->priv->notebook = setup_notebook (window); - g_signal_connect (window->priv->notebook, "open-link", - G_CALLBACK (open_link_cb), window); + g_signal_connect_swapped (window->priv->notebook, "open-link", + G_CALLBACK (ephy_link_open), window); gtk_box_pack_start (GTK_BOX (window->priv->main_vbox), GTK_WIDGET (window->priv->notebook), TRUE, TRUE, 0); @@ -2554,13 +2574,13 @@ ephy_window_init (EphyWindow *window) /* create the toolbars */ window->priv->toolbar = ephy_toolbar_new (window); - g_signal_connect (window->priv->toolbar, "open-link", - G_CALLBACK (open_link_cb), window); + g_signal_connect_swapped (window->priv->toolbar, "open-link", + G_CALLBACK (ephy_link_open), window); g_signal_connect_swapped (window->priv->toolbar, "exit-clicked", G_CALLBACK (exit_fullscreen_clicked_cb), window); window->priv->bookmarksbar = ephy_bookmarksbar_new (window); - g_signal_connect (window->priv->bookmarksbar, "open-link", - G_CALLBACK (open_link_cb), window); + g_signal_connect_swapped (window->priv->bookmarksbar, "open-link", + G_CALLBACK (ephy_link_open), window); g_signal_connect_swapped (window->priv->toolbar, "activation-finished", G_CALLBACK (sync_chromes_visibility), window); @@ -2578,12 +2598,12 @@ ephy_window_init (EphyWindow *window) window->priv->tabs_menu = ephy_tabs_menu_new (window); window->priv->enc_menu = ephy_encoding_menu_new (window); window->priv->fav_menu = ephy_favorites_menu_new (window); - g_signal_connect (window->priv->fav_menu, "open-link", - G_CALLBACK (open_link_cb), window); + g_signal_connect_swapped (window->priv->fav_menu, "open-link", + G_CALLBACK (ephy_link_open), window); window->priv->bmk_menu = ephy_bookmarks_menu_new (window->priv->manager, BOOKMARKS_MENU_PATH); - g_signal_connect (window->priv->bmk_menu, "open-link", - G_CALLBACK (open_link_cb), window); + g_signal_connect_swapped (window->priv->bmk_menu, "open-link", + G_CALLBACK (ephy_link_open), window); /* forward the toolbar's action_request signal to the bookmarks toolbar, * so the user can also have bookmarks on the normal toolbar @@ -2984,15 +3004,9 @@ void ephy_window_load_url (EphyWindow *window, const char *url) { - EphyEmbed *embed; - - g_return_if_fail (EPHY_IS_WINDOW(window)); - embed = ephy_window_get_active_embed (window); - g_return_if_fail (embed != NULL); - g_return_if_fail (url != NULL); + g_return_if_fail (url != NULL); - ephy_embed_load_url (embed, url); - ephy_embed_activate (embed); + ephy_link_open (EPHY_LINK (window), url, NULL, 0); } /** |