aboutsummaryrefslogtreecommitdiffstats
path: root/examples/webenginewidgets/tabbedbrowser/browsertabwidget.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/webenginewidgets/tabbedbrowser/browsertabwidget.py')
-rw-r--r--examples/webenginewidgets/tabbedbrowser/browsertabwidget.py27
1 files changed, 25 insertions, 2 deletions
diff --git a/examples/webenginewidgets/tabbedbrowser/browsertabwidget.py b/examples/webenginewidgets/tabbedbrowser/browsertabwidget.py
index d85b8ad3d..29411d368 100644
--- a/examples/webenginewidgets/tabbedbrowser/browsertabwidget.py
+++ b/examples/webenginewidgets/tabbedbrowser/browsertabwidget.py
@@ -43,11 +43,12 @@ import sys
from bookmarkwidget import BookmarkWidget
from webengineview import WebEngineView
+from historywindow import HistoryWindow
from PySide2 import QtCore
from PySide2.QtCore import QPoint, Qt, QUrl
from PySide2.QtWidgets import (QAction, QMenu, QTabBar, QTabWidget)
from PySide2.QtWebEngineWidgets import (QWebEngineDownloadItem,
- QWebEnginePage, QWebEngineProfile)
+ QWebEngineHistory, QWebEnginePage, QWebEngineProfile)
class BrowserTabWidget(QTabWidget):
"""Enables having several tabs with QWebEngineView."""
@@ -61,6 +62,7 @@ class BrowserTabWidget(QTabWidget):
self.setTabsClosable(True)
self._window_factory_function = window_factory_function
self._webengineviews = []
+ self._history_windows = {} # map WebengineView to HistoryWindow
self.currentChanged.connect(self._current_changed)
self.tabCloseRequested.connect(self.handle_tab_close_request)
self._actions_enabled = {}
@@ -165,6 +167,24 @@ class BrowserTabWidget(QTabWidget):
def select_all(self):
self._trigger_action(QWebEnginePage.SelectAll)
+ def show_history(self):
+ index = self.currentIndex()
+ if index >= 0:
+ webengineview = self._webengineviews[index]
+ history_window = self._history_windows.get(webengineview)
+ if not history_window:
+ history = webengineview.page().history()
+ history_window = HistoryWindow(history, self)
+ history_window.open_url.connect(self.load)
+ history_window.setWindowFlags(history_window.windowFlags()
+ | Qt.Window)
+ history_window.setWindowTitle('History')
+ self._history_windows[webengineview] = history_window
+ else:
+ history_window.refresh()
+ history_window.show()
+ history_window.raise_()
+
def zoom_factor(self):
return self._webengineviews[0].zoomFactor() if self._webengineviews else 1.0
@@ -200,7 +220,10 @@ class BrowserTabWidget(QTabWidget):
def handle_tab_close_request(self, index):
if (index >= 0 and self.count() > 1):
- self._webengineviews.remove(self._webengineviews[index])
+ webengineview = self._webengineviews[index]
+ if self._history_windows.get(webengineview):
+ del self._history_windows[webengineview]
+ self._webengineviews.remove(webengineview)
self.removeTab(index)
def close_current_tab(self):