summaryrefslogtreecommitdiffstats
path: root/src/Authoring/Studio/Palettes/Action/ActionView.cpp
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2018-06-25 17:31:11 +0300
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2018-06-27 09:42:09 +0000
commit35684c6dd7dec1b902218e2b134e427305e234e4 (patch)
tree71ba71619329a84ac6e600d8ec3a645adeaaba97 /src/Authoring/Studio/Palettes/Action/ActionView.cpp
parentb1a5c793e31aa68e5f33ed7b64e0b1563d5efc0a (diff)
Fix edit menu items
- Show what is about to be deleted/duplicated - Properly enable delete/duplicate items - Action delete/copy/cut/paste is now fully contained in action view - Every view and player window indicates when they are activated (i.e. mouse is pressed on them) so we can track the context reliably even when menu steals the focus. Required for slide duplicate/delete enabling in edit menu. Task-number: QT3DS-1911 Task-number: QT3DS-1958 Change-Id: Icf0bb173809740dd709b9e0525735de7aecba617 Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Diffstat (limited to 'src/Authoring/Studio/Palettes/Action/ActionView.cpp')
-rw-r--r--src/Authoring/Studio/Palettes/Action/ActionView.cpp51
1 files changed, 38 insertions, 13 deletions
diff --git a/src/Authoring/Studio/Palettes/Action/ActionView.cpp b/src/Authoring/Studio/Palettes/Action/ActionView.cpp
index 2ec9728e..a0d03267 100644
--- a/src/Authoring/Studio/Palettes/Action/ActionView.cpp
+++ b/src/Authoring/Studio/Palettes/Action/ActionView.cpp
@@ -112,26 +112,18 @@ ActionView::ActionView(const QSize &preferredSize, QWidget *parent)
QQuickWidget::addAction(action);
m_actionCopy = new QAction(tr("Copy Action\t%1C").arg(ctrlKey));
- m_actionCopy->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_C));
- m_actionCopy->setShortcutContext(Qt::WidgetShortcut);
connect(m_actionCopy, &QAction::triggered, this, &ActionView::copyAction);
QQuickWidget::addAction(m_actionCopy);
m_actionPaste = new QAction(tr("Paste Action\t%1V").arg(ctrlKey));
- m_actionPaste->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_V));
- m_actionPaste->setShortcutContext(Qt::WidgetShortcut);
connect(m_actionPaste, &QAction::triggered, this, &ActionView::pasteAction);
QQuickWidget::addAction(m_actionPaste);
m_actionCut = new QAction(tr("Cut Action\t%1X").arg(ctrlKey));
- m_actionCut->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_X));
- m_actionCut->setShortcutContext(Qt::WidgetShortcut);
connect(m_actionCut, &QAction::triggered, this, &ActionView::cutAction);
QQuickWidget::addAction(m_actionCut);
m_actionDel = new QAction(tr("Delete Action\tDel"));
- m_actionDel->setShortcut(QKeySequence(Qt::Key_Delete));
- m_actionDel->setShortcutContext(Qt::WidgetShortcut);
connect(m_actionDel, &QAction::triggered, [=](){ deleteAction(m_currentActionIndex); });
QQuickWidget::addAction(m_actionDel);
}
@@ -148,15 +140,48 @@ QSize ActionView::sizeHint() const
void ActionView::focusInEvent(QFocusEvent *event)
{
- Q_UNUSED(event)
updateActionStates();
- Q_EMIT actionFocused(true);
+ QQuickWidget::focusInEvent(event);
}
-void ActionView::focusOutEvent(QFocusEvent *event)
+void ActionView::mousePressEvent(QMouseEvent *event)
{
- Q_UNUSED(event)
- Q_EMIT actionFocused(false);
+ g_StudioApp.setLastActiveView(this);
+ QQuickWidget::mousePressEvent(event);
+}
+
+bool ActionView::event(QEvent *event)
+{
+ if (event->type() == QEvent::ShortcutOverride) {
+ QKeyEvent *ke = static_cast<QKeyEvent *>(event);
+ if (m_currentActionIndex >= 0 && (ke->key() == Qt::Key_Delete
+ || (ke->modifiers() == Qt::ControlModifier
+ && (ke->key() == Qt::Key_C || ke->key() == Qt::Key_V
+ || ke->key() == Qt::Key_X)))) {
+ auto focusItem = quickWindow()->activeFocusItem();
+ if (focusItem && (focusItem->objectName() == QStringLiteral("actionListDelegate")
+ || focusItem->objectName() == QStringLiteral("focusEater"))) {
+ if (ke->key() == Qt::Key_Delete) {
+ if (m_actionDel->isEnabled())
+ deleteAction(m_currentActionIndex);
+ } else if (ke->modifiers() == Qt::ControlModifier) {
+ if (ke->key() == Qt::Key_C) {
+ if (m_actionCopy->isEnabled())
+ copyAction();
+ } else if (ke->key() == Qt::Key_V) {
+ if (m_actionPaste->isEnabled())
+ pasteAction();
+ } else if (ke->key() == Qt::Key_X) {
+ if (m_actionCut->isEnabled())
+ cutAction();
+ }
+ }
+ event->accept();
+ return true;
+ }
+ }
+ }
+ return QQuickWidget::event(event);
}
void ActionView::setItem(const qt3dsdm::Qt3DSDMInstanceHandle &handle)