FIX: modify touchpad translate in Canvas3D

1. invert touchpad move direction
2. fix canvas 3d move with rotation
3. press shift for move

Change-Id: I9c7f39eba45a168c92d4459cd88896d26ec6e8db
This commit is contained in:
chunmao.guo 2022-07-27 16:16:43 +08:00 committed by Lane.Wei
parent 8c39e3f6f5
commit ddee1dacaf
2 changed files with 8 additions and 4 deletions

View File

@ -2952,9 +2952,12 @@ void GLCanvas3D::on_gesture(wxGestureEvent &evt)
auto & camera = wxGetApp().plater()->get_camera(); auto & camera = wxGetApp().plater()->get_camera();
if (evt.GetEventType() == wxEVT_GESTURE_PAN) { if (evt.GetEventType() == wxEVT_GESTURE_PAN) {
auto p = evt.GetPosition();
auto d = static_cast<wxPanGestureEvent&>(evt).GetDelta(); auto d = static_cast<wxPanGestureEvent&>(evt).GetDelta();
Vec3d delta{(double) d.x, (double) d.y, 0}; float z = 0;
camera.set_target(camera.get_target() + delta); const Vec3d &p2 = _mouse_to_3d({p.x, p.y}, &z);
const Vec3d &p1 = _mouse_to_3d({p.x - d.x, p.y - d.y}, &z);
camera.set_target(camera.get_target() + p2 - p1);
} else if (evt.GetEventType() == wxEVT_GESTURE_ZOOM) { } else if (evt.GetEventType() == wxEVT_GESTURE_ZOOM) {
static float zoom_start = 1; static float zoom_start = 1;
if (evt.IsGestureStart()) if (evt.IsGestureStart())

View File

@ -160,9 +160,10 @@ wxEvtHandler * _gestureHandler = nullptr;
- (void) scrollWheel2:(NSEvent *)event - (void) scrollWheel2:(NSEvent *)event
{ {
if (_gestureHandler && event.hasPreciseScrollingDeltas) { bool shiftDown = [event modifierFlags] & NSShiftKeyMask;
if (_gestureHandler && shiftDown && event.hasPreciseScrollingDeltas) {
wxPanGestureEvent evt; wxPanGestureEvent evt;
evt.SetDelta({-(int)[event scrollingDeltaX], (int)[event scrollingDeltaY]}); evt.SetDelta({-(int)[event scrollingDeltaX], - (int)[event scrollingDeltaY]});
_gestureHandler->ProcessEvent(evt); _gestureHandler->ProcessEvent(evt);
} else { } else {
[self scrollWheel2: event]; [self scrollWheel2: event];