From 781d86aac5a13e16e1b0cb9ecac842c01c45b17b Mon Sep 17 00:00:00 2001
From: Manuel Kaufmann <humitos@gmail.com>
Date: Tue, 30 Oct 2012 14:25:20 -0300
Subject: [PATCH Browse] 'load-status' signal handled properly
Connect and disconnect the callback every time that 'switch-page'
happens. So, just one callback (the current browse one) is called
every time that 'load-status' is emitted.
Signed-off-by: Manuel Kaufmann <humitos@gmail.com>
---
browser.py | 28 ++++++++++++++++++----------
1 file changed, 18 insertions(+), 10 deletions(-)
diff --git a/browser.py b/browser.py
index fad804f..b0f4768 100644
a
|
b
|
class TabbedView(BrowserNotebook): |
95 | 95 | self.props.show_border = False |
96 | 96 | self.props.scrollable = True |
97 | 97 | |
| 98 | # Used to connect and disconnect functions when 'switch-page' |
| 99 | self._browser = None |
| 100 | self._load_status_changed_hid = None |
| 101 | |
98 | 102 | self.connect('size-allocate', self.__size_allocate_cb) |
99 | 103 | self.connect('page-added', self.__page_added_cb) |
100 | 104 | self.connect('page-removed', self.__page_removed_cb) |
101 | 105 | |
| 106 | self.connect_after('switch-page', self.__switch_page_cb) |
| 107 | |
102 | 108 | self.add_tab() |
103 | 109 | self._update_closing_buttons() |
104 | 110 | self._update_tab_sizes() |
105 | 111 | |
| 112 | def __switch_page_cb(self, tabbed_view, page, page_num): |
| 113 | if tabbed_view.get_n_pages(): |
| 114 | self._connect_to_browser(tabbed_view.props.current_browser) |
| 115 | |
| 116 | def _connect_to_browser(self, browser): |
| 117 | if self._browser is not None: |
| 118 | self._browser.disconnect(self._load_status_changed_hid) |
| 119 | |
| 120 | self._browser = browser |
| 121 | self._load_status_changed_hid = self._browser.connect( |
| 122 | 'notify::load-status', self.__load_status_changed_cb) |
| 123 | |
106 | 124 | def normalize_or_autosearch_url(self, url): |
107 | 125 | """Normalize the url input or return a url for search. |
108 | 126 | |
… |
… |
class TabbedView(BrowserNotebook): |
193 | 211 | tab_page.setup(url) |
194 | 212 | |
195 | 213 | def __load_status_changed_cb(self, widget, param): |
196 | | """Do not change the cursor if the load-status changed is not |
197 | | on the current browser. |
198 | | |
199 | | """ |
200 | | if self.props.current_browser != widget: |
201 | | return |
202 | | |
203 | 214 | status = widget.get_load_status() |
204 | 215 | if status in (WebKit.LoadStatus.PROVISIONAL, |
205 | 216 | WebKit.LoadStatus.COMMITTED, |
… |
… |
class TabbedView(BrowserNotebook): |
213 | 224 | browser = Browser() |
214 | 225 | browser.connect('new-tab', self.__new_tab_cb) |
215 | 226 | browser.connect('open-pdf', self.__open_pdf_in_new_tab_cb) |
216 | | browser.connect('notify::load-status', self.__load_status_changed_cb) |
217 | 227 | |
218 | 228 | if next_to_current: |
219 | 229 | self._insert_tab_next(browser) |
… |
… |
class TabbedView(BrowserNotebook): |
338 | 348 | browser = Browser() |
339 | 349 | browser.connect('new-tab', self.__new_tab_cb) |
340 | 350 | browser.connect('open-pdf', self.__open_pdf_in_new_tab_cb) |
341 | | browser.connect('notify::load-status', |
342 | | self.__load_status_changed_cb) |
343 | 351 | self._append_tab(browser) |
344 | 352 | browser.set_history(tab_history) |
345 | 353 | |