diff options
author | kliment <kliment.yanev@gmail.com> | 2021-02-02 13:52:31 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-02 13:52:31 +0300 |
commit | 669375df09592d52fc6eb0cc81507ccc94940c42 (patch) | |
tree | c30c6941dd540149a4004a8f3b8b0560cbd1e89c | |
parent | 5d83a835eb42f6614b4dfed8314dc93d18f7d122 (diff) | |
parent | e0e8046621880f96d5363da452c86f0ad9096d89 (diff) |
Merge pull request #1157 from a2k-hanlon/fix-3dview-hires
Fix poor 3D view interaction behaviour on high-DPI screens
-rwxr-xr-x | printrun/gcview.py | 2 | ||||
-rw-r--r-- | printrun/gl/panel.py | 14 |
2 files changed, 9 insertions, 7 deletions
diff --git a/printrun/gcview.py b/printrun/gcview.py index bd47212..81df6bd 100755 --- a/printrun/gcview.py +++ b/printrun/gcview.py @@ -252,7 +252,7 @@ class GcodeViewPanel(wxGLPanel): if delta > 0: self.layerup() else: self.layerdown() return - x, y = event.GetPosition() + x, y = event.GetPosition() * self.GetContentScaleFactor() x, y, _ = self.mouse_to_3d(x, y) if delta > 0: self.zoom(factor, (x, y)) diff --git a/printrun/gl/panel.py b/printrun/gl/panel.py index a5c4617..e1b1013 100644 --- a/printrun/gl/panel.py +++ b/printrun/gl/panel.py @@ -205,7 +205,7 @@ class wxGLPanel(BASE_CLASS): def OnReshape(self): """Reshape the OpenGL viewport based on the size of the window""" - size = self.GetClientSize() + size = self.GetClientSize() * self.GetContentScaleFactor() oldwidth, oldheight = self.width, self.height width, height = size.width, size.height if width < 1 or height < 1: @@ -428,12 +428,13 @@ class wxGLPanel(BASE_CLASS): return mulquat(rotz,rota) def handle_rotation(self, event): + content_scale_factor = self.GetContentScaleFactor() if self.initpos is None: - self.initpos = event.GetPosition() + self.initpos = event.GetPosition() * content_scale_factor else: p1 = self.initpos - p2 = event.GetPosition() - sz = self.GetClientSize() + p2 = event.GetPosition() * content_scale_factor + sz = self.GetClientSize() * content_scale_factor p1x = p1[0] / (sz[0] / 2) - 1 p1y = 1 - p1[1] / (sz[1] / 2) p2x = p2[0] / (sz[0] / 2) - 1 @@ -447,11 +448,12 @@ class wxGLPanel(BASE_CLASS): self.initpos = p2 def handle_translation(self, event): + content_scale_factor = self.GetContentScaleFactor() if self.initpos is None: - self.initpos = event.GetPosition() + self.initpos = event.GetPosition() * content_scale_factor else: p1 = self.initpos - p2 = event.GetPosition() + p2 = event.GetPosition() * content_scale_factor if self.orthographic: x1, y1, _ = self.mouse_to_3d(p1[0], p1[1]) x2, y2, _ = self.mouse_to_3d(p2[0], p2[1]) |