Summary Files Commits Branches @commit @diff @stats
path: root / badwolf.c
diff options
context:
space:
mode:
1 files changed, 14 insertions, 9 deletions
-rw-r--r--badwolf.c23
diff --git a/badwolf.c b/badwolf.c
index b0e2beb..a8b8802 100644
--- a/badwolf.c
+++ b/badwolf.c
@@ -293,10 +293,15 @@ WebViewCb_create(WebKitWebView *related_web_view,
gpointer user_data)
{
(void)navigation_action;
- struct Window *window = (struct Window *)user_data;
- struct Client *browser = new_browser(window, NULL, related_web_view);
+ struct Client *old_browser = (struct Client *)user_data;
+ struct Client *browser = NULL;
+
+ // shouldn't be needed but better be safe
+ old_browser->webView = related_web_view;
+
+ browser = new_browser(old_browser->window, NULL, old_browser);
- if(badwolf_new_tab(GTK_NOTEBOOK(window->notebook), browser) < 0)
+ if(badwolf_new_tab(GTK_NOTEBOOK(old_browser->window->notebook), browser) < 0)
return NULL;
else
return browser->webView;
@@ -590,16 +595,16 @@ widgetCb_drop_button3_event(GtkWidget *widget, GdkEvent *event, gpointer user_da
}
struct Client *
-new_browser(struct Window *window, const gchar *target_url, WebKitWebView *related_web_view)
+new_browser(struct Window *window, const gchar *target_url, struct Client *old_browser)
{
struct Client *browser = malloc(sizeof(struct Client));
- target_url = badwolf_ensure_uri_scheme(target_url, (related_web_view == NULL));
+ target_url = badwolf_ensure_uri_scheme(target_url, (old_browser == NULL));
char *badwolf_l10n = NULL;
if(browser == NULL) return NULL;
browser->window = window;
- browser->context_id = context_id_counter++;
+ browser->context_id = old_browser == NULL ? context_id_counter++ : old_browser->context_id;
browser->box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
gtk_widget_set_name(browser->box, "browser__box");
@@ -670,7 +675,7 @@ new_browser(struct Window *window, const gchar *target_url, WebKitWebView *relat
"web-context",
web_context,
"related-view",
- related_web_view,
+ old_browser == NULL ? NULL : old_browser->webView,
"settings",
settings,
NULL));
@@ -799,7 +804,7 @@ new_browser(struct Window *window, const gchar *target_url, WebKitWebView *relat
"notify::estimated-load-progress",
G_CALLBACK(WebViewCb_notify__estimated_load_progress),
browser);
- g_signal_connect(browser->webView, "create", G_CALLBACK(WebViewCb_create), window);
+ g_signal_connect(browser->webView, "create", G_CALLBACK(WebViewCb_create), browser);
g_signal_connect(browser->webView, "close", G_CALLBACK(WebViewCb_close), browser);
g_signal_connect(
browser->webView, "key-press-event", G_CALLBACK(WebViewCb_key_press_event), browser);
@@ -830,7 +835,7 @@ new_browser(struct Window *window, const gchar *target_url, WebKitWebView *relat
/* signals for box container */
g_signal_connect(browser->box, "key-press-event", G_CALLBACK(boxCb_key_press_event), browser);
- if(related_web_view == NULL) webkit_web_view_load_uri(browser->webView, target_url);
+ if(old_browser == NULL) webkit_web_view_load_uri(browser->webView, target_url);
return browser;
}