fix: responsive toolbar and Chromium resize on screen geometry change

This commit is contained in:
2026-05-22 13:05:41 +00:00
parent e34ea8f7c8
commit ba2d5c2f17
+38
View File
@@ -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};")