Skip to content

Commit 5df871a

Browse files
committed
🐛 fix: 🐛 fix(viewer): re-enable DRM/WebGL for Spotify + remove resize lock
- re-enable PluginsEnabled → Widevine/DRM playback works again - remove WebGLEnabled from disabled list → sites using WebGL render OK - remove _ResizeGrip subclass + _lock_size/_unlock_size mechanism - keep JS injection neutralizing window.resizeTo/resizeBy (proper fix) - use standard QSizeGrip → user can freely resize window
1 parent 7115bc2 commit 5df871a

1 file changed

Lines changed: 3 additions & 43 deletions

File tree

biglinux-webapps/usr/bin/big-webapps-viewer

Lines changed: 3 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
CSD headerbar replicating GTK4/Adwaita style. Fullscreen auto-hide overlay.
44
"""
55

6-
APP_VERSION = "3.4.0"
6+
APP_VERSION = "3.4.1"
77

88
import argparse
99
import json
@@ -351,18 +351,6 @@ class NavOverlay(QWidget):
351351
return btn
352352

353353

354-
class _ResizeGrip(QSizeGrip):
355-
"""SizeGrip that unlocks window resize during user drag."""
356-
357-
def mousePressEvent(self, e):
358-
self.parentWidget()._unlock_size()
359-
super().mousePressEvent(e)
360-
361-
def mouseReleaseEvent(self, e):
362-
super().mouseReleaseEvent(e)
363-
self.parentWidget()._lock_size()
364-
365-
366354
class WebAppWindow(QMainWindow):
367355
"""CSD window + Chromium WebEngine. Adwaita-style headerbar."""
368356

@@ -373,35 +361,16 @@ class WebAppWindow(QMainWindow):
373361
self.setWindowFlags(Qt.FramelessWindowHint | Qt.Window)
374362
self.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground, True)
375363

376-
# resize lock: only user-initiated resize (grip drag) is allowed
377-
self._resize_locked = False
378-
379364
self._setup_profile(app_id)
380365
self._setup_ui(url, title, icon)
381366
self._setup_shortcuts()
382367
self._load_geometry()
383368

384-
# lock window size hard via min/max constraints
385-
self._lock_size()
386-
387369
# fullscreen hover detection
388370
self._hover_timer = QTimer(self)
389371
self._hover_timer.timeout.connect(self._check_hover)
390372
self._hover_timer.start(150)
391373

392-
def _lock_size(self) -> None:
393-
"""Lock current size by setting min=max=current."""
394-
self._resize_locked = True
395-
s = self.size()
396-
self.setMinimumSize(s)
397-
self.setMaximumSize(s)
398-
399-
def _unlock_size(self) -> None:
400-
"""Unlock resize constraints."""
401-
self._resize_locked = False
402-
self.setMinimumSize(0, 0)
403-
self.setMaximumSize(16777215, 16777215)
404-
405374
def _setup_profile(self, app_id: str) -> None:
406375
storage = str(DATA_BASE / app_id)
407376
Path(storage).mkdir(parents=True, exist_ok=True)
@@ -440,6 +409,7 @@ class WebAppWindow(QMainWindow):
440409
QWebEngineSettings.WebAttribute.JavascriptEnabled,
441410
QWebEngineSettings.WebAttribute.LocalStorageEnabled,
442411
QWebEngineSettings.WebAttribute.ScrollAnimatorEnabled,
412+
QWebEngineSettings.WebAttribute.PluginsEnabled,
443413
QWebEngineSettings.WebAttribute.JavascriptCanAccessClipboard,
444414
):
445415
s.setAttribute(attr, True)
@@ -451,7 +421,6 @@ class WebAppWindow(QMainWindow):
451421
)
452422
# disable non-essential features → reduce RAM
453423
for off_attr in (
454-
QWebEngineSettings.WebAttribute.WebGLEnabled,
455424
QWebEngineSettings.WebAttribute.AutoLoadIconsForPage,
456425
QWebEngineSettings.WebAttribute.TouchIconsEnabled,
457426
):
@@ -505,7 +474,7 @@ class WebAppWindow(QMainWindow):
505474
self.webview.page().newWindowRequested.connect(self._on_new_window)
506475

507476
# resize grip — bottom-right
508-
self._grip = _ResizeGrip(self)
477+
self._grip = QSizeGrip(self)
509478
self._grip.setFixedSize(16, 16)
510479

511480
def _setup_shortcuts(self) -> None:
@@ -538,7 +507,6 @@ class WebAppWindow(QMainWindow):
538507
self.nav.raise_()
539508

540509
def _toggle_fullscreen(self) -> None:
541-
self._unlock_size()
542510
if self.isFullScreen():
543511
self._exit_fullscreen()
544512
else:
@@ -550,15 +518,12 @@ class WebAppWindow(QMainWindow):
550518
def _exit_fullscreen(self) -> None:
551519
if not self.isFullScreen():
552520
return
553-
self._unlock_size()
554521
self.header.setVisible(True)
555522
self._grip.setVisible(True)
556523
self.showNormal()
557524
self._apply_mask()
558-
self._lock_size()
559525

560526
def _toggle_maximize(self) -> None:
561-
self._unlock_size()
562527
fg = _get_theme_colors()["fg"]
563528
if self.isMaximized():
564529
self.showNormal()
@@ -567,9 +532,6 @@ class WebAppWindow(QMainWindow):
567532
self.showMaximized()
568533
self.header.max_btn.setIcon(_make_adw_icon("restore", size=20, fg_hex=fg))
569534
self._apply_mask()
570-
# re-lock at new size (but not when maximized — WM controls it)
571-
if not self.isMaximized():
572-
self._lock_size()
573535

574536
def _on_title(self, title: str) -> None:
575537
if title:
@@ -627,9 +589,7 @@ class WebAppWindow(QMainWindow):
627589
h = d.get("height", 720)
628590
self.resize(w, h)
629591
if d.get("maximized"):
630-
self._resize_locked = False
631592
self.showMaximized()
632-
self._resize_locked = True
633593
elif sg:
634594
x = sg.x() + (sg.width() - w) // 2
635595
y = sg.y() + (sg.height() - h) // 2

0 commit comments

Comments
 (0)