[midori] Add patch to fix bookmarks. https://bugs.launchpad.net/midori/+bug/874592

Kevin Fenzi kevin at fedoraproject.org
Mon Oct 24 16:55:31 UTC 2011


commit 152bf9160b6ef4b3b374f09bdb811719e73a3880
Author: Kevin Fenzi <kevin at scrye.com>
Date:   Mon Oct 24 10:55:28 2011 -0600

    Add patch to fix bookmarks.
    https://bugs.launchpad.net/midori/+bug/874592

 midori-0.4.1-bookmarks-combobox.patch |  221 +++++++++++++++++++++++++++++++++
 midori.spec                           |   10 ++-
 2 files changed, 230 insertions(+), 1 deletions(-)
---
diff --git a/midori-0.4.1-bookmarks-combobox.patch b/midori-0.4.1-bookmarks-combobox.patch
new file mode 100644
index 0000000..b462c70
--- /dev/null
+++ b/midori-0.4.1-bookmarks-combobox.patch
@@ -0,0 +1,221 @@
+From c06fbee023798cfed102be951d2d907b4cc11b6f Mon Sep 17 00:00:00 2001
+From: Christian Dywan <christian at twotoasts.de>
+Date: Thu, 20 Oct 2011 20:19:41 +0000
+Subject: Merge bookmark folder combo into helper functions
+
+Fixes: https://bugs.launchpad.net/midori/+bug/874592
+---
+diff --git a/midori/midori-browser.c b/midori/midori-browser.c
+index 66cfcc6..6ee7942 100644
+--- a/midori/midori-browser.c
++++ b/midori/midori-browser.c
+@@ -674,6 +674,67 @@ midori_view_notify_statusbar_text_cb (GtkWidget*     view,
+     }
+ }
+ 
++static GtkWidget*
++midori_bookmark_folder_button_new (KatzeArray*  array,
++                                   gboolean     new_bookmark,
++                                   const gchar* selected)
++{
++    GtkListStore* model;
++    GtkWidget* combo;
++    GtkCellRenderer* renderer;
++    guint n;
++    sqlite3* db;
++    sqlite3_stmt* statement;
++    gint result;
++    const gchar* sqlcmd = "SELECT title from bookmarks where uri=''";
++
++    model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
++    combo = gtk_combo_box_new_with_model (GTK_TREE_MODEL (model));
++    renderer = gtk_cell_renderer_text_new ();
++    gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, TRUE);
++    gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (combo), renderer, "text", 0);
++    gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (combo), renderer, "ellipsize", 1);
++    gtk_list_store_insert_with_values (model, NULL, G_MAXINT,
++        0, _("Toplevel folder"), 1, PANGO_ELLIPSIZE_END, -1);
++    gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0);
++
++    db = g_object_get_data (G_OBJECT (array), "db");
++    g_return_val_if_fail (db != NULL, NULL);
++    n = 1;
++    result = sqlite3_prepare_v2 (db, sqlcmd, -1, &statement, NULL);
++    while ((result = sqlite3_step (statement)) == SQLITE_ROW)
++    {
++        const unsigned char* name = sqlite3_column_text (statement, 0);
++        gtk_list_store_insert_with_values (model, NULL, G_MAXINT,
++            0, name, 1, PANGO_ELLIPSIZE_END, -1);
++        if (!new_bookmark && !g_strcmp0 (selected, (gchar*)name))
++            gtk_combo_box_set_active (GTK_COMBO_BOX (combo), n);
++        n++;
++    }
++    if (n < 2)
++        gtk_widget_set_sensitive (combo, FALSE);
++    return combo;
++}
++
++static gchar*
++midori_bookmark_folder_button_get_active (GtkWidget* combo)
++{
++    gchar* selected = NULL;
++    GtkTreeIter iter;
++
++    g_return_val_if_fail (GTK_IS_COMBO_BOX (combo), NULL);
++
++    if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (combo), &iter))
++    {
++        GtkTreeModel* model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo));
++        gtk_tree_model_get (GTK_TREE_MODEL (model), &iter, 0, &selected, -1);
++        if (g_str_equal (selected, _("Toplevel folder")))
++            katze_assign (selected, g_strdup (""));
++    }
++
++    return selected;
++}
++
+ static void
+ midori_browser_edit_bookmark_title_changed_cb (GtkEntry*      entry,
+                                                GtkDialog*     dialog)
+@@ -802,51 +863,16 @@ midori_browser_edit_bookmark_dialog_new (MidoriBrowser* browser,
+         gtk_widget_show_all (hbox);
+     }
+ 
+-    combo_folder = NULL;
+-    if (1)
+-    {
+-        GtkListStore* model;
+-        GtkCellRenderer* renderer;
+-        guint n;
+-        sqlite3_stmt* statement;
+-        gint result;
+-        const gchar* sqlcmd;
+-
+-        hbox = gtk_hbox_new (FALSE, 8);
+-        gtk_container_set_border_width (GTK_CONTAINER (hbox), 4);
+-        label = gtk_label_new_with_mnemonic (_("_Folder:"));
+-        gtk_size_group_add_widget (sizegroup, label);
+-        gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+-        model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
+-        combo_folder = gtk_combo_box_new_with_model (GTK_TREE_MODEL (model));
+-        renderer = gtk_cell_renderer_text_new ();
+-        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_folder), renderer, TRUE);
+-        gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (combo_folder), renderer, "text", 0);
+-        gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (combo_folder), renderer, "ellipsize", 1);
+-        gtk_list_store_insert_with_values (model, NULL, G_MAXINT,
+-            0, _("Toplevel folder"), 1, PANGO_ELLIPSIZE_END, -1);
+-        gtk_combo_box_set_active (GTK_COMBO_BOX (combo_folder), 0);
+-
+-        n = 1;
+-        sqlcmd = "SELECT title from bookmarks where uri=''";
+-        result = sqlite3_prepare_v2 (db, sqlcmd, -1, &statement, NULL);
+-        while ((result = sqlite3_step (statement)) == SQLITE_ROW)
+-        {
+-                const unsigned char* name = sqlite3_column_text (statement, 0);
+-                gtk_list_store_insert_with_values (model, NULL, G_MAXINT,
+-                    0, name, 1, PANGO_ELLIPSIZE_END, -1);
+-                if (!new_bookmark && katze_item_get_meta_string (bookmark, "folder")
+-                    && g_str_equal (katze_item_get_meta_string (bookmark, "folder"), name))
+-                    gtk_combo_box_set_active (GTK_COMBO_BOX (combo_folder), n);
+-                n++;
+-        }
+-        if (n < 2)
+-            gtk_widget_set_sensitive (combo_folder, FALSE);
+-
+-        gtk_box_pack_start (GTK_BOX (hbox), combo_folder, TRUE, TRUE, 0);
+-        gtk_container_add (GTK_CONTAINER (content_area), hbox);
+-        gtk_widget_show_all (hbox);
+-    }
++    hbox = gtk_hbox_new (FALSE, 8);
++    gtk_container_set_border_width (GTK_CONTAINER (hbox), 4);
++    label = gtk_label_new_with_mnemonic (_("_Folder:"));
++    gtk_size_group_add_widget (sizegroup, label);
++    gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
++    combo_folder = midori_bookmark_folder_button_new (browser->bookmarks,
++        new_bookmark, katze_item_get_meta_string (bookmark, "folder"));
++    gtk_box_pack_start (GTK_BOX (hbox), combo_folder, TRUE, TRUE, 0);
++    gtk_container_add (GTK_CONTAINER (content_area), hbox);
++    gtk_widget_show_all (hbox);
+ 
+     if (new_bookmark && !is_folder)
+     {
+@@ -911,10 +937,7 @@ midori_browser_edit_bookmark_dialog_new (MidoriBrowser* browser,
+                 gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check_app)));
+         }
+ 
+-        selected = gtk_combo_box_text_get_active_text (
+-            GTK_COMBO_BOX_TEXT (combo_folder));
+-        if (!strcmp (selected, _("Toplevel folder")))
+-            katze_assign (selected, g_strdup (""));
++        selected = midori_bookmark_folder_button_get_active (combo_folder);
+         katze_item_set_meta_string (bookmark, "folder", selected);
+         katze_array_add_item (browser->bookmarks, bookmark);
+ 
+@@ -4222,14 +4245,10 @@ _action_bookmarks_import_activate (GtkAction*     action,
+     GtkComboBox* combobox;
+     GtkListStore* model;
+     GtkCellRenderer* renderer;
+-    GtkComboBox* combobox_folder;
++    GtkWidget* combobox_folder;
+     gint icon_width = 16;
+     guint i;
+-    KatzeItem* item;
+     KatzeArray* bookmarks;
+-    sqlite3* db;
+-    const gchar* sqlcmd;
+-    KatzeArray* bookmarkdirs;
+ 
+     if (!browser->bookmarks || !gtk_widget_get_visible (GTK_WIDGET (browser)))
+         return;
+@@ -4329,40 +4348,24 @@ _action_bookmarks_import_activate (GtkAction*     action,
+     label = gtk_label_new_with_mnemonic (_("_Folder:"));
+     gtk_size_group_add_widget (sizegroup, label);
+     gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+-    combo = gtk_combo_box_text_new ();
+-    combobox_folder = GTK_COMBO_BOX (combo);
+-    gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combobox_folder),
+-                                    _("Toplevel folder"));
+-    gtk_combo_box_set_active (combobox_folder, 0);
+-
+-    db = g_object_get_data (G_OBJECT (browser->bookmarks), "db");
+-    sqlcmd = "SELECT title from bookmarks where uri=''";
+-    bookmarkdirs = katze_array_from_sqlite (db, sqlcmd);
+-    KATZE_ARRAY_FOREACH_ITEM (item, bookmarkdirs)
+-    {
+-        const gchar* name = katze_item_get_name (item);
+-        gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combobox_folder), name);
+-    }
+-    gtk_box_pack_start (GTK_BOX (hbox), combo, TRUE, TRUE, 0);
++    combobox_folder = midori_bookmark_folder_button_new (browser->bookmarks,
++                                                         FALSE, NULL);
++    gtk_box_pack_start (GTK_BOX (hbox), combobox_folder, TRUE, TRUE, 0);
+     gtk_container_add (GTK_CONTAINER (content_area), hbox);
+     gtk_widget_show_all (hbox);
+-    gtk_widget_set_sensitive (combo, TRUE);
+ 
+     gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
+     if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
+     {
+         GtkTreeIter iter;
+-        gchar* path;
+-        gchar* selected;
++        gchar* path = NULL;
++        gchar* selected = NULL;
+         GError* error;
++        sqlite3* db = g_object_get_data (G_OBJECT (browser->bookmarks), "db");
+ 
+-        gtk_combo_box_get_active_iter (combobox, &iter);
+-        gtk_tree_model_get (GTK_TREE_MODEL (model), &iter, 2, &path, -1);
+-
+-        selected = gtk_combo_box_text_get_active_text (
+-            GTK_COMBO_BOX_TEXT (combobox_folder));
+-        if (g_str_equal (selected, _("Toplevel folder")))
+-            selected = g_strdup ("");
++        if (gtk_combo_box_get_active_iter (combobox, &iter))
++            gtk_tree_model_get (GTK_TREE_MODEL (model), &iter, 2, &path, -1);
++        selected = midori_bookmark_folder_button_get_active (combobox_folder);
+ 
+         gtk_widget_destroy (dialog);
+         if (!path)
+--
+cgit 
diff --git a/midori.spec b/midori.spec
index 26646a8..cb66c3a 100644
--- a/midori.spec
+++ b/midori.spec
@@ -1,6 +1,6 @@
 Name:		midori
 Version:	0.4.1
-Release:	1%{?dist}
+Release:	2%{?dist}
 Summary:	A lightweight GTK+ web browser 
 
 Group:		Applications/Internet
@@ -14,6 +14,9 @@ Source0:	http://archive.xfce.org/src/apps/%{name}/0.4/%{name}-%{version}.tar.bz2
 Patch0: 	%{name}-fedora-homepage.patch
 # Remove the private browsing extension group. It's not up to spec
 Patch1:		midori-0.4.0-desktop.patch
+# Fix bookmarks. 
+# http://git.xfce.org/apps/midori/patch/?id=c06fbee023798cfed102be951d2d907b4cc11b6f
+Patch2:         midori-0.4.1-bookmarks-combobox.patch
 
 BuildRoot:	%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
@@ -67,6 +70,7 @@ developing extensions for %{name}.
 #rm -rf waf
 %patch0 -b .fedora-homepage
 %patch1 -p1 -b .desktop
+%patch2 -p1 -b .bookmarks
 
 %build
 export CFLAGS="%{optflags}"
@@ -144,6 +148,10 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
 
 
 %changelog
+* Mon Oct 24 2011 Kevin Fenzi <kevin at scrye.com> - 0.4.1-2
+- Add patch to fix bookmarks. 
+- https://bugs.launchpad.net/midori/+bug/874592
+
 * Sun Oct 09 2011 Kevin Fenzi <kevin at scrye.com> - 0.4.1-1
 - Update to 0.4.1
 


More information about the scm-commits mailing list