diff options
author | Marco Pesenti Gritti <marco@localhost.localdomain> | 2006-09-27 12:45:55 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@localhost.localdomain> | 2006-09-27 12:45:55 (GMT) |
commit | df6dd4618bfdf4915229349a6dc967890fbf8470 (patch) | |
tree | 126bd51f763c6fd5ef5ffd2a6729ad4730f6d140 /bindings/gecko/gecko-browser.cpp | |
parent | 7443ee4c8ba36e1867fc7f89096c34d08c1c69da (diff) |
Open "requested" popups in a new activity
Diffstat (limited to 'bindings/gecko/gecko-browser.cpp')
-rw-r--r-- | bindings/gecko/gecko-browser.cpp | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/bindings/gecko/gecko-browser.cpp b/bindings/gecko/gecko-browser.cpp index d262774..cab07f8 100644 --- a/bindings/gecko/gecko-browser.cpp +++ b/bindings/gecko/gecko-browser.cpp @@ -23,7 +23,7 @@ #include <nsServiceManagerUtils.h> void -gecko_startup(void) +gecko_browser_startup(void) { nsCOMPtr<nsIPrefService> prefService; @@ -36,3 +36,43 @@ gecko_startup(void) pref->SetBoolPref ("dom.disable_open_during_load", TRUE); } + +G_DEFINE_TYPE(GeckoBrowser, gecko_browser, GTK_TYPE_MOZ_EMBED) + +//static guint signals[N_SIGNALS]; + +GeckoBrowser * +gecko_browser_new(void) +{ + return GECKO_BROWSER(g_object_new(GECKO_TYPE_BROWSER, NULL)); +} + +static void +gecko_browser_class_init(GeckoBrowserClass *browser_class) +{ +} + +GeckoBrowser * +gecko_browser_create_window(GeckoBrowser *browser) +{ + return GECKO_BROWSER_GET_CLASS(browser)->create_window(browser); +} + +static void +gecko_browser_new_window_cb(GtkMozEmbed *embed, + GtkMozEmbed **newEmbed, + guint chromemask) +{ + GeckoBrowser *browser; + + browser = gecko_browser_create_window(GECKO_BROWSER(embed)); + + *newEmbed = GTK_MOZ_EMBED(browser); +} + +static void +gecko_browser_init(GeckoBrowser *browser) +{ + g_signal_connect(G_OBJECT(browser), "new-window", + G_CALLBACK(gecko_browser_new_window_cb), NULL); +} |