diff --git a/app/widget/timelinewidget/tool/pointer.cpp b/app/widget/timelinewidget/tool/pointer.cpp index 848b15585..31d17bb65 100644 --- a/app/widget/timelinewidget/tool/pointer.cpp +++ b/app/widget/timelinewidget/tool/pointer.cpp @@ -91,7 +91,7 @@ void TimelineWidget::PointerTool::MousePress(TimelineViewMouseEvent *event) if (!(event->GetModifiers() & Qt::AltModifier)) { parent()->SetBlockLinksSelected(item->block(), true); } - } else { + } else if (event->GetButton() == Qt::LeftButton) { // Start rubberband drag parent()->StartRubberBandSelect(true, !(event->GetModifiers() & Qt::AltModifier)); diff --git a/app/widget/timelinewidget/view/timelineview.cpp b/app/widget/timelinewidget/view/timelineview.cpp index 04dc87864..bcf13b5b7 100644 --- a/app/widget/timelinewidget/view/timelineview.cpp +++ b/app/widget/timelinewidget/view/timelineview.cpp @@ -81,7 +81,7 @@ void TimelineView::mousePressEvent(QMouseEvent *event) return; } - TimelineViewMouseEvent timeline_event = CreateMouseEvent(event->pos(), event->modifiers()); + TimelineViewMouseEvent timeline_event = CreateMouseEvent(event); emit MousePressed(&timeline_event); } @@ -98,7 +98,7 @@ void TimelineView::mouseMoveEvent(QMouseEvent *event) return; } - TimelineViewMouseEvent timeline_event = CreateMouseEvent(event->pos(), event->modifiers()); + TimelineViewMouseEvent timeline_event = CreateMouseEvent(event); emit MouseMoved(&timeline_event); } @@ -115,14 +115,14 @@ void TimelineView::mouseReleaseEvent(QMouseEvent *event) return; } - TimelineViewMouseEvent timeline_event = CreateMouseEvent(event->pos(), event->modifiers()); + TimelineViewMouseEvent timeline_event = CreateMouseEvent(event); emit MouseReleased(&timeline_event); } void TimelineView::mouseDoubleClickEvent(QMouseEvent *event) { - TimelineViewMouseEvent timeline_event = CreateMouseEvent(event->pos(), event->modifiers()); + TimelineViewMouseEvent timeline_event = CreateMouseEvent(event); emit MouseDoubleClicked(&timeline_event); } @@ -146,7 +146,7 @@ void TimelineView::wheelEvent(QWheelEvent *event) void TimelineView::dragEnterEvent(QDragEnterEvent *event) { - TimelineViewMouseEvent timeline_event = CreateMouseEvent(event->pos(), event->keyboardModifiers()); + TimelineViewMouseEvent timeline_event = CreateMouseEvent(event->pos(), Qt::NoButton, event->keyboardModifiers()); timeline_event.SetMimeData(event->mimeData()); timeline_event.SetEvent(event); @@ -156,7 +156,7 @@ void TimelineView::dragEnterEvent(QDragEnterEvent *event) void TimelineView::dragMoveEvent(QDragMoveEvent *event) { - TimelineViewMouseEvent timeline_event = CreateMouseEvent(event->pos(), event->keyboardModifiers()); + TimelineViewMouseEvent timeline_event = CreateMouseEvent(event->pos(), Qt::NoButton, event->keyboardModifiers()); timeline_event.SetMimeData(event->mimeData()); timeline_event.SetEvent(event); @@ -171,7 +171,7 @@ void TimelineView::dragLeaveEvent(QDragLeaveEvent *event) void TimelineView::dropEvent(QDropEvent *event) { - TimelineViewMouseEvent timeline_event = CreateMouseEvent(event->pos(), event->keyboardModifiers()); + TimelineViewMouseEvent timeline_event = CreateMouseEvent(event->pos(), Qt::NoButton, event->keyboardModifiers()); timeline_event.SetMimeData(event->mimeData()); timeline_event.SetEvent(event); @@ -273,17 +273,21 @@ TimelineCoordinate TimelineView::SceneToCoordinate(const QPointF& pt) return TimelineCoordinate(SceneToTime(pt.x()), TrackReference(ConnectedTrackType(), SceneToTrack(pt.y()))); } -TimelineViewMouseEvent TimelineView::CreateMouseEvent(const QPoint& pos, Qt::KeyboardModifiers modifiers) +TimelineViewMouseEvent TimelineView::CreateMouseEvent(QMouseEvent *event) +{ + return CreateMouseEvent(event->pos(), event->button(), event->modifiers()); +} + +TimelineViewMouseEvent TimelineView::CreateMouseEvent(const QPoint& pos, Qt::MouseButton button, Qt::KeyboardModifiers modifiers) { QPointF scene_pt = mapToScene(pos); - TimelineViewMouseEvent timeline_event(scene_pt.x(), - GetScale(), - timebase(), - TrackReference(ConnectedTrackType(), SceneToTrack(scene_pt.y())), - modifiers); - - return timeline_event; + return TimelineViewMouseEvent(scene_pt.x(), + GetScale(), + timebase(), + TrackReference(ConnectedTrackType(), SceneToTrack(scene_pt.y())), + button, + modifiers); } int TimelineView::GetHeightOfAllTracks() const diff --git a/app/widget/timelinewidget/view/timelineview.h b/app/widget/timelinewidget/view/timelineview.h index ecf66c2b7..53daceca0 100644 --- a/app/widget/timelinewidget/view/timelineview.h +++ b/app/widget/timelinewidget/view/timelineview.h @@ -100,7 +100,8 @@ private: TimelineCoordinate ScreenToCoordinate(const QPoint& pt); TimelineCoordinate SceneToCoordinate(const QPointF& pt); - TimelineViewMouseEvent CreateMouseEvent(const QPoint &pos, Qt::KeyboardModifiers modifiers); + TimelineViewMouseEvent CreateMouseEvent(QMouseEvent* event); + TimelineViewMouseEvent CreateMouseEvent(const QPoint &pos, Qt::MouseButton button, Qt::KeyboardModifiers modifiers); int GetHeightOfAllTracks() const; diff --git a/app/widget/timelinewidget/view/timelineviewmouseevent.cpp b/app/widget/timelinewidget/view/timelineviewmouseevent.cpp index fa8baf8df..4e4dc183c 100644 --- a/app/widget/timelinewidget/view/timelineviewmouseevent.cpp +++ b/app/widget/timelinewidget/view/timelineviewmouseevent.cpp @@ -30,11 +30,13 @@ TimelineViewMouseEvent::TimelineViewMouseEvent(const qreal &scene_x, const double &scale_x, const rational &timebase, const TrackReference &track, + const Qt::MouseButton &button, const Qt::KeyboardModifiers &modifiers) : scene_x_(scene_x), scale_x_(scale_x), timebase_(timebase), track_(track), + button_(button), modifiers_(modifiers), source_event_(nullptr), mime_data_(nullptr) @@ -81,6 +83,11 @@ const qreal &TimelineViewMouseEvent::GetSceneX() const return scene_x_; } +const Qt::MouseButton &TimelineViewMouseEvent::GetButton() const +{ + return button_; +} + void TimelineViewMouseEvent::accept() { if (source_event_ != nullptr) diff --git a/app/widget/timelinewidget/view/timelineviewmouseevent.h b/app/widget/timelinewidget/view/timelineviewmouseevent.h index 65264078c..b99db096f 100644 --- a/app/widget/timelinewidget/view/timelineviewmouseevent.h +++ b/app/widget/timelinewidget/view/timelineviewmouseevent.h @@ -36,6 +36,7 @@ public: const double& scale_x, const rational& timebase, const TrackReference &track, + const Qt::MouseButton &button, const Qt::KeyboardModifiers& modifiers = Qt::NoModifier); TimelineCoordinate GetCoordinates(bool round_time = false) const; @@ -61,6 +62,8 @@ public: const qreal& GetSceneX() const; + const Qt::MouseButton& GetButton() const; + void accept(); void ignore(); @@ -71,6 +74,8 @@ private: TrackReference track_; + Qt::MouseButton button_; + Qt::KeyboardModifiers modifiers_; QEvent* source_event_;