fix: responsive toolbar and Chromium resize on screen geometry change
This commit is contained in:
+38
@@ -128,6 +128,29 @@ class CDP:
|
||||
threading.Thread(target=self._send, args=(method, params),
|
||||
daemon=True).start()
|
||||
|
||||
def resize_window(self, x, y, w, h):
|
||||
"""Move and resize the Chrome window via CDP Browser.setWindowBounds."""
|
||||
if not self.ready:
|
||||
return
|
||||
import websocket
|
||||
with self._lock:
|
||||
try:
|
||||
ws = websocket.create_connection(self._ws_url(), timeout=3)
|
||||
ws.send(json.dumps({"id": 1, "method": "Browser.getWindowForTarget"}))
|
||||
resp = json.loads(ws.recv())
|
||||
wid = resp.get("result", {}).get("windowId")
|
||||
if wid:
|
||||
ws.send(json.dumps({"id": 2,
|
||||
"method": "Browser.setWindowBounds",
|
||||
"params": {"windowId": wid,
|
||||
"bounds": {"left": x, "top": y,
|
||||
"width": w, "height": h,
|
||||
"windowState": "normal"}}}))
|
||||
ws.recv()
|
||||
ws.close()
|
||||
except Exception as e:
|
||||
print(f"CDP resize error: {e}")
|
||||
|
||||
def navigate(self, url):
|
||||
self._async("Page.navigate", {"url": url})
|
||||
|
||||
@@ -486,6 +509,21 @@ class KioskOverlay(QWidget):
|
||||
self.bm_panel = BookmarkPanel(cdp, self)
|
||||
self.show()
|
||||
|
||||
# Reflow toolbar and Chrome when screen/RDP size changes
|
||||
screen = QApplication.instance().primaryScreen()
|
||||
screen.geometryChanged.connect(self._on_screen_resize)
|
||||
|
||||
def _on_screen_resize(self, rect):
|
||||
global SCREEN_W, SCREEN_H
|
||||
SCREEN_W, SCREEN_H = rect.width(), rect.height()
|
||||
self.setGeometry(0, 0, SCREEN_W, TOP_H)
|
||||
self.resize(SCREEN_W, TOP_H)
|
||||
# Resize Chrome after brief delay so X has settled
|
||||
QTimer.singleShot(300, self._resize_chrome)
|
||||
|
||||
def _resize_chrome(self):
|
||||
self.cdp.resize_window(0, TOP_H, SCREEN_W, SCREEN_H - TOP_H)
|
||||
|
||||
def _build_toolbar(self):
|
||||
bar = QWidget(); bar.setFixedHeight(TOOLBAR_H)
|
||||
bar.setStyleSheet(f"background:{TOOLBAR_COLOR};")
|
||||
|
||||
Reference in New Issue
Block a user