Merge lp:~aauzi/midori/fix-1177553-2 into lp:midori

Proposed by André Auzi
Status: Merged
Approved by: Cris Dywan
Approved revision: 6222
Merged at revision: 6243
Proposed branch: lp:~aauzi/midori/fix-1177553-2
Merge into: lp:midori
Diff against target: 146 lines (+57/-11)
2 files modified
midori/midori-browser.c (+11/-6)
panels/midori-bookmarks.c (+46/-5)
To merge this branch: bzr merge lp:~aauzi/midori/fix-1177553-2
Reviewer Review Type Date Requested Status
Cris Dywan Approve
Midori Devs Pending
Review via email: mp+170704@code.launchpad.net

Commit message

Take current selection into account for bookmark folders when adding/editing bookmark

Description of the change

in midori_bookmarks_add_clicked_cb of panels/midori-bookmarks.c:
 uses the current selection to find the folder a bookmark or folder is added into and passes it as a parameter of midori_browser_edit_bookmark_dialog_new

in midori_browser_edit_bookmark_dialog_new of midori/midori-browser.c:
  when a new bookmark or folder is created initializes its "parentid" meta data with the id of the given bookmark_or_parent parameter.
  call midori_bookmark_folder_button_new without the new_bookmark parameter.
  The parameter 'parentid' corresponds to the newly created or edited bookmarks "parentid" meta data.

in midori_bookmark_folder_button_new:
  remove the case 'new_bookmark, ie. select the given parentid in any case

in _action_bookmarks_import_activate:
  call midori_bookmark_folder_button_new without the new_bookmark parameter.
  The parameter 'parentid' corresponds to the "Bookmarks" (root) folder

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

Looks sensible to me.

review: Approve
Revision history for this message
Cris Dywan (kalikiana) wrote :

I do notice something when creating a new folder:
GLib-CRITICAL **: g_str_has_prefix: assertion `str != NULL' failed

I'm uncertain if this is due to this change or not. I'd appreciate if somebody else can double-check.

Revision history for this message
André Auzi (aauzi) wrote :

Le Sat, 29 Jun 2013 18:36:26 -0000,
Christian Dywan <email address hidden> a écrit :

> I do notice something when creating a new folder:
> GLib-CRITICAL **: g_str_has_prefix: assertion `str != NULL' failed
>
> I'm uncertain if this is due to this change or not. I'd appreciate if
> somebody else can double-check.

Hi kalikiana,

I've checked lp:midori (revno: 6238), it does something very similar:

(midori4:8087): GLib-CRITICAL **: g_str_has_prefix: assertion `str !=
NULL' failed

Revision history for this message
André Auzi (aauzi) wrote :
Download full text (10.7 KiB)

> Le Sat, 29 Jun 2013 18:36:26 -0000,
> Christian Dywan <email address hidden> a écrit :
>
> > I do notice something when creating a new folder:
> > GLib-CRITICAL **: g_str_has_prefix: assertion `str != NULL' failed
> >
> > I'm uncertain if this is due to this change or not. I'd appreciate if
> > somebody else can double-check.
>
> Hi kalikiana,
>
> I've checked lp:midori (revno: 6238), it does something very similar:
>
> (midori4:8087): GLib-CRITICAL **: g_str_has_prefix: assertion `str !=
> NULL' failed

The problem actually comes from the midori_browser_update_history that's done in midori_browser_edit_bookmark_dialog_new.

It calls the function zeitgeist_manifestation_for_uri with the created folder's uri, which is a NULL string.

I wonder if midori_browser_update_history must be done in case of folder creation.

I wonder if it must be done in any case.

Here is the backtrace.

-------------------------------------------------------------------------------
env G_DEBUG=fatal-criticals _build/default/midori/midori -g

** (midori:8329): WARNING **: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-06tODYGRbI: Connexion refusée
Launching command: '/usr/bin/gdb' --batch -ex 'set print thread-events off' -ex run -ex 'set logging on /run/user/1000/midori/gdb.bt' -ex 'bt' --return-child-result --args _build/default/midori/midori
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".
warning: cannot close "/usr/lib/gio/modules/libgvfsdbus.so": Opération invalide
warning: cannot close "/lib/libgvfscommon.so.0": Opération invalide
warning: cannot close "/lib/libbluray.so.1": Opération invalide

** (midori:8332): WARNING **: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-06tODYGRbI: Connexion refusée
warning: cannot close "/usr/lib/gio/modules/libgiognomeproxy.so": Opération invalide
warning: cannot close "/usr/lib/gio/modules/libgiolibproxy.so": Opération invalide
warning: cannot close "/lib/libproxy.so.1": Opération invalide
warning: cannot close "/lib/libmodman.so.1": Opération invalide
warning: cannot close "/usr/lib/gio/modules/libgsettingsgconfbackend.so": Opération invalide
warning: cannot close "/lib/libgconf-2.so.4": Opération invalide
Detaching after fork from child process 8339.
warning: cannot close "/usr/lib/gio/modules/libgiognutls.so": Opération invalide
warning: cannot close "/lib/libgnutls.so.26": Opération invalide
warning: cannot close "/lib/libtasn1.so.3": Opération invalide
warning: cannot close "/lib/libfam.so.0": Opération invalide
Detaching after fork from child process 8345.
java version "1.7.0_03"
OpenJDK Runtime Environment (fedora-2.3.9.8.fc18-i386)
OpenJDK Client VM (build 23.7-b01, mixed mode, sharing)

(midori4:8332): Gtk-WARNING **: Error loading theme icon 'text-x-javascript' for stock: L'icône « text-x-javascript » n'est pas présente dans le thème

(midori4:8332): Gtk-WARNING **: Can't set a parent on a toplevel widget

(midori4:8332): GLib-CRITICAL **: g_str_has_prefix: assertion `str != NULL' failed

Program received signal SIGTRAP, Trace/breakpoint trap.
g_logv (log_domain=log_domain@entry=0x41ea5aae "...

Revision history for this message
Cris Dywan (kalikiana) wrote :

I'll propose a separate fix for the g_str_has_prefix issue. This is good to go then. Thanks!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'midori/midori-browser.c'
--- midori/midori-browser.c 2013-06-20 20:07:11 +0000
+++ midori/midori-browser.c 2013-06-20 21:18:27 +0000
@@ -818,7 +818,6 @@
818818
819static GtkWidget*819static GtkWidget*
820midori_bookmark_folder_button_new (KatzeArray* array,820midori_bookmark_folder_button_new (KatzeArray* array,
821 gboolean new_bookmark,
822 gint64 selected,821 gint64 selected,
823 gint64 parentid)822 gint64 parentid)
824{823{
@@ -856,7 +855,7 @@
856 gtk_list_store_insert_with_values (model, NULL, G_MAXINT,855 gtk_list_store_insert_with_values (model, NULL, G_MAXINT,
857 0, name, 1, PANGO_ELLIPSIZE_END, 2, id, -1);856 0, name, 1, PANGO_ELLIPSIZE_END, 2, id, -1);
858857
859 if (!new_bookmark && id == parentid)858 if (id == parentid)
860 gtk_combo_box_set_active (GTK_COMBO_BOX (combo), n);859 gtk_combo_box_set_active (GTK_COMBO_BOX (combo), n);
861 n++;860 n++;
862 }861 }
@@ -910,11 +909,12 @@
910/* Private function, used by MidoriBookmarks and MidoriHistory */909/* Private function, used by MidoriBookmarks and MidoriHistory */
911/* static */ gboolean910/* static */ gboolean
912midori_browser_edit_bookmark_dialog_new (MidoriBrowser* browser,911midori_browser_edit_bookmark_dialog_new (MidoriBrowser* browser,
913 KatzeItem* bookmark,912 KatzeItem* bookmark_or_parent,
914 gboolean new_bookmark,913 gboolean new_bookmark,
915 gboolean is_folder,914 gboolean is_folder,
916 GtkWidget* proxy)915 GtkWidget* proxy)
917{916{
917 KatzeItem* bookmark = bookmark_or_parent;
918 const gchar* title;918 const gchar* title;
919 GtkWidget* dialog;919 GtkWidget* dialog;
920 GtkWidget* content_area;920 GtkWidget* content_area;
@@ -968,7 +968,7 @@
968 gtk_window_set_icon_name (GTK_WINDOW (dialog),968 gtk_window_set_icon_name (GTK_WINDOW (dialog),
969 new_bookmark ? GTK_STOCK_ADD : GTK_STOCK_REMOVE);969 new_bookmark ? GTK_STOCK_ADD : GTK_STOCK_REMOVE);
970970
971 if (!bookmark)971 if (new_bookmark)
972 {972 {
973 view = midori_browser_get_current_tab (browser);973 view = midori_browser_get_current_tab (browser);
974 if (is_folder)974 if (is_folder)
@@ -981,6 +981,11 @@
981 bookmark = g_object_new (KATZE_TYPE_ITEM,981 bookmark = g_object_new (KATZE_TYPE_ITEM,
982 "uri", midori_view_get_display_uri (MIDORI_VIEW (view)),982 "uri", midori_view_get_display_uri (MIDORI_VIEW (view)),
983 "name", midori_view_get_display_title (MIDORI_VIEW (view)), NULL);983 "name", midori_view_get_display_title (MIDORI_VIEW (view)), NULL);
984 katze_item_set_meta_integer (
985 bookmark, "parentid",
986 (!bookmark_or_parent
987 ? 0
988 : katze_item_get_meta_integer (bookmark_or_parent, "id")));
984 }989 }
985990
986 entry_title = gtk_entry_new ();991 entry_title = gtk_entry_new ();
@@ -1008,7 +1013,7 @@
1008 }1013 }
10091014
1010 combo_folder = midori_bookmark_folder_button_new (browser->bookmarks,1015 combo_folder = midori_bookmark_folder_button_new (browser->bookmarks,
1011 new_bookmark, katze_item_get_meta_integer (bookmark, "id"),1016 katze_item_get_meta_integer (bookmark, "id"),
1012 katze_item_get_meta_integer (bookmark, "parentid"));1017 katze_item_get_meta_integer (bookmark, "parentid"));
1013 gtk_box_pack_start (GTK_BOX (vbox), combo_folder, FALSE, FALSE, 0);1018 gtk_box_pack_start (GTK_BOX (vbox), combo_folder, FALSE, FALSE, 0);
10141019
@@ -4426,7 +4431,7 @@
4426 gtk_widget_show_all (hbox);4431 gtk_widget_show_all (hbox);
44274432
4428 combobox_folder = midori_bookmark_folder_button_new (browser->bookmarks,4433 combobox_folder = midori_bookmark_folder_button_new (browser->bookmarks,
4429 FALSE, 0, 0);4434 0, 0);
4430 gtk_container_add (GTK_CONTAINER (content_area), combobox_folder);4435 gtk_container_add (GTK_CONTAINER (content_area), combobox_folder);
44314436
4432 gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);4437 gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
44334438
=== modified file 'panels/midori-bookmarks.c'
--- panels/midori-bookmarks.c 2013-06-13 16:53:19 +0000
+++ panels/midori-bookmarks.c 2013-06-20 21:18:27 +0000
@@ -27,7 +27,7 @@
2727
28gboolean28gboolean
29midori_browser_edit_bookmark_dialog_new (MidoriBrowser* browser,29midori_browser_edit_bookmark_dialog_new (MidoriBrowser* browser,
30 KatzeItem* bookmark,30 KatzeItem* bookmark_or_parent,
31 gboolean new_bookmark,31 gboolean new_bookmark,
32 gboolean is_folder,32 gboolean is_folder,
33 GtkWidget* proxy);33 GtkWidget* proxy);
@@ -390,14 +390,55 @@
390}390}
391391
392static void392static void
393midori_bookmarks_add_clicked_cb (GtkWidget* toolitem)393midori_bookmarks_add_clicked_cb (GtkWidget* toolitem,
394 MidoriBookmarks* bookmarks)
394{395{
395 MidoriBrowser* browser = midori_browser_get_for_widget (toolitem);396 MidoriBrowser* browser = midori_browser_get_for_widget (toolitem);
396 /* FIXME: Take selected folder into account */397 GtkTreeView* treeview = GTK_TREE_VIEW (bookmarks->treeview);
398 GtkTreeModel* model;
399 GtkTreeIter iter;
400 KatzeItem* parent = NULL;
401
402 if (katze_tree_view_get_selected_iter (treeview,
403 &model, &iter))
404 {
405 gboolean done = FALSE;
406 while (!done)
407 {
408 gtk_tree_model_get (model, &iter, 0, &parent, -1);
409
410 if (KATZE_ITEM_IS_FOLDER (parent))
411 {
412 GtkTreePath* path = gtk_tree_model_get_path(model, &iter);
413
414 if (!gtk_tree_view_row_expanded (treeview, path))
415 gtk_tree_view_expand_row (treeview, path, FALSE);
416
417 gtk_tree_path_free (path);
418 done = TRUE;
419 }
420 else
421 {
422 GtkTreeIter child = iter;
423
424 if (parent) g_object_unref (parent);
425 parent = NULL;
426
427 if (!gtk_tree_model_iter_parent (model, &iter, &child))
428 {
429 done = TRUE;
430 }
431 }
432 }
433 }
434
397 if (g_str_equal (gtk_widget_get_name (toolitem), "BookmarkFolderAdd"))435 if (g_str_equal (gtk_widget_get_name (toolitem), "BookmarkFolderAdd"))
398 midori_browser_edit_bookmark_dialog_new (browser, NULL, TRUE, TRUE, toolitem);436 midori_browser_edit_bookmark_dialog_new (browser, parent, TRUE, TRUE, toolitem);
399 else437 else
400 midori_browser_edit_bookmark_dialog_new (browser, NULL, TRUE, FALSE, toolitem);438 midori_browser_edit_bookmark_dialog_new (browser, parent, TRUE, FALSE, toolitem);
439
440 if (parent)
441 g_object_unref (parent);
401}442}
402443
403static void444static void

Subscribers

People subscribed via source and target branches

to all changes: