[Sugar-devel] [PATCH] Browse: Set and restore index in the history - Fix OLPC #10779 / SL #2499

Gonzalo Odiard godiard at gmail.com
Wed Jun 8 11:04:41 EDT 2011


Sasha:
In this patch I have addressed your comments.
To test with multiple tabs, in F14 I needed to replace:

-        self._disable_multiple_tabs = cairo.cairo_version() >= 10810
+        self._disable_multiple_tabs = cairo.cairo_version() >= 10810 \
+                and cairo.cairo_version() < 11002

I don't know if is in your plans restore multiple tabs, functionality in
F14,
but the cairo bug is gone.

Gonzalo



On Wed, Jun 8, 2011 at 12:09 PM, <godiard at sugarlabs.org> wrote:

> From: Gonzalo Odiard <godiard at gmail.com>
>
> If the user go back, or select any page in the history and
> close the activity, need restore at the next start, the history,
> and the index in the history too.
> ---
>  browser.py     |    7 ++++++-
>  webactivity.py |   26 ++++++++++----------------
>  webtoolbar.py  |    1 +
>  3 files changed, 17 insertions(+), 17 deletions(-)
>
> diff --git a/browser.py b/browser.py
> index b9c1f69..3cef766 100644
> --- a/browser.py
> +++ b/browser.py
> @@ -281,7 +281,6 @@ class Browser(WebView):
>
>     def do_setup(self):
>         WebView.do_setup(self)
> -
>         listener = xpcom.server.WrapObject(ContentInvoker(self),
>                                            interfaces.nsIDOMEventListener)
>         self.window_root.addEventListener('click', listener, False)
> @@ -351,6 +350,12 @@ class Browser(WebView):
>                     interfaces.nsIMarkupDocumentViewer)
>             markupDocumentViewer.fullZoom -= _ZOOM_AMOUNT
>
> +    def get_history_index(self):
> +        return self.web_navigation.sessionHistory.index
> +
> +    def set_history_index(self, index):
> +        self.web_navigation.gotoIndex(index)
> +
>
>  class PopupDialog(gtk.Window):
>     def __init__(self):
> diff --git a/webactivity.py b/webactivity.py
> index 48cb3ed..8ad95a6 100644
> --- a/webactivity.py
> +++ b/webactivity.py
> @@ -458,6 +458,10 @@ class WebActivity(activity.Activity):
>                                       link['owner'], -1, link['hash'])
>             logging.debug('########## reading %s', data)
>             self._tabbed_view.set_session(self.model.data['history'])
> +            for number, tab in enumerate(self.model.data['currents']):
> +                browser = self._tabbed_view.get_nth_page(number)
> +                browser.set_history_index(tab['history_index'])
> +
>
> self._tabbed_view.set_current_page(self.model.data['current_tab'])
>         elif self.metadata['mime_type'] == 'text/uri-list':
>             data = self._get_data_from_file_path(file_path)
> @@ -469,19 +473,6 @@ class WebActivity(activity.Activity):
>                               'list of multiple uris by now.')
>         else:
>             self._tabbed_view.props.current_browser.load_uri(file_path)
> -        self._load_urls()
> -
> -    def _load_urls(self):
> -        if self.model.data['currents'] != None:
> -            first = True
> -            for current_tab in self.model.data['currents']:
> -                if first:
> -                    browser = self._tabbed_view.current_browser
> -                    first = False
> -                else:
> -                    browser = Browser()
> -                    self._tabbed_view._append_tab(browser)
> -                browser.load_uri(current_tab['url'])
>
>     def write_file(self, file_path):
>         if not self.metadata['mime_type']:
> @@ -503,9 +494,12 @@ class WebActivity(activity.Activity):
>             for n in range(0, self._tabbed_view.get_n_pages()):
>                 n_browser = self._tabbed_view.get_nth_page(n)
>                 if n_browser != None:
> -                    nsiuri = browser.progress.location
> -                    ui_uri = browser.get_url_from_nsiuri(nsiuri)
> -                    info = {'title': browser.props.title, 'url': ui_uri}
> +                    nsiuri = n_browser.progress.location
> +                    ui_uri = n_browser.get_url_from_nsiuri(nsiuri)
> +                    history_index = n_browser.get_history_index()
> +                    info = {'title': n_browser.props.title, 'url': ui_uri,
> +                            'history_index': history_index}
> +
>                     self.model.data['currents'].append(info)
>
>             f = open(file_path, 'w')
> diff --git a/webtoolbar.py b/webtoolbar.py
> index 8b0e108..6cb3ee7 100644
> --- a/webtoolbar.py
> +++ b/webtoolbar.py
> @@ -355,6 +355,7 @@ class PrimaryToolbar(ToolbarBase):
>         self._history = browser.history
>         self._session_history_changed_hid = self._history.connect(
>                 'session-history-changed',
> self._session_history_changed_cb)
> +        self._reload_session_history()
>
>         if self._browser is not None:
>             self._browser.disconnect(self._title_changed_hid)
> --
> 1.7.4.4
>
>


-- 
Gonzalo Odiard
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sugarlabs.org/archive/sugar-devel/attachments/20110608/d28baf2f/attachment.html>


More information about the Sugar-devel mailing list