summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMahmoud Badri <mahmoud.badri@qt.io>2018-06-01 10:04:24 +0300
committerMahmoud Badri <mahmoud.badri@qt.io>2018-06-05 09:23:40 +0000
commitfa2a23a0a72bc5868e3e0edbc430ae913ff59f93 (patch)
tree9ba3bff6355f324617e64d8be9b1d89424cfe446
parentd312eebfa14ef72cfb3ddfdea5f4bf517050649d (diff)
Cancel DnD when Escape key is pressed
When pressing Escape key while DnD is active, it is cancelled Task-number: QT3DS-1842 Change-Id: I74fd371844617757fcdc22603cf4cf5605fe1c33 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
-rw-r--r--src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineGraphicsScene.cpp10
-rw-r--r--src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp19
-rw-r--r--src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.h3
3 files changed, 30 insertions, 2 deletions
diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineGraphicsScene.cpp b/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineGraphicsScene.cpp
index c1ca8e9b..8cc97d85 100644
--- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineGraphicsScene.cpp
+++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineGraphicsScene.cpp
@@ -289,6 +289,10 @@ void TimelineGraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *event)
event->accept();
return;
}
+
+ if (m_widgetTimeline->blockMousePress())
+ return;
+
if (!m_widgetTimeline->isFullReconstructPending() && event->button() == Qt::LeftButton) {
resetMousePressParams();
m_pressPos = event->scenePos();
@@ -679,9 +683,11 @@ void TimelineGraphicsScene::keyPressEvent(QKeyEvent *keyEvent)
&& (qApp->focusObject() == m_widgetTimeline->viewTreeContent() && !focusItem())) {
keyEvent->accept();
return;
- }
- if (keyEvent->key() == Qt::Key_Delete && !m_rowMover->isActive())
+ } else if (keyEvent->key() == Qt::Key_Escape && m_rowMover->isActive()) {
+ m_rowMover->end();
+ } else if (keyEvent->key() == Qt::Key_Delete && !m_rowMover->isActive()) {
g_StudioApp.DeleteSelectedObject(); // Despite the name, this deletes objects and keyframes
+ }
QGraphicsScene::keyPressEvent(keyEvent);
}
diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp b/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp
index a320599c..716a9677 100644
--- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp
+++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp
@@ -858,6 +858,25 @@ bool TimelineWidget::OnMouseHover(CPt inPoint, Qt::KeyboardModifiers inFlags)
return true;
}
+
+void TimelineWidget::OnMouseMove(CPt inPoint, Qt::KeyboardModifiers inFlags)
+{
+ Q_UNUSED(inFlags)
+
+ if (inPoint.x == -1 && inPoint.y == -1) { // drag leave
+ // upon cancelling a DnD, the mouse press event fires, this bool is to prevent that
+ m_blockMousePress = true;
+ QTimer::singleShot(500, [this]() {
+ m_blockMousePress = false;
+ });
+ }
+}
+
+bool TimelineWidget::blockMousePress() const
+{
+ return m_blockMousePress;
+}
+
void TimelineWidget::OnMouseOut(CPt inPoint, Qt::KeyboardModifiers inFlags)
{
}
diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.h b/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.h
index d7b22925..efb19c8b 100644
--- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.h
+++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.h
@@ -75,6 +75,7 @@ public:
void setSelectedTimeBarsColor(const QColor &color, bool preview);
void enableDnD(bool b = true);
bool dndActive() const;
+ bool blockMousePress() const;
// Presentation Change Listener
void OnNewPresentation() override;
@@ -92,6 +93,7 @@ public:
CDropTarget *FindDropCandidate(CPt &inMousePoint, Qt::KeyboardModifiers inFlags,
EStudioObjectType objectType) override;
bool OnMouseHover(CPt inPoint, Qt::KeyboardModifiers inFlags) override;
+ void OnMouseMove(CPt inPoint, Qt::KeyboardModifiers inFlags) override;
void OnMouseOut(CPt inPoint, Qt::KeyboardModifiers inFlags) override;
void OnMouseUp(CPt inPoint, Qt::KeyboardModifiers inFlags) override;
CPt GetPreferredSize() override;
@@ -159,6 +161,7 @@ private:
QHash<int, int> m_moveMap;
QTimer m_asyncUpdateTimer;
bool m_fullReconstruct = false;
+ bool m_blockMousePress = false;
CClientDataModelBridge *m_bridge = nullptr;
IBreadCrumbProvider *m_BreadCrumbProvider = nullptr;