Merge lp:~gue5t/midori/exec-windowclose into lp:midori

Proposed by gue5t gue5t
Status: Merged
Approved by: Cris Dywan
Approved revision: 7094
Merged at revision: 7103
Proposed branch: lp:~gue5t/midori/exec-windowclose
Merge into: lp:midori
Diff against target: 44 lines (+12/-6)
2 files modified
midori/midori-browser.c (+6/-0)
midori/midori-frontend.c (+6/-6)
To merge this branch: bzr merge lp:~gue5t/midori/exec-windowclose
Reviewer Review Type Date Requested Status
Cris Dywan Approve
Review via email: mp+283730@code.launchpad.net

Commit message

Fix warnings when starting with --execute WindowClose

Description of the change

Right now, starting Midori with "--execute WindowClose" causes a number of assertion failures (more if run with -p):

$ midori -p -e WindowClose

(midori4:21698): Gdk-CRITICAL **: IA__gdk_event_free: assertion 'event != NULL' failed

** (midori4:21698): CRITICAL **: midori_browser_activate_action: assertion 'MIDORI_IS_BROWSER (browser)' failed

** (midori4:21698): CRITICAL **: midori_browser_activate_action: assertion 'MIDORI_IS_BROWSER (browser)' failed

** (midori4:21698): CRITICAL **: midori_browser_activate_action: assertion 'MIDORI_IS_BROWSER (browser)' failed

(midori4:21698): GLib-GObject-WARNING **: instance with invalid (NULL) class pointer

(midori4:21698): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed

(midori4:21698): GLib-GObject-WARNING **: instance with invalid (NULL) class pointer

(midori4:21698): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
^C

This fixes the assertion failures, but it does not fix the fact that the Midori process does not exit when started with "--execute WindowClose" *and* -p. After this patch the execute command works perfectly without -p and quietly sits there with -p.

The problem was twofold: we were inadvertently passing a NULL GdkEvent when emitting the delete_event signal, and in private mode we were running commands before enabling "built-in" extensions. This constructs a GdkEvent to fix the former and reorders things to a more sane sequence of events to fix the latter.

To post a comment you must log in.
Revision history for this message
Cris Dywan (kalikiana) wrote :

That actually makes a lot of sense (although it's a weird use case).

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'midori/midori-browser.c'
2--- midori/midori-browser.c 2016-01-15 19:18:17 +0000
3+++ midori/midori-browser.c 2016-01-23 20:44:48 +0000
4@@ -2898,6 +2898,12 @@
5 {
6 gboolean val = FALSE;
7 GdkEvent* event = gtk_get_current_event();
8+
9+ /* if current event is null, the action was activated by --execute */
10+ if (!event)
11+ {
12+ event = gdk_event_new (GDK_CLIENT_EVENT);
13+ }
14 g_signal_emit_by_name (G_OBJECT (browser), "delete-event", event, &val);
15 gdk_event_free (event);
16
17
18=== modified file 'midori/midori-frontend.c'
19--- midori/midori-frontend.c 2016-01-15 19:18:17 +0000
20+++ midori/midori-frontend.c 2016-01-23 20:44:48 +0000
21@@ -247,18 +247,18 @@
22 midori_browser_add_uri (browser, "about:private");
23 gtk_widget_show (GTK_WIDGET (browser));
24
25+ /* FIXME need proper stock extension mechanism */
26+ midori_browser_activate_action (browser, "libtransfers." G_MODULE_SUFFIX "=true");
27+ midori_browser_activate_action (browser, "libabout." G_MODULE_SUFFIX "=true");
28+ midori_browser_activate_action (browser, "libopen-with." G_MODULE_SUFFIX "=true");
29+ g_assert (g_module_error () == NULL);
30+
31 for (i = 0; execute_commands && execute_commands[i]; i++)
32 {
33 midori_browser_assert_action (browser, execute_commands[i]);
34 midori_browser_activate_action (browser, execute_commands[i]);
35 }
36
37- /* FIXME need proper stock extension mechanism */
38- midori_browser_activate_action (browser, "libtransfers." G_MODULE_SUFFIX "=true");
39- midori_browser_activate_action (browser, "libabout." G_MODULE_SUFFIX "=true");
40- midori_browser_activate_action (browser, "libopen-with." G_MODULE_SUFFIX "=true");
41- g_assert (g_module_error () == NULL);
42-
43 return browser;
44 }
45

Subscribers

People subscribed via source and target branches

to all changes: