]> spindle.queued.net Git - midori/commitdiff
Properly create proxy item and cleanup history agregation
authorAlexander Butenko <a.butenka@gmail.com>
Wed, 21 Jul 2010 19:28:45 +0000 (15:28 -0400)
committerChristian Dywan <christian@twotoasts.de>
Wed, 21 Jul 2010 22:21:03 +0000 (00:21 +0200)
midori/midori-browser.c
midori/midori-view.c

index 199068888918c5b7449921c931a4e3be556b1049..d3fff69ff41663b73ed1186e28daf588903aa8cd 100644 (file)
@@ -190,7 +190,7 @@ midori_bookmarkbar_clear (GtkWidget* toolbar);
 
 static void
 midori_browser_new_history_item (MidoriBrowser* browser,
-                                 KatzeItem**    item);
+                                 KatzeItem*     item);
 
 static void
 _midori_browser_set_toolbar_style (MidoriBrowser*     browser,
@@ -611,25 +611,21 @@ midori_view_notify_title_cb (GtkWidget*     widget,
 
     if (midori_view_get_load_status (view) == MIDORI_LOAD_COMMITTED)
     {
-        KatzeItem* item;
         KatzeItem* proxy;
-
         if (browser->history && browser->maximum_history_age)
         {
-            item = g_object_get_data (G_OBJECT (view), "history-item-added");
             proxy = midori_view_get_proxy_item (view);
-            if (item && katze_item_get_added (item) == katze_item_get_added (proxy))
+            if (katze_item_get_uri (proxy) &&
+                (katze_item_get_meta_integer (proxy, "process") == -1))
             {
-                katze_item_set_name (item, katze_item_get_name (proxy));
-                midori_browser_update_history_title (browser, item);
+                midori_browser_new_history_item (browser, proxy);
+                katze_item_set_meta_integer (proxy, "process", 1);
             }
-            else
+            else if (katze_item_get_name (proxy) &&
+                     (katze_item_get_meta_integer (proxy, "process") == 1))
             {
-                katze_object_assign (item, katze_item_copy (proxy));
-                midori_browser_new_history_item (browser, &item);
-                g_object_ref (item);
-                g_object_set_data_full (G_OBJECT (view), "history-item-added",
-                                        item, (GDestroyNotify)g_object_unref);
+                midori_browser_update_history_title (browser, proxy);
+                katze_item_set_meta_integer (proxy, "process", 2);
             }
         }
     }
@@ -5344,7 +5340,7 @@ midori_browser_realize_cb (GtkStyle*      style,
 
 static void
 midori_browser_new_history_item (MidoriBrowser* browser,
-                                 KatzeItem**    item)
+                                 KatzeItem*     item)
 {
     time_t now;
     gint64 day;
@@ -5352,7 +5348,7 @@ midori_browser_new_history_item (MidoriBrowser* browser,
     static sqlite3_stmt* stmt = NULL;
 
     now = time (NULL);
-    katze_item_set_added (*item, now);
+    katze_item_set_added (item, now);
     day = sokoke_time_t_to_julian (&now);
 
     db = g_object_get_data (G_OBJECT (browser->history), "db");
@@ -5363,9 +5359,9 @@ midori_browser_new_history_item (MidoriBrowser* browser,
         sqlcmd = "INSERT INTO history (uri, title, date, day) VALUES (?,?,?,?)";
         sqlite3_prepare_v2 (db, sqlcmd, -1, &stmt, NULL);
     }
-    sqlite3_bind_text (stmt, 1, katze_item_get_uri (*item), -1, 0);
-    sqlite3_bind_text (stmt, 2, katze_item_get_name (*item), -1, 0);
-    sqlite3_bind_int64 (stmt, 3, katze_item_get_added (*item));
+    sqlite3_bind_text (stmt, 1, katze_item_get_uri (item), -1, 0);
+    sqlite3_bind_text (stmt, 2, katze_item_get_name (item), -1, 0);
+    sqlite3_bind_int64 (stmt, 3, katze_item_get_added (item));
     sqlite3_bind_int64 (stmt, 4, day);
 
     if (sqlite3_step (stmt) != SQLITE_DONE)
index 7ee134ffaad75c1258267b400af40a1e01431a00..c5354b785d7bfe1a827a661ae04fc7ec148353e1 100644 (file)
@@ -1006,54 +1006,15 @@ webkit_web_view_load_committed_cb (WebKitWebView*  web_view,
     g_return_if_fail (uri != NULL);
     katze_assign (view->uri, sokoke_format_uri_for_display (uri));
     katze_assign (view->icon_uri, NULL);
-    if (view->item)
-    {
-        #if 0
-        /* Load back forward history from meta data. WebKit does not seem to
-          respect the order of items, so the feature is unusable. */
-        if (!view->back_forward_set)
-        {
-            WebKitWebBackForwardList* list;
-            gchar* key;
-            guint i;
-            const gchar* data;
-            WebKitWebHistoryItem* item;
-
-            list = webkit_web_view_get_back_forward_list (web_view);
 
-            key = g_strdup ("back4");
-            for (i = 4; i > 0; i--)
-            {
-                key[4] = 48 + i;
-                if ((data = katze_item_get_meta_string (view->item, key)))
-                {
-                    item = webkit_web_history_item_new_with_data (data, NULL);
-                    webkit_web_back_forward_list_add_item (list, item);
-                    g_object_unref (item);
-                }
-            }
+    /* FIXME: Create a proxy item if we don't have one.
+     * We should either always create it, or not rely on it */
+    if (!view->item)
+        midori_view_get_proxy_item (view);
 
-            #if 0
-            key[0] = 'f';
-            key[1] = 'o';
-            key[2] = 'r';
-            key[3] = 'e';
-            for (i = 4; i > 0; i--)
-            {
-                key[4] = 48 + i;
-                item = webkit_web_history_item_new_with_data (data, NULL);
-                webkit_web_back_forward_list_add_item (list, item);
-                g_object_unref (item);
-            }
-            #endif
-            g_free (key);
-            view->back_forward_set = TRUE;
-        }
-        #endif
+    katze_item_set_uri (view->item, uri);
+    katze_item_set_added (view->item, time (NULL));
 
-        katze_item_set_uri (view->item, uri);
-        katze_item_set_added (view->item, time (NULL));
-    }
     g_object_notify (G_OBJECT (view), "uri");
     g_object_set (view, "title", NULL, NULL);
 
@@ -4396,18 +4357,11 @@ midori_view_item_meta_data_changed (KatzeItem*   item,
 KatzeItem*
 midori_view_get_proxy_item (MidoriView* view)
 {
-    const gchar* uri;
-    const gchar* title;
-
     g_return_val_if_fail (MIDORI_IS_VIEW (view), NULL);
 
     if (!view->item)
     {
         view->item = katze_item_new ();
-        uri = midori_view_get_display_uri (view);
-        katze_item_set_uri (view->item, uri);
-        title = midori_view_get_display_title (view);
-        katze_item_set_name (view->item, title);
         g_signal_connect (view->item, "meta-data-changed",
             G_CALLBACK (midori_view_item_meta_data_changed), view);
     }