Merge lp:~midori/midori/clippyBookmarks into lp:midori

Proposed by Christian Dywan on 2017-11-26
Status: Needs review
Proposed branch: lp:~midori/midori/clippyBookmarks
Merge into: lp:midori
Prerequisite: lp:~midori/midori/webKit2Gtk3only
Diff against target: 566 lines (+172/-198)
5 files modified
extensions/clippy.vala (+153/-0)
katze/katze.vapi (+6/-0)
midori/midori-browser.c (+6/-198)
midori/midori-extension.c (+2/-0)
midori/midori.vapi (+5/-0)
To merge this branch: bzr merge lp:~midori/midori/clippyBookmarks
Reviewer Review Type Date Requested Status
Midori Devs 2017-11-26 Pending
Review via email: mp+334283@code.launchpad.net

Commit message

Move bookmarkbar into clippy extension

Description of the change

I created a new (stock) extension, Clippy, which implements the bookmarks toolbar (and potentially all of the bookmark features in the future).

To post a comment you must log in.

Unmerged revisions

7174. By Christian Dywan on 2017-11-26

Move bookmarkbar into clippy extension

7173. By Christian Dywan on 2017-11-26

Drop pass-through-console flag

7172. By Christian Dywan on 2017-11-25

Unconditionally include WebKit2 headers

7171. By Christian Dywan on 2017-11-07

Drop non-WebKit2 website saving code path

7170. By Christian Dywan on 2017-11-06

Non-conditional skipping of non-WebKit2 extensions

7169. By Christian Dywan on 2017-11-06

Drop non-WebKit2/ non-libnotify code paths

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added file 'extensions/clippy.vala'
2--- extensions/clippy.vala 1970-01-01 00:00:00 +0000
3+++ extensions/clippy.vala 2017-11-26 10:03:39 +0000
4@@ -0,0 +1,153 @@
5+/*
6+ Copyright (C) 2009-2017 Christian Dywan <christian@twotoasts.de>
7+
8+ This library is free software; you can redistribute it and/or
9+ modify it under the terms of the GNU Lesser General Public
10+ License as published by the Free Software Foundation; either
11+ version 2.1 of the License, or (at your option) any later version.
12+
13+ See the file COPYING for the full license text.
14+*/
15+
16+namespace Bookmarks {
17+ private class Toolbar : Gtk.Toolbar {
18+ Midori.Browser browser;
19+ bool populating;
20+
21+ public Toolbar (Midori.Browser browser) {
22+ set_icon_size (Gtk.IconSize.MENU);
23+ set_style (Gtk.ToolbarStyle.BOTH_HORIZ);
24+
25+ this.browser = browser;
26+ browser.bookmarks.add_item.connect_after (item_added);
27+ browser.bookmarks.update_item.connect_after (item_updated);
28+ browser.bookmarks.remove_item.connect_after (item_removed);
29+ browser.settings.notify["show-bookmarkbar"].connect (settings_updated);
30+ browser.settings.notify_property ("show-bookmarkbar");
31+ var action_group = browser.get_action_group ();
32+ var action = action_group.get_action ("Bookmarkbar") as Gtk.ToggleAction;
33+ action.toggled.connect(toggled);
34+ browser.window_state_event.connect (window_state_changed);
35+ }
36+
37+ void toggled (Gtk.ToggleAction action) {
38+ browser.settings.show_bookmarkbar = action.get_active ();
39+ }
40+
41+ bool window_state_changed (Gdk.EventWindowState event) {
42+ bool is_fullscreen = (event.new_window_state & Gdk.WindowState.FULLSCREEN) != 0;
43+ visible = !is_fullscreen && browser.settings.show_bookmarkbar;
44+ return false;
45+ }
46+
47+ void settings_updated (GLib.ParamSpec pspec) {
48+ var action_group = browser.get_action_group ();
49+ var action = action_group.get_action ("Bookmarkbar") as Gtk.ToggleAction;
50+ action.set_active (browser.settings.show_bookmarkbar);
51+ if (!browser.settings.show_bookmarkbar)
52+ clear ();
53+ else
54+ populate ();
55+ }
56+
57+ void item_added (GLib.Object item) {
58+ if (get_visible ())
59+ populate ();
60+ else if ((item as Katze.Item).get_meta_boolean ("toolbar"))
61+ browser.activate_action ("Bookmarkbar");
62+ Midori.Browser.update_history ((Katze.Item)item, "bookmark", "created");
63+ }
64+
65+ void item_updated (GLib.Object item) {
66+ if (get_visible ())
67+ populate ();
68+ Midori.Browser.update_history ((Katze.Item)item, "bookmark", "modify");
69+ }
70+
71+ void item_removed (GLib.Object item) {
72+ if (get_visible ())
73+ populate ();
74+ Midori.Browser.update_history ((Katze.Item)item, "bookmark", "delete");
75+ }
76+
77+ void populate () {
78+ if (!populating) {
79+ populating = true;
80+ GLib.Idle.add (populate_idle);
81+ }
82+ }
83+
84+ bool populate_idle () {
85+ if (populating) {
86+ clear ();
87+ /* Use a dummy to ensure height of the toolbar */
88+ insert (new Gtk.SeparatorToolItem (), -1);
89+ var array = (browser.bookmarks as Midori.BookmarksDb).query_recursive (
90+ "id, parentid, title, uri, desc, app, toolbar, pos_panel, pos_bar",
91+ "toolbar = 1", null, false);
92+ if (array != null) {
93+ foreach (var item in array.get_items ())
94+ insert_item (item);
95+ }
96+
97+ var action_group = browser.get_action_group ();
98+ var action = action_group.get_action ("Bookmarkbar") as Gtk.ToggleAction;
99+ visible = action.get_active ();
100+ populating = false;
101+ }
102+ return false;
103+ }
104+
105+ void insert_item (GLib.Object? item) {
106+ var action_group = browser.get_action_group ();
107+ var action = action_group.get_action ("Bookmarks") as Katze.ArrayAction;
108+ var toolitem = action.create_tool_item_for ((Katze.Item)item);
109+ toolitem.ref (); // FIXME: Why is this necessary?
110+ if (!(item is Katze.Item)) // separator
111+ toolitem.set_use_drag_window (true);
112+ toolitem.show ();
113+ insert (toolitem, -1);
114+ }
115+
116+ void clear () {
117+ hide ();
118+ foreach (var toolitem in get_children ())
119+ toolitem.destroy ();
120+ }
121+ }
122+
123+ private class Manager : Midori.Extension {
124+ void browser_added (Midori.Browser browser) {
125+ browser.notify["bookmarks"].connect (bookmarks_changed);
126+ browser.notify_property ("bookmarks");
127+ }
128+
129+ void bookmarks_changed (GLib.Object object, GLib.ParamSpec pspec) {
130+ var browser = object as Midori.Browser;
131+ var action_group = browser.get_action_group ();
132+ var action = action_group.get_action ("Bookmarkbar") as Gtk.ToggleAction;
133+ action.visible = browser.parent == null && browser.bookmarks != null;
134+ if (action.visible)
135+ browser.add_toolbar (new Toolbar (browser));
136+ }
137+
138+ void activated (Midori.App app) {
139+ foreach (var browser in app.get_browsers ())
140+ browser_added (browser);
141+ app.add_browser.connect (browser_added);
142+ }
143+
144+ internal Manager () {
145+ GLib.Object (name: "Bookmark Manager",
146+ description: "Manage bookmarks",
147+ version: "0.1" + Midori.VERSION_SUFFIX,
148+ authors: "Christian Dywan <christian@twotoasts.de>");
149+
150+ activate.connect (activated);
151+ }
152+ }
153+}
154+
155+public Midori.Extension extension_init () {
156+ return new Bookmarks.Manager ();
157+}
158
159=== modified file 'katze/katze.vapi'
160--- katze/katze.vapi 2014-02-22 14:06:19 +0000
161+++ katze/katze.vapi 2017-11-26 10:03:39 +0000
162@@ -17,6 +17,7 @@
163 public class Array : Katze.Item {
164 public Array (GLib.Type type);
165 public signal void add_item (GLib.Object item);
166+ public signal void update_item (GLib.Object item);
167 public signal void remove_item (GLib.Object item);
168 public uint get_length ();
169 public GLib.List<unowned Item> get_items ();
170@@ -24,6 +25,11 @@
171 }
172
173 [CCode (cheader_filename = "katze/katze.h")]
174+ public class ArrayAction : Gtk.Action {
175+ public Gtk.ToolItem create_tool_item_for (Katze.Item item);
176+ }
177+
178+ [CCode (cheader_filename = "katze/katze.h")]
179 public class Item : GLib.Object {
180 public Item ();
181 public string? uri { get; set; }
182
183=== modified file 'midori/midori-browser.c'
184--- midori/midori-browser.c 2017-11-26 10:03:39 +0000
185+++ midori/midori-browser.c 2017-11-26 10:03:39 +0000
186@@ -66,7 +66,6 @@
187 GtkWidget* menubar;
188 GtkWidget* throbber;
189 GtkWidget* navigationbar;
190- GtkWidget* bookmarkbar;
191
192 GtkWidget* panel;
193 GtkWidget* notebook;
194@@ -174,14 +173,6 @@
195 KatzeItem* item);
196
197 static void
198-midori_bookmarkbar_populate (MidoriBrowser* browser);
199-static void
200-midori_bookmarkbar_populate_idle (MidoriBrowser* browser);
201-
202-static void
203-midori_bookmarkbar_clear (GtkWidget* toolbar);
204-
205-static void
206 _midori_browser_set_toolbar_style (MidoriBrowser* browser,
207 MidoriToolbarStyle toolbar_style);
208
209@@ -299,6 +290,7 @@
210
211 _action_set_sensitive (browser, "AddSpeedDial", !midori_view_is_blank (view));
212 _action_set_sensitive (browser, "BookmarkAdd", !midori_view_is_blank (view));
213+ _action_set_sensitive (browser, "BookmarkFolderAdd", !midori_view_is_blank (view));
214 _action_set_sensitive (browser, "MailTo", !midori_view_is_blank (view));
215 _action_set_sensitive (browser, "SaveAs", midori_tab_can_save (MIDORI_TAB (view)));
216 _action_set_sensitive (browser, "ZoomIn", midori_view_can_zoom_in (view));
217@@ -1650,7 +1642,6 @@
218 "show-tabs", FALSE,
219 NULL);
220 sokoke_widget_set_visible (new_browser->menubar, FALSE);
221- sokoke_widget_set_visible (new_browser->bookmarkbar, FALSE);
222 sokoke_widget_set_visible (new_browser->statusbar, FALSE);
223 _action_set_visible (new_browser, "CompactMenu", FALSE);
224 _action_set_sensitive (new_browser, "Location", FALSE);
225@@ -3344,15 +3335,6 @@
226 }
227
228 static void
229-_action_bookmarkbar_activate (GtkToggleAction* action,
230- MidoriBrowser* browser)
231-{
232- gboolean active = gtk_toggle_action_get_active (action);
233- g_object_set (browser->settings, "show-bookmarkbar", active, NULL);
234- sokoke_widget_set_visible (browser->bookmarkbar, active);
235-}
236-
237-static void
238 _action_statusbar_activate (GtkToggleAction* action,
239 MidoriBrowser* browser)
240 {
241@@ -3539,9 +3521,6 @@
242 if (katze_object_get_boolean (G_OBJECT (browser->settings), "show-panel"))
243 gtk_widget_show (browser->panel);
244
245- if (katze_object_get_boolean (G_OBJECT (browser->settings), "show-bookmarkbar"))
246- gtk_widget_show (browser->bookmarkbar);
247-
248 if (browser->show_navigationbar)
249 gtk_widget_show (browser->navigationbar);
250
251@@ -3555,7 +3534,6 @@
252 {
253 gtk_widget_hide (browser->menubar);
254 gtk_widget_hide (browser->panel);
255- gtk_widget_hide (browser->bookmarkbar);
256 gtk_widget_hide (browser->navigationbar);
257 gtk_widget_hide (browser->statusbar);
258 midori_notebook_set_labels_visible (MIDORI_NOTEBOOK (browser->notebook), FALSE);
259@@ -5303,7 +5281,7 @@
260 FALSE },
261 { "Bookmarkbar", NULL,
262 N_("_Bookmarkbar"), "",
263- NULL, G_CALLBACK (_action_bookmarkbar_activate),
264+ NULL, NULL,
265 FALSE },
266 { "Statusbar", NULL,
267 N_("_Statusbar"), "<Ctrl>j",
268@@ -5734,21 +5712,6 @@
269 }
270 }
271
272-static gboolean
273-midori_browser_idle (gpointer data)
274-{
275- MidoriBrowser* browser = MIDORI_BROWSER (data);
276-
277- if (browser->bookmarkbar_populate)
278- {
279- midori_bookmarkbar_populate_idle (browser);
280-
281- browser->bookmarkbar_populate = FALSE;
282- }
283-
284- return FALSE;
285-}
286-
287 static void
288 midori_browser_init (MidoriBrowser* browser)
289 {
290@@ -6022,9 +5985,10 @@
291
292 _action_set_visible (browser, "Bookmarks", browser->bookmarks != NULL);
293 _action_set_visible (browser, "BookmarkAdd", browser->bookmarks != NULL);
294+ _action_set_visible (browser, "BookmarkFolderAdd", browser->bookmarks != NULL);
295 _action_set_visible (browser, "BookmarksImport", browser->bookmarks != NULL);
296 _action_set_visible (browser, "BookmarksExport", browser->bookmarks != NULL);
297- _action_set_visible (browser, "Bookmarkbar", browser->bookmarks != NULL);
298+ _action_set_visible (browser, "Bookmarkbar", FALSE);
299 _action_set_visible (browser, "Trash", browser->trash != NULL);
300 _action_set_visible (browser, "UndoTabClose", browser->trash != NULL);
301
302@@ -6035,17 +5999,6 @@
303 g_signal_connect (browser, "context-menu",
304 G_CALLBACK (midori_browser_toolbar_context_menu_cb), browser);
305
306- /* Bookmarkbar */
307- browser->bookmarkbar = gtk_toolbar_new ();
308- gtk_widget_set_name (browser->bookmarkbar, "MidoriBookmarkbar");
309- gtk_toolbar_set_icon_size (GTK_TOOLBAR (browser->bookmarkbar),
310- GTK_ICON_SIZE_MENU);
311- gtk_toolbar_set_style (GTK_TOOLBAR (browser->bookmarkbar),
312- GTK_TOOLBAR_BOTH_HORIZ);
313- midori_window_add_toolbar (MIDORI_WINDOW (browser), browser->bookmarkbar);
314- g_signal_connect (browser->bookmarkbar, "popup-context-menu",
315- G_CALLBACK (midori_browser_toolbar_popup_context_menu_cb), browser);
316-
317 /* Create the panel */
318 hpaned = gtk_hpaned_new ();
319 g_signal_connect (hpaned, "notify::position",
320@@ -6156,8 +6109,6 @@
321 katze_object_assign (browser->history_database, NULL);
322 katze_object_assign (browser->dial, NULL);
323
324- g_idle_remove_by_data (browser);
325-
326 G_OBJECT_CLASS (midori_browser_parent_class)->finalize (object);
327 }
328
329@@ -6285,7 +6236,7 @@
330 gboolean compact_sidepanel;
331 gboolean right_align_sidepanel, open_panels_in_windows;
332 gint last_panel_position, last_panel_page;
333- gboolean show_menubar, show_bookmarkbar;
334+ gboolean show_menubar;
335 gboolean show_panel;
336 MidoriToolbarStyle toolbar_style;
337 gchar* toolbar_items;
338@@ -6304,7 +6255,6 @@
339 "last-panel-page", &last_panel_page,
340 "show-menubar", &show_menubar,
341 "show-navigationbar", &browser->show_navigationbar,
342- "show-bookmarkbar", &show_bookmarkbar,
343 "show-panel", &show_panel,
344 "show-statusbar", &browser->show_statusbar,
345 "toolbar-style", &toolbar_style,
346@@ -6385,8 +6335,6 @@
347 _action_set_active (browser, "Menubar", show_menubar);
348 if (GTK_IS_TOOLBAR (browser->navigationbar))
349 _action_set_active (browser, "Navigationbar", browser->show_navigationbar);
350- _action_set_active (browser, "Bookmarkbar", show_bookmarkbar
351- && browser->bookmarks != NULL);
352 _action_set_active (browser, "Panel", show_panel);
353 _action_set_active (browser, "Statusbar", browser->show_statusbar);
354
355@@ -6433,10 +6381,6 @@
356 if (GTK_IS_TOOLBAR (browser->navigationbar))
357 _action_set_active (browser, "Navigationbar", g_value_get_boolean (&value));
358 }
359- else if (name == g_intern_string ("show-bookmarkbar"))
360- {
361- _action_set_active (browser, "Bookmarkbar", g_value_get_boolean (&value));
362- }
363 else if (name == g_intern_string ("show-statusbar"))
364 {
365 browser->show_statusbar = g_value_get_boolean (&value);
366@@ -6465,138 +6409,13 @@
367 }
368
369 static void
370-midori_bookmarkbar_insert_item (GtkWidget* toolbar,
371- KatzeItem* item)
372-{
373- MidoriBrowser* browser = midori_browser_get_for_widget (toolbar);
374- GtkAction* action = _action_by_name (browser, "Bookmarks");
375- GtkToolItem* toolitem = katze_array_action_create_tool_item_for (
376- KATZE_ARRAY_ACTION (action), item);
377- g_object_set_data (G_OBJECT (toolitem), "KatzeItem", item);
378-
379- if (!KATZE_IS_ITEM (item)) /* Separator */
380- gtk_tool_item_set_use_drag_window (toolitem, TRUE);
381-
382- gtk_widget_show (GTK_WIDGET (toolitem));
383- gtk_toolbar_insert (GTK_TOOLBAR (toolbar), toolitem, -1);
384-}
385-
386-static void
387-midori_bookmarkbar_add_item_cb (KatzeArray* bookmarks,
388- KatzeItem* item,
389- MidoriBrowser* browser)
390-{
391- if (gtk_widget_get_visible (browser->bookmarkbar))
392- midori_bookmarkbar_populate (browser);
393- else if (katze_item_get_meta_boolean (item, "toolbar"))
394- _action_set_active (browser, "Bookmarkbar", TRUE);
395- midori_browser_update_history (item, "bookmark", "created");
396-}
397-
398-static void
399-midori_bookmarkbar_update_item_cb (KatzeArray* bookmarks,
400- KatzeItem* item,
401- MidoriBrowser* browser)
402-{
403- if (gtk_widget_get_visible (browser->bookmarkbar))
404- midori_bookmarkbar_populate (browser);
405- midori_browser_update_history (item, "bookmark", "modify");
406-}
407-
408-static void
409-midori_bookmarkbar_remove_item_cb (KatzeArray* bookmarks,
410- KatzeItem* item,
411- MidoriBrowser* browser)
412-{
413- if (gtk_widget_get_visible (browser->bookmarkbar))
414- midori_bookmarkbar_populate (browser);
415- midori_browser_update_history (item, "bookmark", "delete");
416-}
417-
418-static void
419-midori_bookmarkbar_populate (MidoriBrowser* browser)
420-{
421- if (browser->bookmarkbar_populate)
422- return;
423-
424- g_idle_add (midori_browser_idle, browser);
425- browser->bookmarkbar_populate = TRUE;
426-}
427-
428-static void
429-midori_bookmarkbar_populate_idle (MidoriBrowser* browser)
430-{
431- KatzeArray* array;
432- KatzeItem* item;
433-
434- midori_bookmarkbar_clear (browser->bookmarkbar);
435-
436- /* Use a dummy to ensure height of the toolbar */
437- gtk_toolbar_insert (GTK_TOOLBAR (browser->bookmarkbar),
438- gtk_separator_tool_item_new (), -1);
439-
440- array = midori_bookmarks_db_query_recursive (browser->bookmarks,
441- "id, parentid, title, uri, desc, app, toolbar, pos_panel, pos_bar", "toolbar = 1", NULL, FALSE);
442- if (!array)
443- {
444- _action_set_sensitive (browser, "BookmarkAdd", FALSE);
445- _action_set_sensitive (browser, "BookmarkFolderAdd", FALSE);
446- return;
447- }
448-
449- KATZE_ARRAY_FOREACH_ITEM (item, array)
450- {
451- midori_bookmarkbar_insert_item (browser->bookmarkbar, item);
452- }
453- _action_set_sensitive (browser, "BookmarkAdd", TRUE);
454- _action_set_sensitive (browser, "BookmarkFolderAdd", TRUE);
455-}
456-
457-static void
458-midori_bookmarkbar_clear (GtkWidget* toolbar)
459-{
460- GList* children = gtk_container_get_children (GTK_CONTAINER (toolbar));
461- while (children != NULL)
462- {
463- gtk_widget_destroy (children->data);
464- children = g_list_next (children);
465- }
466-}
467-
468-static void
469-midori_browser_show_bookmarkbar_notify_value_cb (MidoriWebSettings* settings,
470- GParamSpec* pspec,
471- MidoriBrowser* browser)
472-{
473- if (!katze_object_get_boolean (browser->settings, "show-bookmarkbar"))
474- midori_bookmarkbar_clear (browser->bookmarkbar);
475- else
476- midori_bookmarkbar_populate (browser);
477-}
478-
479-static void
480 midori_browser_set_bookmarks (MidoriBrowser* browser,
481 MidoriBookmarksDb* bookmarks)
482 {
483- MidoriWebSettings* settings;
484-
485- if (browser->bookmarks != NULL)
486- {
487- g_signal_handlers_disconnect_by_func (browser->bookmarks,
488- midori_bookmarkbar_add_item_cb, browser);
489- g_signal_handlers_disconnect_by_func (browser->bookmarks,
490- midori_bookmarkbar_update_item_cb, browser);
491- g_signal_handlers_disconnect_by_func (browser->bookmarks,
492- midori_bookmarkbar_remove_item_cb, browser);
493- }
494-
495 g_object_set (G_OBJECT (_action_by_name (browser, "Bookmarks")),
496 "array", KATZE_ARRAY (bookmarks),
497 NULL);
498
499- settings = midori_browser_get_settings (browser);
500- g_signal_handlers_disconnect_by_func (settings,
501- midori_browser_show_bookmarkbar_notify_value_cb, browser);
502 katze_object_assign (browser->bookmarks, bookmarks);
503
504 _action_set_visible (browser, "Bookmarks", bookmarks != NULL);
505@@ -6609,25 +6428,14 @@
506 gtk_widget_show (proxies->data);
507 }
508 _action_set_visible (browser, "BookmarkAdd", bookmarks != NULL);
509+ _action_set_visible (browser, "BookmarkFolderAdd", bookmarks != NULL);
510 _action_set_visible (browser, "BookmarksImport", bookmarks != NULL);
511 _action_set_visible (browser, "BookmarksExport", bookmarks != NULL);
512- _action_set_visible (browser, "Bookmarkbar", bookmarks != NULL);
513
514 if (!bookmarks)
515 return;
516
517- if (katze_object_get_boolean (browser->settings, "show-bookmarkbar"))
518- _action_set_active (browser, "Bookmarkbar", TRUE);
519 g_object_ref (bookmarks);
520- g_signal_connect (settings, "notify::show-bookmarkbar",
521- G_CALLBACK (midori_browser_show_bookmarkbar_notify_value_cb), browser);
522- g_object_notify (G_OBJECT (settings), "show-bookmarkbar");
523- g_signal_connect_after (bookmarks, "add-item",
524- G_CALLBACK (midori_bookmarkbar_add_item_cb), browser);
525- g_signal_connect_after (bookmarks, "update-item",
526- G_CALLBACK (midori_bookmarkbar_update_item_cb), browser);
527- g_signal_connect_after (bookmarks, "remove-item",
528- G_CALLBACK (midori_bookmarkbar_remove_item_cb), browser);
529 }
530
531 static void
532
533=== modified file 'midori/midori-extension.c'
534--- midori/midori-extension.c 2016-01-26 05:36:38 +0000
535+++ midori/midori-extension.c 2017-11-26 10:03:39 +0000
536@@ -562,6 +562,7 @@
537 g_assert (midori_extension_activate_gracefully (app, extension_path, "libtabby." G_MODULE_SUFFIX, activate));
538 g_assert (midori_extension_activate_gracefully (app, extension_path, "libopen-with." G_MODULE_SUFFIX, activate));
539 g_assert (midori_extension_activate_gracefully (app, extension_path, "libflummi." G_MODULE_SUFFIX, activate));
540+ g_assert (midori_extension_activate_gracefully (app, extension_path, "libclippy." G_MODULE_SUFFIX, activate));
541
542 gint i = 0;
543 const gchar* filename;
544@@ -706,6 +707,7 @@
545 && strcmp (filename, "libabout." G_MODULE_SUFFIX)
546 && strcmp (filename, "libtabby." G_MODULE_SUFFIX)
547 && strcmp (filename, "libopen-with." G_MODULE_SUFFIX)
548+ && strcmp (filename, "libclippy." G_MODULE_SUFFIX)
549 && strcmp (filename, "libflummi." G_MODULE_SUFFIX))
550 katze_array_add_item (extensions, extension);
551
552
553=== modified file 'midori/midori.vapi'
554--- midori/midori.vapi 2015-05-24 00:19:21 +0000
555+++ midori/midori.vapi 2017-11-26 10:03:39 +0000
556@@ -22,6 +22,11 @@
557 [CCode (array_length = false)] string[]? uris, [CCode (array_length = false)] string[]? commands, int reset, string? block);
558 public static void normal_app_on_quit (App app);
559
560+ [CCode (type_id = "TYPE_MIDORI_BOOKMARKS_DB", cheader_filename = "midori/midori-bookmarks-db.h")]
561+ public class BookmarksDb : Katze.Array {
562+ public Katze.Array? query_recursive (string fields, string condition, string? value, bool recursive);
563+ }
564+
565 [CCode (cheader_filename = "midori/midori-array.h")]
566 public static bool array_from_file (Katze.Array array, string filename, string format) throws GLib.Error;
567

Subscribers

People subscribed via source and target branches

to all changes: