diff --git a/tests/test_screens.py b/tests/test_screens.py index 477bc38e..bad8385e 100644 --- a/tests/test_screens.py +++ b/tests/test_screens.py @@ -3,3 +3,7 @@ def test_screens(): assert len(webview.screens) > 0 + assert webview.screens[0].width > 0 + assert webview.screens[0].height > 0 + assert type(webview.screens[0].x) == int + assert type(webview.screens[0].y) == int diff --git a/webview/platforms/android.py b/webview/platforms/android.py index 9cf1cc5e..03eeb7cf 100644 --- a/webview/platforms/android.py +++ b/webview/platforms/android.py @@ -365,6 +365,7 @@ def get_current_url(_): return app.view.getUrl() def get_screens(): + logger.warning('Screen information is not supported on Android') return [] diff --git a/webview/platforms/cocoa.py b/webview/platforms/cocoa.py index a8d160af..3f1b69e8 100644 --- a/webview/platforms/cocoa.py +++ b/webview/platforms/cocoa.py @@ -1423,7 +1423,7 @@ def _size(dimensions): def get_screens(): screens = [ - Screen(s.frame().size.width, s.frame().size.height, s.frame()) for s in AppKit.NSScreen.screens() + Screen(s.frame().origin.x, s.frame().origin.y, s.frame().size.width, s.frame().size.height, s.frame()) for s in AppKit.NSScreen.screens() ] return screens diff --git a/webview/platforms/gtk.py b/webview/platforms/gtk.py index d49d14c3..6ee47bd2 100755 --- a/webview/platforms/gtk.py +++ b/webview/platforms/gtk.py @@ -942,7 +942,7 @@ def get_screens(): n = display.get_n_monitors() monitors = [Gdk.Display.get_monitor(display, i) for i in range(n)] geometries = [Gdk.Monitor.get_geometry(m) for m in monitors] - screens = [Screen(geom.width, geom.height, geom) for geom in geometries] + screens = [Screen(geom.x, geom.y, geom.width, geom.height, geom) for geom in geometries] return screens diff --git a/webview/platforms/qt.py b/webview/platforms/qt.py index ddcf08a8..bed61f92 100755 --- a/webview/platforms/qt.py +++ b/webview/platforms/qt.py @@ -1085,7 +1085,7 @@ def get_size(uid): def get_screens(): global _app _app = QApplication.instance() or QApplication(sys.argv) - screens = [Screen(s.geometry().width(), s.geometry().height(), s) for s in _app.screens()] + screens = [Screen(s.geometry().x, s.geometry().y, s.geometry().width(), s.geometry().height(), s) for s in _app.screens()] return screens diff --git a/webview/platforms/winforms.py b/webview/platforms/winforms.py index b238e690..15895bdc 100644 --- a/webview/platforms/winforms.py +++ b/webview/platforms/winforms.py @@ -936,7 +936,7 @@ def get_size(uid): def get_screens(): - screens = [Screen(s.Bounds.Width, s.Bounds.Height, s.WorkingArea) for s in WinForms.Screen.AllScreens] + screens = [Screen(s.Bounds.X, s.Bounds.Y, s.Bounds.Height, s.WorkingArea) for s in WinForms.Screen.AllScreens] return screens diff --git a/webview/screen.py b/webview/screen.py index 9808fc72..6b489c36 100644 --- a/webview/screen.py +++ b/webview/screen.py @@ -1,5 +1,7 @@ class Screen: - def __init__(self, width: int, height: int, frame: object = None) -> None: + def __init__(self, x: int, y: int, width: int, height: int, frame: object = None) -> None: + self.x = int(x) + self.y = int(y) self.width = int(width) self.height = int(height) self.frame = frame @@ -8,4 +10,4 @@ def __str__(self) -> str: return repr(self) def __repr__(self) -> str: - return '(%s, %s)' % (self.width, self.height) + return f'{self.width}x{self.height} at {self.x},{self.y}'