Merge lp:~meese/midori/fix-bug1287809 into lp:midori

Proposed by meese
Status: Superseded
Proposed branch: lp:~meese/midori/fix-bug1287809
Merge into: lp:midori
Diff against target: 199 lines (+68/-10)
3 files modified
katze/katze-item.c (+1/-1)
katze/katze-item.h (+2/-2)
midori/midori-browser.c (+65/-7)
To merge this branch: bzr merge lp:~meese/midori/fix-bug1287809
Reviewer Review Type Date Requested Status
Midori Devs Pending
Review via email: mp+222424@code.launchpad.net

This proposal has been superseded by a proposal from 2014-08-05.

Description of the change

fixes 1287809 by saving history in item that is put in the trash and restored to view on undo

To post a comment you must log in.
Revision history for this message
Robert Roth (evfool) wrote :

Looks fine overall, one minor comment, see it inline.

lp:~meese/midori/fix-bug1287809 updated
6719. By meese

fix refrencing object after unref called

6720. By meese

change to attach history with g_objecct_get_data ,remove katze changes

Unmerged revisions

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'katze/katze-item.c'
2--- katze/katze-item.c 2014-05-20 02:15:05 +0000
3+++ katze/katze-item.c 2014-07-25 01:38:09 +0000
4@@ -8,8 +8,8 @@
5
6 See the file COPYING for the full license text.
7 */
8-
9 #include "katze-item.h"
10+#include "katze-array.h"
11 #include "katze-utils.h"
12 #include "midori/midori-core.h"
13
14
15=== modified file 'katze/katze-item.h'
16--- katze/katze-item.h 2012-12-16 18:40:00 +0000
17+++ katze/katze-item.h 2014-07-25 01:38:09 +0000
18@@ -11,7 +11,6 @@
19
20 #ifndef __KATZE_ITEM_H__
21 #define __KATZE_ITEM_H__
22-
23 #include <gtk/gtk.h>
24
25 G_BEGIN_DECLS
26@@ -34,7 +33,7 @@
27
28 typedef struct _KatzeItem KatzeItem;
29 typedef struct _KatzeItemClass KatzeItemClass;
30-
31+typedef struct _KatzeArray KatzeArray;
32 struct _KatzeItem
33 {
34 GObject parent_instance;
35@@ -47,6 +46,7 @@
36 GHashTable* metadata;
37
38 KatzeItem* parent;
39+ KatzeArray* history;
40 };
41
42 struct _KatzeItemClass
43
44=== modified file 'midori/midori-browser.c'
45--- midori/midori-browser.c 2014-07-24 07:20:50 +0000
46+++ midori/midori-browser.c 2014-07-25 01:38:09 +0000
47@@ -1397,6 +1397,30 @@
48 }
49
50 static void
51+midori_browser_view_copy_to_item_history (GtkWidget* view,
52+ KatzeItem* item)
53+{
54+#ifndef HAVE_WEBKIT2
55+ WebKitWebView* copy_from;
56+ WebKitWebBackForwardList* list_from;
57+ guint length_from;
58+ gint i;
59+
60+ copy_from = WEBKIT_WEB_VIEW (midori_view_get_web_view (MIDORI_VIEW (view)));
61+ list_from = webkit_web_view_get_back_forward_list (copy_from);
62+ length_from = webkit_web_back_forward_list_get_back_length (list_from);
63+ item->history = katze_array_new(G_TYPE_OBJECT);
64+ for (i = -length_from; i <= -1 ; i++)
65+ {
66+ WebKitWebHistoryItem* hist_item = webkit_web_back_forward_list_get_nth_item (list_from, i);
67+ if (hist_item == NULL)
68+ break;
69+ katze_array_add_item (item->history,hist_item);
70+ }
71+#endif
72+}
73+
74+static void
75 midori_view_destroy_cb (GtkWidget* view,
76 MidoriBrowser* browser)
77 {
78@@ -1407,7 +1431,11 @@
79 && !midori_tab_is_blank (MIDORI_TAB (view)))
80 {
81 if (browser->trash)
82+ {
83+ midori_browser_view_copy_to_item_history (view,item);
84+
85 katze_array_add_item (browser->trash, item);
86+ }
87 midori_browser_update_history (item, "website", "leave");
88 }
89 midori_browser_disconnect_tab (browser, MIDORI_VIEW (view));
90@@ -1479,6 +1507,34 @@
91 #endif
92 }
93
94+
95+static void
96+midori_browser_view_copy_from_item_history (GtkWidget* view,
97+ KatzeArray* list_from)
98+{
99+#ifndef HAVE_WEBKIT2
100+ WebKitWebView* copy_to;
101+ WebKitWebBackForwardList* list_to;
102+ guint length_from;
103+ gint i;
104+
105+ copy_to = WEBKIT_WEB_VIEW (midori_view_get_web_view (MIDORI_VIEW (view)));
106+ list_to = webkit_web_view_get_back_forward_list (copy_to);
107+ if(list_from == NULL)
108+ return;
109+ length_from = katze_array_get_length (list_from);
110+ for (i = 0; i < length_from ; i++)
111+ {
112+ WebKitWebHistoryItem* hist_item = katze_array_get_nth_item (list_from, i);
113+ if (hist_item == NULL)
114+ break;
115+ webkit_web_back_forward_list_add_item (list_to,hist_item);
116+ }
117+#endif
118+}
119+
120+
121+
122 static gboolean
123 midori_browser_notify_new_tab_timeout_cb (MidoriBrowser *browser)
124 {
125@@ -1913,7 +1969,7 @@
126 g_free (old);
127 }
128
129-static void
130+static void
131 _update_reload_tooltip (GtkWidget* widget,
132 GdkEventKey* event,
133 gboolean released)
134@@ -1926,12 +1982,12 @@
135 GdkModifierType mask;
136 gdk_window_get_pointer (gtk_widget_get_window (widget), NULL, NULL, &mask);
137 const gchar *target;
138-
139+
140 if ( mask & GDK_SHIFT_MASK)
141 {
142 target = _("Reload page without caching");
143 }
144- else
145+ else
146 {
147 target = _("Reload the current page");
148 }
149@@ -3096,6 +3152,7 @@
150 g_object_ref (item);
151 katze_array_remove_item (browser->trash, item);
152 view = midori_browser_add_item (browser, item);
153+ midori_browser_view_copy_from_item_history (view,item->history);
154 g_object_unref (item);
155 return view;
156 }
157@@ -5509,6 +5566,7 @@
158 static void
159 midori_browser_destroy_cb (MidoriBrowser* browser)
160 {
161+
162 g_object_set_data (G_OBJECT (browser), "midori-browser-destroyed", (void*)1);
163
164 if (G_UNLIKELY (browser->panel_timeout))
165@@ -6332,7 +6390,7 @@
166 {
167 gtk_action_activate (_action_by_name (browser, "TabDuplicate"));
168 }
169-
170+
171 GtkWidget* parent = gtk_widget_get_parent (toolitem);
172 GtkAction* action = gtk_activatable_get_related_action (
173 GTK_ACTIVATABLE (parent));
174@@ -7531,14 +7589,14 @@
175 browser = gtk_window_get_transient_for (GTK_WINDOW (browser));
176 if (!MIDORI_IS_BROWSER (browser))
177 {
178- /* For some reason, when called on the widget of the
179+ /* For some reason, when called on the widget of the
180 * application menubar we get here.
181 */
182
183 GList* top_levels = gtk_window_list_toplevels ();
184 GList *iter;
185
186- for (iter = top_levels; iter; iter = g_list_next (iter))
187+ for (iter = top_levels; iter; iter = g_list_next (iter))
188 {
189 browser = iter->data;
190
191@@ -7548,7 +7606,7 @@
192 return MIDORI_BROWSER (browser);
193 }
194 }
195-
196+
197 g_list_free (top_levels);
198 return NULL;
199 }

Subscribers

People subscribed via source and target branches

to all changes: