Show WATCH Cursor when the page is loading and LEFT_PTR when the load finishes.
This changes take in consideration the tab that the user is watching, so the cursor refers to the state of the current browser / tab. Signed-off-by: Manuel Kaufmann <humi...@gmail.com> --- browser.py | 21 +++++++++++++++++++++ webactivity.py | 16 ++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/browser.py b/browser.py index de546f2..99b05d4 100644 --- a/browser.py +++ b/browser.py @@ -39,6 +39,8 @@ import globalhistory import downloadmanager from pdfviewer import PDFTabPage +from webactivity import NORMAL_CURSOR, WATCH_CURSOR + ZOOM_ORIGINAL = 1.0 _ZOOM_AMOUNT = 0.1 _LIBRARY_PATH = '/usr/share/library-common/index.html' @@ -188,10 +190,26 @@ class TabbedView(BrowserNotebook): self.set_current_page(next_index) tab_page.setup(url) + def __load_status_changed_cb(self, widget, param): + # Do not change the cursor if the load-status changed is not + # on the current browser + if self.props.current_browser != widget: + return + + status = widget.get_load_status() + if status in (WebKit.LoadStatus.PROVISIONAL, + WebKit.LoadStatus.COMMITTED, + WebKit.LoadStatus.FIRST_VISUALLY_NON_EMPTY_LAYOUT): + self.get_window().set_cursor(WATCH_CURSOR) + elif status in (WebKit.LoadStatus.FAILED, + WebKit.LoadStatus.FINISHED): + self.get_window().set_cursor(NORMAL_CURSOR) + def add_tab(self, next_to_current=False): browser = Browser() browser.connect('new-tab', self.__new_tab_cb) browser.connect('open-pdf', self.__open_pdf_in_new_tab_cb) + browser.connect('notify::load-status', self.__load_status_changed_cb) if next_to_current: self._insert_tab_next(browser) @@ -318,6 +336,8 @@ class TabbedView(BrowserNotebook): browser = Browser() browser.connect('new-tab', self.__new_tab_cb) browser.connect('open-pdf', self.__open_pdf_in_new_tab_cb) + browser.connect('notify::load-status', + self.__load_status_changed_cb) self._append_tab(browser) browser.set_history(tab_history) @@ -404,6 +424,7 @@ class TabLabel(Gtk.HBox): def __load_status_changed_cb(self, widget, param): status = widget.get_load_status() + if status == WebKit.LoadStatus.FAILED: self._label.set_text(self._title) elif WebKit.LoadStatus.PROVISIONAL <= status \ diff --git a/webactivity.py b/webactivity.py index 24f3b44..88555e6 100644 --- a/webactivity.py +++ b/webactivity.py @@ -54,6 +54,9 @@ from sugar3.graphics.toolbarbox import ToolbarButton PROFILE_VERSION = 2 +NORMAL_CURSOR = Gdk.Cursor(Gdk.CursorType.LEFT_PTR) +WATCH_CURSOR = Gdk.Cursor(Gdk.CursorType.WATCH) + _profile_version = 0 _profile_path = os.path.join(activity.get_activity_root(), 'data/gecko') _version_file = os.path.join(_profile_path, 'version') @@ -169,6 +172,7 @@ class WebActivity(activity.Activity): self._force_close = False self._tabbed_view = TabbedView() self._tabbed_view.connect('focus-url-entry', self._on_focus_url_entry) + self._tabbed_view.connect('switch-page', self.__switch_page_cb) self._tray = HTray() self.set_tray(self._tray, Gtk.PositionType.BOTTOM) @@ -596,6 +600,18 @@ class WebActivity(activity.Activity): downloadmanager.remove_all_downloads() self.close() + def __switch_page_cb(self, tabbed_view, page, page_num): + browser = page._browser + status = browser.get_load_status() + + if status in (WebKit.LoadStatus.COMMITTED, + WebKit.LoadStatus.FIRST_VISUALLY_NON_EMPTY_LAYOUT): + self.get_window().set_cursor(WATCH_CURSOR) + elif status in (WebKit.LoadStatus.PROVISIONAL, + WebKit.LoadStatus.FAILED, + WebKit.LoadStatus.FINISHED): + self.get_window().set_cursor(NORMAL_CURSOR) + def get_document_path(self, async_cb, async_err_cb): browser = self._tabbed_view.props.current_browser browser.get_source(async_cb, async_err_cb) -- 1.7.11.4 _______________________________________________ Sugar-devel mailing list Sugar-devel@lists.sugarlabs.org http://lists.sugarlabs.org/listinfo/sugar-devel