From a07d27a0356f312602c15bbb55cfad553a614118 Mon Sep 17 00:00:00 2001 From: Manuel Kaufmann Date: Mon, 10 Sep 2012 20:52:45 +0000 Subject: Busy indication SL #851 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 Acked-by: Manuel QuiƱones --- diff --git a/browser.py b/browser.py index de546f2..0d94649 100644 --- a/browser.py +++ b/browser.py @@ -188,10 +188,28 @@ 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(Gdk.Cursor(Gdk.CursorType.WATCH)) + elif status in (WebKit.LoadStatus.FAILED, + WebKit.LoadStatus.FINISHED): + self.get_window().set_cursor(Gdk.Cursor(Gdk.CursorType.LEFT_PTR)) + 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 cdd556f..75b857b 100644 --- a/webactivity.py +++ b/webactivity.py @@ -169,6 +169,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) @@ -626,6 +627,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(Gdk.Cursor(Gdk.CursorType.WATCH)) + elif status in (WebKit.LoadStatus.PROVISIONAL, + WebKit.LoadStatus.FAILED, + WebKit.LoadStatus.FINISHED): + self.get_window().set_cursor(Gdk.Cursor(Gdk.CursorType.LEFT_PTR)) + 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) -- cgit v0.9.1