Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/kliment/Printrun.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkliment <kliment.yanev@gmail.com>2021-02-02 13:52:31 +0300
committerGitHub <noreply@github.com>2021-02-02 13:52:31 +0300
commit669375df09592d52fc6eb0cc81507ccc94940c42 (patch)
treec30c6941dd540149a4004a8f3b8b0560cbd1e89c
parent5d83a835eb42f6614b4dfed8314dc93d18f7d122 (diff)
parente0e8046621880f96d5363da452c86f0ad9096d89 (diff)
Merge pull request #1157 from a2k-hanlon/fix-3dview-hires
Fix poor 3D view interaction behaviour on high-DPI screens
-rwxr-xr-xprintrun/gcview.py2
-rw-r--r--printrun/gl/panel.py14
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])