Merge lp:~midori/midori/tabsignals into lp:midori
- tabsignals
- Merge into trunk
Proposed by
Cris Dywan
Status: | Work in progress |
---|---|
Proposed branch: | lp:~midori/midori/tabsignals |
Merge into: | lp:midori |
Diff against target: |
301 lines (+30/-105) 4 files modified
extensions/external-download-manager.vala (+1/-1) midori/midori-tab.vala (+11/-0) midori/midori-view.c (+18/-103) midori/midori.vapi (+0/-1) |
To merge this branch: | bzr merge lp:~midori/midori/tabsignals |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
André Stösel | Needs Fixing | ||
gue5t gue5t | Approve | ||
Review via email: mp+191517@code.launchpad.net |
Commit message
Move new-tab/window/view and download_requested to Midori.Tab
Description of the change
This is required to allow the browser connect signals on any Tab which may not be a View.
To post a comment you must log in.
Revision history for this message
André Stösel (ivaldi) wrote : | # |
I think there is no signal accumulator support in vala right now.
Unmerged revisions
- 6437. By Cris Dywan
-
Move new-tab/window/view and download_requested to Midori.Tab
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'extensions/external-download-manager.vala' | |||
2 | --- extensions/external-download-manager.vala 2013-05-26 18:18:40 +0000 | |||
3 | +++ extensions/external-download-manager.vala 2013-10-16 21:54:02 +0000 | |||
4 | @@ -36,7 +36,7 @@ | |||
5 | 36 | private CookieJar cookie_jar; | 36 | private CookieJar cookie_jar; |
6 | 37 | private GLib.PtrArray download_managers = new GLib.PtrArray (); | 37 | private GLib.PtrArray download_managers = new GLib.PtrArray (); |
7 | 38 | 38 | ||
9 | 39 | public bool download_requested (Midori.View view, WebKit.Download download) { | 39 | public bool download_requested (WebKit.Download download) { |
10 | 40 | Midori.DownloadType download_type = download.get_data<Midori.DownloadType> ("midori-download-type"); | 40 | Midori.DownloadType download_type = download.get_data<Midori.DownloadType> ("midori-download-type"); |
11 | 41 | 41 | ||
12 | 42 | if (download_type == Midori.DownloadType.SAVE) { | 42 | if (download_type == Midori.DownloadType.SAVE) { |
13 | 43 | 43 | ||
14 | === modified file 'midori/midori-tab.vala' | |||
15 | --- midori/midori-tab.vala 2013-08-31 09:18:21 +0000 | |||
16 | +++ midori/midori-tab.vala 2013-10-16 21:54:02 +0000 | |||
17 | @@ -92,6 +92,17 @@ | |||
18 | 92 | /* Since: 0.5.5 */ | 92 | /* Since: 0.5.5 */ |
19 | 93 | public signal void context_menu (WebKit.HitTestResult hit_test_result, ContextAction menu); | 93 | public signal void context_menu (WebKit.HitTestResult hit_test_result, ContextAction menu); |
20 | 94 | 94 | ||
21 | 95 | public signal void new_tab (string uri, bool background); | ||
22 | 96 | public signal void new_window (string uri); | ||
23 | 97 | /* Since: 0.1.2 | ||
24 | 98 | Since: 0.3.4 a bool argument was added. */ | ||
25 | 99 | public signal void new_view (Tab view, NewView where, bool user_initiated); | ||
26 | 100 | /* Emitted when a new download is requested, if a file cannot be shown | ||
27 | 101 | or a download was initiated from the context menu. | ||
28 | 102 | Returning @true causes the download to start otherwise it's cancelled. | ||
29 | 103 | Since: 0.1.5 */ | ||
30 | 104 | public signal bool download_requested (WebKit.Download download); | ||
31 | 105 | |||
32 | 95 | /* A dialog tab has a fixed size, limited GUI and is transient. | 106 | /* A dialog tab has a fixed size, limited GUI and is transient. |
33 | 96 | Since: 0.5.6 */ | 107 | Since: 0.5.6 */ |
34 | 97 | public bool is_dialog { get; protected set; } | 108 | public bool is_dialog { get; protected set; } |
35 | 98 | 109 | ||
36 | === modified file 'midori/midori-view.c' | |||
37 | --- midori/midori-view.c 2013-09-17 15:41:00 +0000 | |||
38 | +++ midori/midori-view.c 2013-10-16 21:54:02 +0000 | |||
39 | @@ -155,10 +155,6 @@ | |||
40 | 155 | }; | 155 | }; |
41 | 156 | 156 | ||
42 | 157 | enum { | 157 | enum { |
43 | 158 | NEW_TAB, | ||
44 | 159 | NEW_WINDOW, | ||
45 | 160 | NEW_VIEW, | ||
46 | 161 | DOWNLOAD_REQUESTED, | ||
47 | 162 | ADD_BOOKMARK, | 158 | ADD_BOOKMARK, |
48 | 163 | ABOUT_CONTENT, | 159 | ABOUT_CONTENT, |
49 | 164 | 160 | ||
50 | @@ -203,87 +199,6 @@ | |||
51 | 203 | GtkWidgetClass* gtkwidget_class; | 199 | GtkWidgetClass* gtkwidget_class; |
52 | 204 | GParamFlags flags; | 200 | GParamFlags flags; |
53 | 205 | 201 | ||
54 | 206 | signals[NEW_TAB] = g_signal_new ( | ||
55 | 207 | "new-tab", | ||
56 | 208 | G_TYPE_FROM_CLASS (class), | ||
57 | 209 | (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), | ||
58 | 210 | 0, | ||
59 | 211 | 0, | ||
60 | 212 | NULL, | ||
61 | 213 | midori_cclosure_marshal_VOID__STRING_BOOLEAN, | ||
62 | 214 | G_TYPE_NONE, 2, | ||
63 | 215 | G_TYPE_STRING, | ||
64 | 216 | G_TYPE_BOOLEAN); | ||
65 | 217 | |||
66 | 218 | signals[NEW_WINDOW] = g_signal_new ( | ||
67 | 219 | "new-window", | ||
68 | 220 | G_TYPE_FROM_CLASS (class), | ||
69 | 221 | (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), | ||
70 | 222 | 0, | ||
71 | 223 | 0, | ||
72 | 224 | NULL, | ||
73 | 225 | g_cclosure_marshal_VOID__STRING, | ||
74 | 226 | G_TYPE_NONE, 1, | ||
75 | 227 | G_TYPE_STRING); | ||
76 | 228 | |||
77 | 229 | /** | ||
78 | 230 | * MidoriView::new-view: | ||
79 | 231 | * @view: the object on which the signal is emitted | ||
80 | 232 | * @new_view: a newly created view | ||
81 | 233 | * @where: where to open the view | ||
82 | 234 | * @user_initiated: %TRUE if the user actively opened the new view | ||
83 | 235 | * | ||
84 | 236 | * Emitted when a new view is created. The value of | ||
85 | 237 | * @where determines where to open the view according | ||
86 | 238 | * to how it was opened and user preferences. | ||
87 | 239 | * | ||
88 | 240 | * Since: 0.1.2 | ||
89 | 241 | * | ||
90 | 242 | * Since 0.3.4 a boolean argument was added. | ||
91 | 243 | */ | ||
92 | 244 | signals[NEW_VIEW] = g_signal_new ( | ||
93 | 245 | "new-view", | ||
94 | 246 | G_TYPE_FROM_CLASS (class), | ||
95 | 247 | (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), | ||
96 | 248 | 0, | ||
97 | 249 | 0, | ||
98 | 250 | NULL, | ||
99 | 251 | midori_cclosure_marshal_VOID__OBJECT_ENUM_BOOLEAN, | ||
100 | 252 | G_TYPE_NONE, 3, | ||
101 | 253 | MIDORI_TYPE_VIEW, | ||
102 | 254 | MIDORI_TYPE_NEW_VIEW, | ||
103 | 255 | G_TYPE_BOOLEAN); | ||
104 | 256 | |||
105 | 257 | /** | ||
106 | 258 | * MidoriView::download-requested: | ||
107 | 259 | * @view: the object on which the signal is emitted | ||
108 | 260 | * @download: a new download | ||
109 | 261 | * | ||
110 | 262 | * Emitted when a new download is requested, if a | ||
111 | 263 | * file cannot be displayed or a download was started | ||
112 | 264 | * from the context menu. | ||
113 | 265 | * | ||
114 | 266 | * If the download should be accepted, a callback | ||
115 | 267 | * has to return %TRUE, and the download will also | ||
116 | 268 | * be started automatically. | ||
117 | 269 | * | ||
118 | 270 | * Note: This requires WebKitGTK 1.1.3. | ||
119 | 271 | * | ||
120 | 272 | * Return value: %TRUE if the download was handled | ||
121 | 273 | * | ||
122 | 274 | * Since: 0.1.5 | ||
123 | 275 | */ | ||
124 | 276 | signals[DOWNLOAD_REQUESTED] = g_signal_new ( | ||
125 | 277 | "download-requested", | ||
126 | 278 | G_TYPE_FROM_CLASS (class), | ||
127 | 279 | (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), | ||
128 | 280 | 0, | ||
129 | 281 | g_signal_accumulator_true_handled, | ||
130 | 282 | NULL, | ||
131 | 283 | midori_cclosure_marshal_BOOLEAN__OBJECT, | ||
132 | 284 | G_TYPE_BOOLEAN, 1, | ||
133 | 285 | G_TYPE_OBJECT); | ||
134 | 286 | |||
135 | 287 | /** | 202 | /** |
136 | 288 | * MidoriView::add-bookmark: | 203 | * MidoriView::add-bookmark: |
137 | 289 | * @view: the object on which the signal is emitted | 204 | * @view: the object on which the signal is emitted |
138 | @@ -1646,14 +1561,14 @@ | |||
139 | 1646 | background = view->open_tabs_in_the_background; | 1561 | background = view->open_tabs_in_the_background; |
140 | 1647 | if (MIDORI_MOD_BACKGROUND (event->state)) | 1562 | if (MIDORI_MOD_BACKGROUND (event->state)) |
141 | 1648 | background = !background; | 1563 | background = !background; |
143 | 1649 | g_signal_emit (view, signals[NEW_TAB], 0, link_uri, background); | 1564 | g_signal_emit_by_name (view, "new-tab", link_uri, background); |
144 | 1650 | view->button_press_handled = TRUE; | 1565 | view->button_press_handled = TRUE; |
145 | 1651 | return TRUE; | 1566 | return TRUE; |
146 | 1652 | } | 1567 | } |
147 | 1653 | else if (MIDORI_MOD_NEW_WINDOW (event->state)) | 1568 | else if (MIDORI_MOD_NEW_WINDOW (event->state)) |
148 | 1654 | { | 1569 | { |
149 | 1655 | /* Open link in new window */ | 1570 | /* Open link in new window */ |
151 | 1656 | g_signal_emit (view, signals[NEW_WINDOW], 0, link_uri); | 1571 | g_signal_emit_by_name (view, "new-window", link_uri); |
152 | 1657 | view->button_press_handled = TRUE; | 1572 | view->button_press_handled = TRUE; |
153 | 1658 | return TRUE; | 1573 | return TRUE; |
154 | 1659 | } | 1574 | } |
155 | @@ -1668,7 +1583,7 @@ | |||
156 | 1668 | background = view->open_tabs_in_the_background; | 1583 | background = view->open_tabs_in_the_background; |
157 | 1669 | if (MIDORI_MOD_BACKGROUND (event->state)) | 1584 | if (MIDORI_MOD_BACKGROUND (event->state)) |
158 | 1670 | background = !background; | 1585 | background = !background; |
160 | 1671 | g_signal_emit (view, signals[NEW_TAB], 0, link_uri, background); | 1586 | g_signal_emit_by_name (view, "new-tab", link_uri, background); |
161 | 1672 | view->button_press_handled = TRUE; | 1587 | view->button_press_handled = TRUE; |
162 | 1673 | return TRUE; | 1588 | return TRUE; |
163 | 1674 | } | 1589 | } |
164 | @@ -1716,7 +1631,7 @@ | |||
165 | 1716 | background = view->open_tabs_in_the_background; | 1631 | background = view->open_tabs_in_the_background; |
166 | 1717 | if (MIDORI_MOD_BACKGROUND (event->state)) | 1632 | if (MIDORI_MOD_BACKGROUND (event->state)) |
167 | 1718 | background = !background; | 1633 | background = !background; |
169 | 1719 | g_signal_emit (view, signals[NEW_TAB], 0, uri, background); | 1634 | g_signal_emit_by_name (view, "new-tab", uri, background); |
170 | 1720 | } | 1635 | } |
171 | 1721 | else | 1636 | else |
172 | 1722 | { | 1637 | { |
173 | @@ -1935,7 +1850,7 @@ | |||
174 | 1935 | gboolean background = view->open_tabs_in_the_background; | 1850 | gboolean background = view->open_tabs_in_the_background; |
175 | 1936 | if (MIDORI_MOD_BACKGROUND (event->state)) | 1851 | if (MIDORI_MOD_BACKGROUND (event->state)) |
176 | 1937 | background = !background; | 1852 | background = !background; |
178 | 1938 | g_signal_emit (view, signals[NEW_TAB], 0, result, background); | 1853 | g_signal_emit_by_name (view, "new-tab", result, background); |
179 | 1939 | } | 1854 | } |
180 | 1940 | else | 1855 | else |
181 | 1941 | midori_view_set_uri (view, result); | 1856 | midori_view_set_uri (view, result); |
182 | @@ -2029,7 +1944,7 @@ | |||
183 | 2029 | gpointer user_data) | 1944 | gpointer user_data) |
184 | 2030 | { | 1945 | { |
185 | 2031 | MidoriView* view = user_data; | 1946 | MidoriView* view = user_data; |
187 | 2032 | g_signal_emit (view, signals[NEW_WINDOW], 0, view->link_uri); | 1947 | g_signal_emit_by_name (view, "new-window", view->link_uri); |
188 | 2033 | } | 1948 | } |
189 | 2034 | 1949 | ||
190 | 2035 | static void | 1950 | static void |
191 | @@ -2057,7 +1972,7 @@ | |||
192 | 2057 | #endif | 1972 | #endif |
193 | 2058 | gboolean handled; | 1973 | gboolean handled; |
194 | 2059 | midori_download_set_type (download, type); | 1974 | midori_download_set_type (download, type); |
196 | 2060 | g_signal_emit (view, signals[DOWNLOAD_REQUESTED], 0, download, &handled); | 1975 | g_signal_emit_by_name (view, "download-requested", download, &handled); |
197 | 2061 | } | 1976 | } |
198 | 2062 | 1977 | ||
199 | 2063 | static void | 1978 | static void |
200 | @@ -2075,9 +1990,9 @@ | |||
201 | 2075 | MidoriView* view = user_data; | 1990 | MidoriView* view = user_data; |
202 | 2076 | gchar* uri = katze_object_get_string (view->hit_test, "image-uri"); | 1991 | gchar* uri = katze_object_get_string (view->hit_test, "image-uri"); |
203 | 2077 | if (view->open_new_pages_in == MIDORI_NEW_PAGE_WINDOW) | 1992 | if (view->open_new_pages_in == MIDORI_NEW_PAGE_WINDOW) |
205 | 2078 | g_signal_emit (view, signals[NEW_WINDOW], 0, uri); | 1993 | g_signal_emit_by_name (view, "new-window", uri); |
206 | 2079 | else | 1994 | else |
208 | 2080 | g_signal_emit (view, signals[NEW_TAB], 0, uri, | 1995 | g_signal_emit_by_name (view, "new-tab", uri, |
209 | 2081 | view->open_tabs_in_the_background); | 1996 | view->open_tabs_in_the_background); |
210 | 2082 | g_free (uri); | 1997 | g_free (uri); |
211 | 2083 | } | 1998 | } |
212 | @@ -2232,7 +2147,7 @@ | |||
213 | 2232 | gchar* uri = sokoke_magic_uri (data, TRUE, FALSE); | 2147 | gchar* uri = sokoke_magic_uri (data, TRUE, FALSE); |
214 | 2233 | if (!uri) | 2148 | if (!uri) |
215 | 2234 | uri = g_strdup (data); | 2149 | uri = g_strdup (data); |
217 | 2235 | g_signal_emit (view, signals[NEW_TAB], 0, uri, | 2150 | g_signal_emit_by_name (view, "new-tab", uri, |
218 | 2236 | view->open_tabs_in_the_background); | 2151 | view->open_tabs_in_the_background); |
219 | 2237 | g_free (uri); | 2152 | g_free (uri); |
220 | 2238 | } | 2153 | } |
221 | @@ -2242,7 +2157,7 @@ | |||
222 | 2242 | gpointer user_data) | 2157 | gpointer user_data) |
223 | 2243 | { | 2158 | { |
224 | 2244 | MidoriView* view = user_data; | 2159 | MidoriView* view = user_data; |
226 | 2245 | g_signal_emit (view, signals[NEW_TAB], 0, view->link_uri, | 2160 | g_signal_emit_by_name (view, "new-tab", view->link_uri, |
227 | 2246 | !view->open_tabs_in_the_background); | 2161 | !view->open_tabs_in_the_background); |
228 | 2247 | } | 2162 | } |
229 | 2248 | 2163 | ||
230 | @@ -2258,12 +2173,12 @@ | |||
231 | 2258 | gchar* uri = midori_uri_for_search (search, view->selected_text); | 2173 | gchar* uri = midori_uri_for_search (search, view->selected_text); |
232 | 2259 | 2174 | ||
233 | 2260 | if (view->open_new_pages_in == MIDORI_NEW_PAGE_WINDOW) | 2175 | if (view->open_new_pages_in == MIDORI_NEW_PAGE_WINDOW) |
235 | 2261 | g_signal_emit (view, signals[NEW_WINDOW], 0, uri); | 2176 | g_signal_emit_by_name (view, "new-window", uri); |
236 | 2262 | /* FIXME: need a way to override behavior (middle click) | 2177 | /* FIXME: need a way to override behavior (middle click) |
237 | 2263 | else if (view->open_new_pages_in == MIDORI_NEW_PAGE_CURRENT) | 2178 | else if (view->open_new_pages_in == MIDORI_NEW_PAGE_CURRENT) |
238 | 2264 | midori_view_set_uri (view, uri); */ | 2179 | midori_view_set_uri (view, uri); */ |
239 | 2265 | else | 2180 | else |
241 | 2266 | g_signal_emit (view, signals[NEW_TAB], 0, uri, | 2181 | g_signal_emit_by_name (view, "new-tab", uri, |
242 | 2267 | view->open_tabs_in_the_background); | 2182 | view->open_tabs_in_the_background); |
243 | 2268 | 2183 | ||
244 | 2269 | g_free (uri); | 2184 | g_free (uri); |
245 | @@ -2275,7 +2190,7 @@ | |||
246 | 2275 | gpointer user_data) | 2190 | gpointer user_data) |
247 | 2276 | { | 2191 | { |
248 | 2277 | MidoriView* view = user_data; | 2192 | MidoriView* view = user_data; |
250 | 2278 | g_signal_emit (view, signals[NEW_WINDOW], 0, | 2193 | g_signal_emit_by_name (view, "new-window", |
251 | 2279 | midori_view_get_display_uri (MIDORI_VIEW (view))); | 2194 | midori_view_get_display_uri (MIDORI_VIEW (view))); |
252 | 2280 | } | 2195 | } |
253 | 2281 | 2196 | ||
254 | @@ -2286,7 +2201,7 @@ | |||
255 | 2286 | { | 2201 | { |
256 | 2287 | MidoriView* view = user_data; | 2202 | MidoriView* view = user_data; |
257 | 2288 | WebKitWebFrame* web_frame = webkit_web_view_get_focused_frame (WEBKIT_WEB_VIEW (view->web_view)); | 2203 | WebKitWebFrame* web_frame = webkit_web_view_get_focused_frame (WEBKIT_WEB_VIEW (view->web_view)); |
259 | 2289 | g_signal_emit (view, signals[NEW_TAB], 0, | 2204 | g_signal_emit_by_name (view, "new-tab", |
260 | 2290 | webkit_web_frame_get_uri (web_frame), view->open_tabs_in_the_background); | 2205 | webkit_web_frame_get_uri (web_frame), view->open_tabs_in_the_background); |
261 | 2291 | } | 2206 | } |
262 | 2292 | #endif | 2207 | #endif |
263 | @@ -2675,7 +2590,7 @@ | |||
264 | 2675 | where = MIDORI_NEW_VIEW_WINDOW; | 2590 | where = MIDORI_NEW_VIEW_WINDOW; |
265 | 2676 | 2591 | ||
266 | 2677 | gtk_widget_show (new_view); | 2592 | gtk_widget_show (new_view); |
268 | 2678 | g_signal_emit (view, signals[NEW_VIEW], 0, new_view, where, FALSE); | 2593 | g_signal_emit_by_name (view, "new-view", new_view, where, FALSE); |
269 | 2679 | 2594 | ||
270 | 2680 | if (midori_tab_get_is_dialog (MIDORI_TAB (view))) | 2595 | if (midori_tab_get_is_dialog (MIDORI_TAB (view))) |
271 | 2681 | { | 2596 | { |
272 | @@ -2892,7 +2807,7 @@ | |||
273 | 2892 | "signal::failed", download_failed_cb, view, | 2807 | "signal::failed", download_failed_cb, view, |
274 | 2893 | NULL); | 2808 | NULL); |
275 | 2894 | */ | 2809 | */ |
277 | 2895 | g_signal_emit (view, signals[DOWNLOAD_REQUESTED], 0, download, &handled); | 2810 | g_signal_emit_by_name (view, "download-requested", download, &handled); |
278 | 2896 | #ifndef HAVE_WEBKIT2 | 2811 | #ifndef HAVE_WEBKIT2 |
279 | 2897 | return handled; | 2812 | return handled; |
280 | 2898 | #endif | 2813 | #endif |
281 | @@ -4400,7 +4315,7 @@ | |||
282 | 4400 | 4315 | ||
283 | 4401 | MidoriNewView where = MIDORI_NEW_VIEW_TAB; | 4316 | MidoriNewView where = MIDORI_NEW_VIEW_TAB; |
284 | 4402 | GtkWidget* new_view = midori_view_new_with_item (view->item, view->settings); | 4317 | GtkWidget* new_view = midori_view_new_with_item (view->item, view->settings); |
286 | 4403 | g_signal_emit (view, signals[NEW_VIEW], 0, new_view, where, TRUE); | 4318 | g_signal_emit_by_name (view, "new-view", new_view, where, TRUE); |
287 | 4404 | midori_view_set_uri (MIDORI_VIEW (new_view), midori_tab_get_uri (MIDORI_TAB (view))); | 4319 | midori_view_set_uri (MIDORI_VIEW (new_view), midori_tab_get_uri (MIDORI_TAB (view))); |
288 | 4405 | return new_view; | 4320 | return new_view; |
289 | 4406 | } | 4321 | } |
290 | 4407 | 4322 | ||
291 | === modified file 'midori/midori.vapi' | |||
292 | --- midori/midori.vapi 2013-10-09 20:05:29 +0000 | |||
293 | +++ midori/midori.vapi 2013-10-16 21:54:02 +0000 | |||
294 | @@ -205,7 +205,6 @@ | |||
295 | 205 | public GLib.Object net { get; } | 205 | public GLib.Object net { get; } |
296 | 206 | 206 | ||
297 | 207 | [HasEmitter] | 207 | [HasEmitter] |
298 | 208 | public signal bool download_requested (WebKit.Download download); | ||
299 | 209 | public signal bool about_content (string uri); | 208 | public signal bool about_content (string uri); |
300 | 210 | 209 | ||
301 | 211 | } | 210 | } |
This breaks the external download manager extension.
(The file is downloaded twice.)