Snapshot: fixed code to work with all supported platforms.

Mon, 11 Jan 2021 19:04:31 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 11 Jan 2021 19:04:31 +0100
changeset 7966
3afa7b9e51b0
parent 7965
48fbf9149d16
child 7967
f5da85158db2

Snapshot: fixed code to work with all supported platforms.

eric6/Snapshot/SnapshotDefaultGrabber.py file | annotate | diff | comparison | revisions
eric6/Snapshot/SnapshotFreehandGrabber.py file | annotate | diff | comparison | revisions
eric6/Snapshot/SnapshotRegionGrabber.py file | annotate | diff | comparison | revisions
--- a/eric6/Snapshot/SnapshotDefaultGrabber.py	Thu Jan 07 18:11:11 2021 +0100
+++ b/eric6/Snapshot/SnapshotDefaultGrabber.py	Mon Jan 11 19:04:31 2021 +0100
@@ -154,8 +154,16 @@
         elif mode == SnapshotModes.SelectedScreen:
             screen = QGuiApplication.screenAt(QCursor.pos())
             sgeom = screen.geometry()
-            snapshot = screen.grabWindow(
-                0, sgeom.x(), sgeom.y(), sgeom.width(), sgeom.height())
+            if Globals.isMacPlatform():
+                # macOS variant
+                snapshot = screen.grabWindow(
+                    0, sgeom.x(), sgeom.y(), sgeom.width(), sgeom.height()
+                )
+            else:
+                # Linux variant
+                # Windows variant
+                snapshot = screen.grabWindow(
+                    0, 0, 0, sgeom.width(), sgeom.height())
         else:
             snapshot = QPixmap()
         
--- a/eric6/Snapshot/SnapshotFreehandGrabber.py	Thu Jan 07 18:11:11 2021 +0100
+++ b/eric6/Snapshot/SnapshotFreehandGrabber.py	Mon Jan 11 19:04:31 2021 +0100
@@ -14,6 +14,8 @@
 )
 from PyQt5.QtWidgets import QWidget, QToolTip
 
+import Globals
+
 
 def drawPolygon(painter, polygon, outline, fill=None):
     """
@@ -82,14 +84,21 @@
         """
         Private slot to initialize the rest of the widget.
         """
-        screen = QGuiApplication.screens()[0]
-        self.__virtualGeometrie = screen.availableVirtualGeometry()
-        screen = QGuiApplication.screenAt(QCursor.pos())
-        sgeom = screen.geometry()
-        self.__pixmap = screen.grabWindow(
-            0, sgeom.x(), sgeom.y(), sgeom.width(), sgeom.height())
+        if Globals.isMacPlatform():
+            # macOS variant
+            screen = QGuiApplication.screenAt(QCursor.pos())
+            geom = screen.geometry()
+            self.__pixmap = screen.grabWindow(
+                0, geom.x(), geom.y(), geom.width(), geom.height())
+        else:
+            # Linux variant
+            # Windows variant
+            screen = QGuiApplication.screens()[0]
+            geom = screen.availableVirtualGeometry()
+            self.__pixmap = screen.grabWindow(
+                0, geom.x(), geom.y(), geom.width(), geom.height())
         self.resize(self.__pixmap.size())
-        self.move(sgeom.x(), sgeom.y())
+        self.move(geom.x(), geom.y())
         self.setCursor(Qt.CrossCursor)
         self.show()
 
--- a/eric6/Snapshot/SnapshotRegionGrabber.py	Thu Jan 07 18:11:11 2021 +0100
+++ b/eric6/Snapshot/SnapshotRegionGrabber.py	Mon Jan 11 19:04:31 2021 +0100
@@ -14,6 +14,8 @@
 )
 from PyQt5.QtWidgets import QWidget, QToolTip
 
+import Globals
+
 
 def drawRect(painter, rect, outline, fill=None):
     """
@@ -113,14 +115,21 @@
         """
         Private slot to initialize the rest of the widget.
         """
-        screen = QGuiApplication.screens()[0]
-        self.__virtualGeometrie = screen.availableVirtualGeometry()
-        screen = QGuiApplication.screenAt(QCursor.pos())
-        sgeom = screen.geometry()
-        self.__pixmap = screen.grabWindow(
-            0, sgeom.x(), sgeom.y(), sgeom.width(), sgeom.height())
+        if Globals.isMacPlatform():
+            # macOS variant
+            screen = QGuiApplication.screenAt(QCursor.pos())
+            geom = screen.geometry()
+            self.__pixmap = screen.grabWindow(
+                0, geom.x(), geom.y(), geom.width(), geom.height())
+        else:
+            # Linux variant
+            # Windows variant
+            screen = QGuiApplication.screens()[0]
+            geom = screen.availableVirtualGeometry()
+            self.__pixmap = screen.grabWindow(
+                0, geom.x(), geom.y(), geom.width(), geom.height())
         self.resize(self.__pixmap.size())
-        self.move(sgeom.x(), sgeom.y())
+        self.move(geom.x(), geom.y())
         self.setCursor(Qt.CrossCursor)
         self.show()
 

eric ide

mercurial