Mercurial > hg > orthanc-stone
diff Framework/Widgets/LayoutWidget.cpp @ 457:3b4df9925db6 am-touch-events
added support for 'touch' in mouse trackers. This is still a bit hacky and we need to refactor it to make it clean. Thanks to that, Pan and zoom are available together with 2 touches
author | Alain Mazy <alain@mazy.be> |
---|---|
date | Thu, 24 Jan 2019 16:42:27 +0100 |
parents | b70e9be013e4 |
children | b1377625e4ba |
line wrap: on
line diff
--- a/Framework/Widgets/LayoutWidget.cpp Wed Jan 23 13:58:51 2019 +0100 +++ b/Framework/Widgets/LayoutWidget.cpp Thu Jan 24 16:42:27 2019 +0100 @@ -68,9 +68,16 @@ } virtual void MouseMove(int x, - int y) + int y, + const std::vector<Touch>& displayTouches) { - tracker_->MouseMove(x - left_, y - top_); + std::vector<Touch> relativeTouches; + for (size_t t = 0; t < displayTouches.size(); t++) + { + relativeTouches.push_back(Touch((int)displayTouches[t].x - left_, (int)displayTouches[t].y - top_)); + } + + tracker_->MouseMove(x - left_, y - top_, relativeTouches); } }; @@ -150,14 +157,16 @@ IMouseTracker* CreateMouseTracker(MouseButton button, int x, int y, - KeyboardModifiers modifiers) + KeyboardModifiers modifiers, + const std::vector<Touch>& touches) { if (Contains(x, y)) { IMouseTracker* tracker = widget_->CreateMouseTracker(button, x - left_, y - top_, - modifiers); + modifiers, + touches); if (tracker) { return new LayoutMouseTracker(tracker, left_, top_, width_, height_); @@ -413,11 +422,12 @@ IMouseTracker* LayoutWidget::CreateMouseTracker(MouseButton button, int x, int y, - KeyboardModifiers modifiers) + KeyboardModifiers modifiers, + const std::vector<Touch>& touches) { for (size_t i = 0; i < children_.size(); i++) { - IMouseTracker* tracker = children_[i]->CreateMouseTracker(button, x, y, modifiers); + IMouseTracker* tracker = children_[i]->CreateMouseTracker(button, x, y, modifiers, touches); if (tracker != NULL) { return tracker;