diff options
Diffstat (limited to 'examples/webenginewidgets/simplebrowser/webpopupwindow.py')
-rw-r--r-- | examples/webenginewidgets/simplebrowser/webpopupwindow.py | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/examples/webenginewidgets/simplebrowser/webpopupwindow.py b/examples/webenginewidgets/simplebrowser/webpopupwindow.py new file mode 100644 index 000000000..fac27a61a --- /dev/null +++ b/examples/webenginewidgets/simplebrowser/webpopupwindow.py @@ -0,0 +1,53 @@ +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +from PySide6.QtWidgets import QLineEdit, QSizePolicy, QWidget, QVBoxLayout +from PySide6.QtGui import QAction +from PySide6.QtCore import QUrl, Qt, Slot + +from webpage import WebPage + + +class WebPopupWindow(QWidget): + + def __init__(self, view, profile, parent=None): + super().__init__(parent, Qt.Window) + self.m_urlLineEdit = QLineEdit(self) + self._url_line_edit = QLineEdit() + self._fav_action = QAction(self) + self._view = view + + self.setAttribute(Qt.WA_DeleteOnClose) + self.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) + + layout = QVBoxLayout(self) + layout.setContentsMargins(0, 0, 0, 0) + layout.addWidget(self._url_line_edit) + layout.addWidget(self._view) + + self._view.setPage(WebPage(profile, self._view)) + self._view.setFocus() + + self._url_line_edit.setReadOnly(True) + self._url_line_edit.addAction(self._fav_action, QLineEdit.LeadingPosition) + + self._view.titleChanged.connect(self.setWindowTitle) + self._view.urlChanged.connect(self._url_changed) + self._view.fav_icon_changed.connect(self._fav_action.setIcon) + p = self._view.page() + p.geometryChangeRequested.connect(self.handle_geometry_change_requested) + p.windowCloseRequested.connect(self.close) + + @Slot(QUrl) + def _url_changed(self, url): + self._url_line_edit.setText(url.toDisplayString()) + + def view(self): + return self._view + + def handle_geometry_change_requested(self, newGeometry): + window = self.windowHandle() + if window: + self.setGeometry(newGeometry.marginsRemoved(window.frameMargins())) + self.show() + self._view.setFocus() |