From 4af7eec833cfa16e3b308ae4ed65e8ab6556950c Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Fri, 15 Apr 2016 01:03:11 +0200 Subject: [PATCH] Fix crash when closing windows in embedded mode --- src/window.c | 104 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 95 insertions(+), 9 deletions(-) diff --git a/src/window.c b/src/window.c index 2a3fb32..72dd381 100644 --- a/src/window.c +++ b/src/window.c @@ -77,6 +77,16 @@ struct _BrowserWindow /* callbacks */ static void _browserwindow_on_close(gpointer data); static gboolean _browserwindow_on_closex(gpointer data); +static void _browserwindow_on_location(gpointer data); +static void _browserwindow_on_properties(gpointer data); +#ifdef EMBEDDED +static void _browserwindow_on_copy(gpointer data); +static void _browserwindow_on_cut(gpointer data); +static void _browserwindow_on_new_window(gpointer data); +static void _browserwindow_on_open_file(gpointer data); +static void _browserwindow_on_paste(gpointer data); +static void _browserwindow_on_refresh(gpointer data); +#endif /* file menu */ static void _browserwindow_on_file_close(gpointer data); @@ -115,16 +125,18 @@ static void _browserwindow_on_view_thumbnails(gpointer data); static const DesktopAccel _browserwindow_accel[] = { - { G_CALLBACK(on_location), GDK_CONTROL_MASK, GDK_KEY_L }, - { G_CALLBACK(on_properties), GDK_MOD1_MASK, GDK_KEY_Return }, + { G_CALLBACK(_browserwindow_on_location), GDK_CONTROL_MASK, GDK_KEY_L }, + { G_CALLBACK(_browserwindow_on_properties), GDK_MOD1_MASK, + GDK_KEY_Return }, #ifdef EMBEDDED { G_CALLBACK(_browserwindow_on_close), GDK_CONTROL_MASK, GDK_KEY_W }, - { G_CALLBACK(on_copy), GDK_CONTROL_MASK, GDK_KEY_C }, - { G_CALLBACK(on_cut), GDK_CONTROL_MASK, GDK_KEY_X }, - { G_CALLBACK(on_new_window), GDK_CONTROL_MASK, GDK_KEY_N }, - { G_CALLBACK(on_open_file), GDK_CONTROL_MASK, GDK_KEY_O }, - { G_CALLBACK(on_paste), GDK_CONTROL_MASK, GDK_KEY_V }, - { G_CALLBACK(on_refresh), GDK_CONTROL_MASK, GDK_KEY_R }, + { G_CALLBACK(_browserwindow_on_copy), GDK_CONTROL_MASK, GDK_KEY_C }, + { G_CALLBACK(_browserwindow_on_cut), GDK_CONTROL_MASK, GDK_KEY_X }, + { G_CALLBACK(_browserwindow_on_new_window), GDK_CONTROL_MASK, + GDK_KEY_N }, + { G_CALLBACK(_browserwindow_on_open_file), GDK_CONTROL_MASK, GDK_KEY_O }, + { G_CALLBACK(_browserwindow_on_paste), GDK_CONTROL_MASK, GDK_KEY_V }, + { G_CALLBACK(_browserwindow_on_refresh), GDK_CONTROL_MASK, GDK_KEY_R }, #endif { NULL, 0, 0 } }; @@ -278,7 +290,7 @@ BrowserWindow * browserwindow_new(String const * directory) group); gtk_box_pack_start(GTK_BOX(vbox), tb_menubar, FALSE, FALSE, 0); #endif - desktop_accel_create(_browserwindow_accel, browser->browser, group); + desktop_accel_create(_browserwindow_accel, browser, group); gtk_box_pack_start(GTK_BOX(vbox), browser_get_widget(browser->browser), TRUE, TRUE, 0); @@ -347,6 +359,80 @@ static gboolean _browserwindow_on_closex(gpointer data) } +/* browserwindow_on_location */ +static void _browserwindow_on_location(gpointer data) +{ + BrowserWindow * browser = data; + + on_location(browser->browser); +} + + +/* browserwindow_on_properties */ +static void _browserwindow_on_properties(gpointer data) +{ + BrowserWindow * browser = data; + + on_properties(browser->browser); +} + + +#ifdef EMBEDDED +/* browserwindow_on_copy */ +static void _browserwindow_on_copy(gpointer data) +{ + BrowserWindow * browser = data; + + on_copy(browser->browser); +} + + +/* browserwindow_on_cut */ +static void _browserwindow_on_cut(gpointer data) +{ + BrowserWindow * browser = data; + + on_cut(browser->browser); +} + + +/* browserwindow_on_new_window */ +static void _browserwindow_on_new_window(gpointer data) +{ + BrowserWindow * browser = data; + + on_new_window(browser->browser); +} + + +/* browserwindow_on_open_file */ +static void _browserwindow_on_open_file(gpointer data) +{ + BrowserWindow * browser = data; + + on_open_file(browser->browser); +} + + +/* browserwindow_on_paste */ +static void _browserwindow_on_paste(gpointer data) +{ + BrowserWindow * browser = data; + + on_paste(browser->browser); +} + + +/* browserwindow_on_refresh */ +static void _browserwindow_on_refresh(gpointer data) +{ + BrowserWindow * browser = data; + + on_refresh(browser->browser); +} +#endif + + /* file menu */ /* browserwindow_on_file_close */ static void _browserwindow_on_file_close(gpointer data)