Ticket #4087: 0001-load-status-signal-handled-properly.patch

File 0001-load-status-signal-handled-properly.patch, 3.1 KB (added by humitos, 11 years ago)
  • browser.py

    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): 
    9595        self.props.show_border = False
    9696        self.props.scrollable = True
    9797
     98        # Used to connect and disconnect functions when 'switch-page'
     99        self._browser = None
     100        self._load_status_changed_hid = None
     101
    98102        self.connect('size-allocate', self.__size_allocate_cb)
    99103        self.connect('page-added', self.__page_added_cb)
    100104        self.connect('page-removed', self.__page_removed_cb)
    101105
     106        self.connect_after('switch-page', self.__switch_page_cb)
     107
    102108        self.add_tab()
    103109        self._update_closing_buttons()
    104110        self._update_tab_sizes()
    105111
     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
    106124    def normalize_or_autosearch_url(self, url):
    107125        """Normalize the url input or return a url for search.
    108126
    class TabbedView(BrowserNotebook): 
    193211        tab_page.setup(url)
    194212
    195213    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 
    203214        status = widget.get_load_status()
    204215        if status in (WebKit.LoadStatus.PROVISIONAL,
    205216                      WebKit.LoadStatus.COMMITTED,
    class TabbedView(BrowserNotebook): 
    213224        browser = Browser()
    214225        browser.connect('new-tab', self.__new_tab_cb)
    215226        browser.connect('open-pdf', self.__open_pdf_in_new_tab_cb)
    216         browser.connect('notify::load-status', self.__load_status_changed_cb)
    217227
    218228        if next_to_current:
    219229            self._insert_tab_next(browser)
    class TabbedView(BrowserNotebook): 
    338348                browser = Browser()
    339349                browser.connect('new-tab', self.__new_tab_cb)
    340350                browser.connect('open-pdf', self.__open_pdf_in_new_tab_cb)
    341                 browser.connect('notify::load-status',
    342                                 self.__load_status_changed_cb)
    343351                self._append_tab(browser)
    344352                browser.set_history(tab_history)
    345353