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
=== modified file 'katze/katze-item.c'
--- katze/katze-item.c 2014-05-20 02:15:05 +0000
+++ katze/katze-item.c 2014-07-25 01:38:09 +0000
@@ -8,8 +8,8 @@
88
9 See the file COPYING for the full license text.9 See the file COPYING for the full license text.
10*/10*/
11
12#include "katze-item.h"11#include "katze-item.h"
12#include "katze-array.h"
13#include "katze-utils.h"13#include "katze-utils.h"
14#include "midori/midori-core.h"14#include "midori/midori-core.h"
1515
1616
=== modified file 'katze/katze-item.h'
--- katze/katze-item.h 2012-12-16 18:40:00 +0000
+++ katze/katze-item.h 2014-07-25 01:38:09 +0000
@@ -11,7 +11,6 @@
1111
12#ifndef __KATZE_ITEM_H__12#ifndef __KATZE_ITEM_H__
13#define __KATZE_ITEM_H__13#define __KATZE_ITEM_H__
14
15#include <gtk/gtk.h>14#include <gtk/gtk.h>
1615
17G_BEGIN_DECLS16G_BEGIN_DECLS
@@ -34,7 +33,7 @@
3433
35typedef struct _KatzeItem KatzeItem;34typedef struct _KatzeItem KatzeItem;
36typedef struct _KatzeItemClass KatzeItemClass;35typedef struct _KatzeItemClass KatzeItemClass;
3736typedef struct _KatzeArray KatzeArray;
38struct _KatzeItem37struct _KatzeItem
39{38{
40 GObject parent_instance;39 GObject parent_instance;
@@ -47,6 +46,7 @@
47 GHashTable* metadata;46 GHashTable* metadata;
4847
49 KatzeItem* parent;48 KatzeItem* parent;
49 KatzeArray* history;
50};50};
5151
52struct _KatzeItemClass52struct _KatzeItemClass
5353
=== modified file 'midori/midori-browser.c'
--- midori/midori-browser.c 2014-07-24 07:20:50 +0000
+++ midori/midori-browser.c 2014-07-25 01:38:09 +0000
@@ -1397,6 +1397,30 @@
1397}1397}
13981398
1399static void1399static void
1400midori_browser_view_copy_to_item_history (GtkWidget* view,
1401 KatzeItem* item)
1402{
1403#ifndef HAVE_WEBKIT2
1404 WebKitWebView* copy_from;
1405 WebKitWebBackForwardList* list_from;
1406 guint length_from;
1407 gint i;
1408
1409 copy_from = WEBKIT_WEB_VIEW (midori_view_get_web_view (MIDORI_VIEW (view)));
1410 list_from = webkit_web_view_get_back_forward_list (copy_from);
1411 length_from = webkit_web_back_forward_list_get_back_length (list_from);
1412 item->history = katze_array_new(G_TYPE_OBJECT);
1413 for (i = -length_from; i <= -1 ; i++)
1414 {
1415 WebKitWebHistoryItem* hist_item = webkit_web_back_forward_list_get_nth_item (list_from, i);
1416 if (hist_item == NULL)
1417 break;
1418 katze_array_add_item (item->history,hist_item);
1419 }
1420#endif
1421}
1422
1423static void
1400midori_view_destroy_cb (GtkWidget* view,1424midori_view_destroy_cb (GtkWidget* view,
1401 MidoriBrowser* browser)1425 MidoriBrowser* browser)
1402{1426{
@@ -1407,7 +1431,11 @@
1407 && !midori_tab_is_blank (MIDORI_TAB (view)))1431 && !midori_tab_is_blank (MIDORI_TAB (view)))
1408 {1432 {
1409 if (browser->trash)1433 if (browser->trash)
1434 {
1435 midori_browser_view_copy_to_item_history (view,item);
1436
1410 katze_array_add_item (browser->trash, item);1437 katze_array_add_item (browser->trash, item);
1438 }
1411 midori_browser_update_history (item, "website", "leave");1439 midori_browser_update_history (item, "website", "leave");
1412 }1440 }
1413 midori_browser_disconnect_tab (browser, MIDORI_VIEW (view));1441 midori_browser_disconnect_tab (browser, MIDORI_VIEW (view));
@@ -1479,6 +1507,34 @@
1479#endif1507#endif
1480}1508}
14811509
1510
1511static void
1512midori_browser_view_copy_from_item_history (GtkWidget* view,
1513 KatzeArray* list_from)
1514{
1515#ifndef HAVE_WEBKIT2
1516 WebKitWebView* copy_to;
1517 WebKitWebBackForwardList* list_to;
1518 guint length_from;
1519 gint i;
1520
1521 copy_to = WEBKIT_WEB_VIEW (midori_view_get_web_view (MIDORI_VIEW (view)));
1522 list_to = webkit_web_view_get_back_forward_list (copy_to);
1523 if(list_from == NULL)
1524 return;
1525 length_from = katze_array_get_length (list_from);
1526 for (i = 0; i < length_from ; i++)
1527 {
1528 WebKitWebHistoryItem* hist_item = katze_array_get_nth_item (list_from, i);
1529 if (hist_item == NULL)
1530 break;
1531 webkit_web_back_forward_list_add_item (list_to,hist_item);
1532 }
1533#endif
1534}
1535
1536
1537
1482static gboolean1538static gboolean
1483midori_browser_notify_new_tab_timeout_cb (MidoriBrowser *browser)1539midori_browser_notify_new_tab_timeout_cb (MidoriBrowser *browser)
1484{1540{
@@ -1913,7 +1969,7 @@
1913 g_free (old);1969 g_free (old);
1914}1970}
19151971
1916static void 1972static void
1917_update_reload_tooltip (GtkWidget* widget,1973_update_reload_tooltip (GtkWidget* widget,
1918 GdkEventKey* event,1974 GdkEventKey* event,
1919 gboolean released)1975 gboolean released)
@@ -1926,12 +1982,12 @@
1926 GdkModifierType mask;1982 GdkModifierType mask;
1927 gdk_window_get_pointer (gtk_widget_get_window (widget), NULL, NULL, &mask);1983 gdk_window_get_pointer (gtk_widget_get_window (widget), NULL, NULL, &mask);
1928 const gchar *target;1984 const gchar *target;
1929 1985
1930 if ( mask & GDK_SHIFT_MASK)1986 if ( mask & GDK_SHIFT_MASK)
1931 {1987 {
1932 target = _("Reload page without caching");1988 target = _("Reload page without caching");
1933 }1989 }
1934 else 1990 else
1935 {1991 {
1936 target = _("Reload the current page");1992 target = _("Reload the current page");
1937 }1993 }
@@ -3096,6 +3152,7 @@
3096 g_object_ref (item);3152 g_object_ref (item);
3097 katze_array_remove_item (browser->trash, item);3153 katze_array_remove_item (browser->trash, item);
3098 view = midori_browser_add_item (browser, item);3154 view = midori_browser_add_item (browser, item);
3155 midori_browser_view_copy_from_item_history (view,item->history);
3099 g_object_unref (item);3156 g_object_unref (item);
3100 return view;3157 return view;
3101}3158}
@@ -5509,6 +5566,7 @@
5509static void5566static void
5510midori_browser_destroy_cb (MidoriBrowser* browser)5567midori_browser_destroy_cb (MidoriBrowser* browser)
5511{5568{
5569
5512 g_object_set_data (G_OBJECT (browser), "midori-browser-destroyed", (void*)1);5570 g_object_set_data (G_OBJECT (browser), "midori-browser-destroyed", (void*)1);
55135571
5514 if (G_UNLIKELY (browser->panel_timeout))5572 if (G_UNLIKELY (browser->panel_timeout))
@@ -6332,7 +6390,7 @@
6332 {6390 {
6333 gtk_action_activate (_action_by_name (browser, "TabDuplicate"));6391 gtk_action_activate (_action_by_name (browser, "TabDuplicate"));
6334 }6392 }
6335 6393
6336 GtkWidget* parent = gtk_widget_get_parent (toolitem);6394 GtkWidget* parent = gtk_widget_get_parent (toolitem);
6337 GtkAction* action = gtk_activatable_get_related_action (6395 GtkAction* action = gtk_activatable_get_related_action (
6338 GTK_ACTIVATABLE (parent));6396 GTK_ACTIVATABLE (parent));
@@ -7531,14 +7589,14 @@
7531 browser = gtk_window_get_transient_for (GTK_WINDOW (browser));7589 browser = gtk_window_get_transient_for (GTK_WINDOW (browser));
7532 if (!MIDORI_IS_BROWSER (browser))7590 if (!MIDORI_IS_BROWSER (browser))
7533 {7591 {
7534 /* For some reason, when called on the widget of the 7592 /* For some reason, when called on the widget of the
7535 * application menubar we get here.7593 * application menubar we get here.
7536 */7594 */
75377595
7538 GList* top_levels = gtk_window_list_toplevels ();7596 GList* top_levels = gtk_window_list_toplevels ();
7539 GList *iter;7597 GList *iter;
75407598
7541 for (iter = top_levels; iter; iter = g_list_next (iter)) 7599 for (iter = top_levels; iter; iter = g_list_next (iter))
7542 {7600 {
7543 browser = iter->data;7601 browser = iter->data;
75447602
@@ -7548,7 +7606,7 @@
7548 return MIDORI_BROWSER (browser);7606 return MIDORI_BROWSER (browser);
7549 }7607 }
7550 }7608 }
7551 7609
7552 g_list_free (top_levels);7610 g_list_free (top_levels);
7553 return NULL;7611 return NULL;
7554 }7612 }

Subscribers

People subscribed via source and target branches

to all changes: