Updating branch refs/heads/master to fa8f109da91310589c459bb94ae9c4616574b634 (commit) from 0706bdbbe76273fff6cc5efa9d7800297369ce5e (commit)
commit fa8f109da91310589c459bb94ae9c4616574b634 Author: Christian Dywan <christ...@twotoasts.de> Date: Wed Oct 7 23:51:35 2009 +0200 Conditionalize restoring of the scrolling position Ensure that we differentiate an unset value from a valid value as well as having restored the position already so we don't accidentally restore a wrong position. Restoring after having loaded a page is still not ideal but there doesn't seem to be a better way at this point. midori/midori-view.c | 46 ++++++++++++++++++++++++++++++++-------------- 1 files changed, 32 insertions(+), 14 deletions(-) diff --git a/midori/midori-view.c b/midori/midori-view.c index 1ca49dc..5918293 100644 --- a/midori/midori-view.c +++ b/midori/midori-view.c @@ -905,27 +905,45 @@ webkit_web_frame_load_done_cb (WebKitWebFrame* web_frame, #endif static void +midori_view_apply_scroll_position (MidoriView* view) +{ + if (view->scrollh > -2) + { + if (view->scrollh > 0) + { + GtkAdjustment* adjustment = katze_object_get_object (view, "hadjustment"); + gtk_adjustment_set_value (adjustment, view->scrollh); + g_object_unref (adjustment); + } + view->scrollh = -3; + } + if (view->scrollv > -2) + { + if (view->scrollv > 0) + { + GtkAdjustment* adjustment = katze_object_get_object (view, "vadjustment"); + gtk_adjustment_set_value (adjustment, view->scrollv); + g_object_unref (adjustment); + } + view->scrollv = -3; + } +} + +static void webkit_web_view_load_finished_cb (WebKitWebView* web_view, WebKitWebFrame* web_frame, MidoriView* view) { g_object_freeze_notify (G_OBJECT (view)); + /* TODO: Find a better condition than a finished load. + Apparently WEBKIT_LOAD_FIRST_VISUALLY_NON_EMPTY_LAYOUT is too early. */ + midori_view_apply_scroll_position (view); + view->progress = 1.0; g_object_notify (G_OBJECT (view), "progress"); midori_view_update_load_status (view, MIDORI_LOAD_FINISHED); - if (view->scrollh || view->scrollv) - { - GtkAdjustment* adjustment = katze_object_get_object (view, "hadjustment"); - gtk_adjustment_set_value (adjustment, view->scrollh); - g_object_unref (adjustment); - adjustment = katze_object_get_object (view, "vadjustment"); - gtk_adjustment_set_value (adjustment, view->scrollv); - g_object_unref (adjustment); - view->scrollh = view->scrollv = 0; - } - if (1) { JSContextRef js_context = webkit_web_frame_get_global_context (web_frame); @@ -2208,7 +2226,7 @@ midori_view_init (MidoriView* view) view->news_feeds = katze_array_new (KATZE_TYPE_ITEM); view->item = NULL; - view->scrollh = view->scrollv = 0; + view->scrollh = view->scrollv = -2; view->back_forward_set = FALSE; view->download_manager = NULL; @@ -3474,9 +3492,9 @@ midori_view_item_meta_data_changed (KatzeItem* item, else if (g_str_has_prefix (key, "scroll")) { gint value = katze_item_get_meta_integer (item, key); - if (!view->scrollh && key[6] == 'h') + if (view->scrollh == -2 && key[6] == 'h') view->scrollh = value > -1 ? value : 0; - else if (!view->scrollv && key[6] == 'v') + else if (view->scrollv == -2 && key[6] == 'v') view->scrollv = value > -1 ? value : 0; else return; _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits