From 13d73359d4dda61f2f10c00901164c36ef512519 Mon Sep 17 00:00:00 2001 From: Jussi Timperi Date: Sat, 10 Sep 2016 16:07:29 +0300 Subject: [PATCH 1/4] QtWebKit: Handle visibility API closes #1886 --- qutebrowser/browser/webkit/webview.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/qutebrowser/browser/webkit/webview.py b/qutebrowser/browser/webkit/webview.py index ec0da7f17..67ca268fb 100644 --- a/qutebrowser/browser/webkit/webview.py +++ b/qutebrowser/browser/webkit/webview.py @@ -72,6 +72,9 @@ class WebView(QWebView): page = webpage.BrowserPage(self.win_id, self._tab_id, tab.data, parent=self) + page.setVisibilityState( + QWebPage.VisibilityStateVisible if self.isVisible() + else QWebPage.VisibilityStateHidden) self.setPage(page) mode_manager = objreg.get('mode-manager', scope='window', @@ -240,3 +243,27 @@ class WebView(QWebView): self.shutting_down.connect(menu.close) modeman.instance(self.win_id).entered.connect(menu.close) menu.exec_(e.globalPos()) + + def showEvent(self, e): + """Extend showEvent to set the page visibility state to visible. + + Args: + e: The QShowEvent. + + Return: + The superclass event return value. + """ + self.page().setVisibilityState(QWebPage.VisibilityStateVisible) + super().showEvent(e) + + def hideEvent(self, e): + """Extend hideEvent to set the page visibility state to hidden. + + Args: + e: The QHideEvent. + + Return: + The superclass event return value. + """ + self.page().setVisibilityState(QWebPage.VisibilityStateHidden) + super().hideEvent(e) From 6437a28184f81868d7f80e2bb34912b57eab5cd9 Mon Sep 17 00:00:00 2001 From: Jussi Timperi Date: Sat, 10 Sep 2016 17:55:00 +0300 Subject: [PATCH 2/4] QtWebKit: Add version checks to visibility API --- qutebrowser/browser/webkit/webview.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/qutebrowser/browser/webkit/webview.py b/qutebrowser/browser/webkit/webview.py index 67ca268fb..7faa0200d 100644 --- a/qutebrowser/browser/webkit/webview.py +++ b/qutebrowser/browser/webkit/webview.py @@ -72,9 +72,12 @@ class WebView(QWebView): page = webpage.BrowserPage(self.win_id, self._tab_id, tab.data, parent=self) - page.setVisibilityState( - QWebPage.VisibilityStateVisible if self.isVisible() - else QWebPage.VisibilityStateHidden) + + if qtutils.version_check('5.2'): + page.setVisibilityState( + page.VisibilityStateVisible if self.isVisible() + else page.VisibilityStateHidden) + self.setPage(page) mode_manager = objreg.get('mode-manager', scope='window', @@ -253,7 +256,10 @@ class WebView(QWebView): Return: The superclass event return value. """ - self.page().setVisibilityState(QWebPage.VisibilityStateVisible) + if qtutils.version_check('5.2'): + page = self.page() + page.setVisibilityState(page.VisibilityStateVisible) + super().showEvent(e) def hideEvent(self, e): @@ -265,5 +271,8 @@ class WebView(QWebView): Return: The superclass event return value. """ - self.page().setVisibilityState(QWebPage.VisibilityStateHidden) + if qtutils.version_check('5.2'): + page = self.page() + page.setVisibilityState(page.VisibilityStateHidden) + super().hideEvent(e) From 1adc308676d6c463f1b8e6ae3069efca87327f8f Mon Sep 17 00:00:00 2001 From: Jussi Timperi Date: Sun, 11 Sep 2016 13:04:58 +0300 Subject: [PATCH 3/4] Access enums by their base class --- qutebrowser/browser/webkit/webview.py | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/qutebrowser/browser/webkit/webview.py b/qutebrowser/browser/webkit/webview.py index 7faa0200d..32c980d33 100644 --- a/qutebrowser/browser/webkit/webview.py +++ b/qutebrowser/browser/webkit/webview.py @@ -73,10 +73,9 @@ class WebView(QWebView): page = webpage.BrowserPage(self.win_id, self._tab_id, tab.data, parent=self) - if qtutils.version_check('5.2'): - page.setVisibilityState( - page.VisibilityStateVisible if self.isVisible() - else page.VisibilityStateHidden) + page.setVisibilityState( + QWebPage.VisibilityStateVisible if self.isVisible() + else QWebPage.VisibilityStateHidden) self.setPage(page) @@ -256,9 +255,7 @@ class WebView(QWebView): Return: The superclass event return value. """ - if qtutils.version_check('5.2'): - page = self.page() - page.setVisibilityState(page.VisibilityStateVisible) + self.page().setVisibilityState(QWebPage.VisibilityStateVisible) super().showEvent(e) @@ -271,8 +268,6 @@ class WebView(QWebView): Return: The superclass event return value. """ - if qtutils.version_check('5.2'): - page = self.page() - page.setVisibilityState(page.VisibilityStateHidden) + self.page().setVisibilityState(QWebPage.VisibilityStateHidden) super().hideEvent(e) From 19d9ec374dcb75a69a361f6fc4a1cfe43ab8e14a Mon Sep 17 00:00:00 2001 From: Jussi Timperi Date: Sun, 11 Sep 2016 13:12:27 +0300 Subject: [PATCH 4/4] Handle the missing attribute --- qutebrowser/browser/webkit/webview.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/qutebrowser/browser/webkit/webview.py b/qutebrowser/browser/webkit/webview.py index 32c980d33..94519fa86 100644 --- a/qutebrowser/browser/webkit/webview.py +++ b/qutebrowser/browser/webkit/webview.py @@ -73,9 +73,12 @@ class WebView(QWebView): page = webpage.BrowserPage(self.win_id, self._tab_id, tab.data, parent=self) - page.setVisibilityState( - QWebPage.VisibilityStateVisible if self.isVisible() - else QWebPage.VisibilityStateHidden) + try: + page.setVisibilityState( + QWebPage.VisibilityStateVisible if self.isVisible() + else QWebPage.VisibilityStateHidden) + except AttributeError: + pass self.setPage(page) @@ -255,7 +258,10 @@ class WebView(QWebView): Return: The superclass event return value. """ - self.page().setVisibilityState(QWebPage.VisibilityStateVisible) + try: + self.page().setVisibilityState(QWebPage.VisibilityStateVisible) + except AttributeError: + pass super().showEvent(e) @@ -268,6 +274,9 @@ class WebView(QWebView): Return: The superclass event return value. """ - self.page().setVisibilityState(QWebPage.VisibilityStateHidden) + try: + self.page().setVisibilityState(QWebPage.VisibilityStateHidden) + except AttributeError: + pass super().hideEvent(e)