From 1bb4b10ce6a3e857b14e0637e17203960dcc9543 Mon Sep 17 00:00:00 2001 From: Christian Persch Date: Sun, 8 Aug 2004 11:32:18 +0000 Subject: Make ephy_embed_single_open_window() return the newly opened embed widget. 2004-08-08 Christian Persch * embed/ephy-embed-single.c: (ephy_embed_single_open_window): * embed/ephy-embed-single.h: * embed/mozilla/mozilla-embed-single.cpp: (impl_open_window): * src/ephy-tab.c: (popups_manager_show): Make ephy_embed_single_open_window() return the newly opened embed widget. --- embed/ephy-embed-single.c | 11 +++++--- embed/ephy-embed-single.h | 48 ++++++++++++++++++---------------- embed/mozilla/mozilla-embed-single.cpp | 14 ++++++---- 3 files changed, 42 insertions(+), 31 deletions(-) (limited to 'embed') diff --git a/embed/ephy-embed-single.c b/embed/ephy-embed-single.c index 64f72d3a3..80788dada 100644 --- a/embed/ephy-embed-single.c +++ b/embed/ephy-embed-single.c @@ -190,21 +190,26 @@ ephy_embed_single_get_font_list (EphyEmbedSingle *single, * @single: the #EphyEmbedSingle * @parent: the requested window's parent #EphyEmbed * @address: the URL to load + * @name: a name for the window * @features: a Javascript features string * * Opens a new window, as if it were opened in @parent using the Javascript * method and arguments: window.open("@address", * "_blank", "@features");. * - * Use ephy_shell_new_tab() unless this handling of the @features string is + * Returns: the new embed. This is either a #EphyEmbed, or, when @features specified + * "chrome", a #GtkMozEmbed. + * + * NOTE: Use ephy_shell_new_tab() unless this handling of the @features string is * required. */ -void +GtkWidget * ephy_embed_single_open_window (EphyEmbedSingle *single, EphyEmbed *parent, const char *address, + const char *name, const char *features) { EphyEmbedSingleIface *iface = EPHY_EMBED_SINGLE_GET_IFACE (single); - return iface->open_window (single, parent, address, features); + return iface->open_window (single, parent, address, name, features); } diff --git a/embed/ephy-embed-single.h b/embed/ephy-embed-single.h index e0cbee8c1..1b8894592 100644 --- a/embed/ephy-embed-single.h +++ b/embed/ephy-embed-single.h @@ -50,37 +50,39 @@ struct _EphyEmbedSingleIface /* Methods */ - void (* open_window) (EphyEmbedSingle *single, - EphyEmbed *parent, - const char *address, - const char *features); - void (* clear_cache) (EphyEmbedSingle *shell); - void (* clear_auth_cache) (EphyEmbedSingle *shell); - void (* set_offline_mode) (EphyEmbedSingle *shell, - gboolean offline); - gboolean (* get_offline_mode) (EphyEmbedSingle *single); - GList * (* get_font_list) (EphyEmbedSingle *shell, - const char *langGroup); -}; - -GType ephy_embed_single_get_type (void); - -void ephy_embed_single_open_window (EphyEmbedSingle *single, + GtkWidget * (* open_window) (EphyEmbedSingle *single, EphyEmbed *parent, const char *address, + const char *name, const char *features); + void (* clear_cache) (EphyEmbedSingle *shell); + void (* clear_auth_cache) (EphyEmbedSingle *shell); + void (* set_offline_mode) (EphyEmbedSingle *shell, + gboolean offline); + gboolean (* get_offline_mode) (EphyEmbedSingle *single); + GList * (* get_font_list) (EphyEmbedSingle *shell, + const char *langGroup); +}; -void ephy_embed_single_clear_cache (EphyEmbedSingle *single); +GType ephy_embed_single_get_type (void); -void ephy_embed_single_clear_auth_cache (EphyEmbedSingle *single); +GtkWidget *ephy_embed_single_open_window (EphyEmbedSingle *single, + EphyEmbed *parent, + const char *address, + const char *name, + const char *features); -void ephy_embed_single_set_offline_mode (EphyEmbedSingle *single, - gboolean offline); +void ephy_embed_single_clear_cache (EphyEmbedSingle *single); + +void ephy_embed_single_clear_auth_cache (EphyEmbedSingle *single); + +void ephy_embed_single_set_offline_mode (EphyEmbedSingle *single, + gboolean offline); -gboolean ephy_embed_single_get_offline_mode (EphyEmbedSingle *single); +gboolean ephy_embed_single_get_offline_mode (EphyEmbedSingle *single); -GList *ephy_embed_single_get_font_list (EphyEmbedSingle *single, - const char *lang_group); +GList *ephy_embed_single_get_font_list (EphyEmbedSingle *single, + const char *lang_group); G_END_DECLS diff --git a/embed/mozilla/mozilla-embed-single.cpp b/embed/mozilla/mozilla-embed-single.cpp index 8da7ce61e..ba379377e 100644 --- a/embed/mozilla/mozilla-embed-single.cpp +++ b/embed/mozilla/mozilla-embed-single.cpp @@ -45,6 +45,7 @@ #include "EphySingle.h" #include "EphyBrowser.h" #include "EphyUtils.h" +#include "MozillaPrivate.h" #include #include @@ -898,28 +899,31 @@ impl_permission_manager_list (EphyPermissionManager *manager, return list; } -static void +static GtkWidget * impl_open_window (EphyEmbedSingle *single, EphyEmbed *parent, const char *address, + const char *name, const char *features) { nsCOMPtr domWindow; - nsCOMPtr dummy; if (parent) { EphyBrowser *browser; browser = (EphyBrowser *) _mozilla_embed_get_ephy_browser (MOZILLA_EMBED(parent)); - g_return_if_fail (browser != NULL); + g_return_val_if_fail (browser != NULL, NULL); browser->GetDOMWindow (getter_AddRefs (domWindow)); } nsCOMPtr wWatch(do_GetService ("@mozilla.org/embedcomp/window-watcher;1")); - wWatch->OpenWindow (domWindow, address, "", features, nsnull, - getter_AddRefs (dummy)); + nsCOMPtr newWindow; + wWatch->OpenWindow (domWindow, address, name, features, nsnull, + getter_AddRefs (newWindow)); + + return MozillaFindEmbed (newWindow); } static void -- cgit v1.2.3