From 0ca80333a1593af964a8361af72aeab37e919868 Mon Sep 17 00:00:00 2001 From: Aleks Kissinger Date: Fri, 10 Apr 2020 16:50:03 +0100 Subject: check for auto-repeating key before switching tool (fixes #58) --- src/gui/tikzscene.cpp | 39 ++++++++++++++++++++------------------- src/gui/tikzscene.h | 2 ++ 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/src/gui/tikzscene.cpp b/src/gui/tikzscene.cpp index 29b007e..087f621 100644 --- a/src/gui/tikzscene.cpp +++ b/src/gui/tikzscene.cpp @@ -708,25 +708,6 @@ void TikzScene::keyReleaseEvent(QKeyEvent *event) } - if (event->key() == Qt::Key_Backspace || event->key() == Qt::Key_Delete) { - deleteSelectedItems(); - } else if (mod == Qt::NoModifier) { - switch(event->key()) { - case Qt::Key_S: - tikzit->activeWindow()->toolPalette()->setCurrentTool(ToolPalette::SELECT); - break; - case Qt::Key_V: - case Qt::Key_N: - tikzit->activeWindow()->toolPalette()->setCurrentTool(ToolPalette::VERTEX); - break; - case Qt::Key_E: - tikzit->activeWindow()->toolPalette()->setCurrentTool(ToolPalette::EDGE); - break; - case Qt::Key_B: - tikzit->activeWindow()->toolPalette()->setCurrentTool(ToolPalette::CROP); - break; - } - } foreach (QGraphicsItem *it, selectedItems()) it->update(); } @@ -861,6 +842,26 @@ void TikzScene::keyPressEvent(QKeyEvent *event) _tikzDocument->undoStack()->endMacro(); } } + } else { // no CTRL key + if (event->key() == Qt::Key_Backspace || event->key() == Qt::Key_Delete) { + deleteSelectedItems(); + } else if (!event->isAutoRepeat()) { + switch(event->key()) { + case Qt::Key_S: + tikzit->activeWindow()->toolPalette()->setCurrentTool(ToolPalette::SELECT); + break; + case Qt::Key_V: + case Qt::Key_N: + tikzit->activeWindow()->toolPalette()->setCurrentTool(ToolPalette::VERTEX); + break; + case Qt::Key_E: + tikzit->activeWindow()->toolPalette()->setCurrentTool(ToolPalette::EDGE); + break; + case Qt::Key_B: + tikzit->activeWindow()->toolPalette()->setCurrentTool(ToolPalette::CROP); + break; + } + } } foreach (QGraphicsItem *it, selectedItems()) it->update(); diff --git a/src/gui/tikzscene.h b/src/gui/tikzscene.h index 1edd50a..2e7baa5 100644 --- a/src/gui/tikzscene.h +++ b/src/gui/tikzscene.h @@ -130,6 +130,8 @@ private: bool _highlightHeads; bool _highlightTails; bool _smartTool; + + bool _ctrlWasPressed; }; #endif // TIKZSCENE_H -- cgit v1.2.3