Merge pull request #1059 from ispyisail/fix/ctrl-shift-pan-stuck

Fix the folio staying in pan mode after Ctrl+Shift+M
This commit is contained in:
Laurent Trinques
2026-09-27 09:08:02 +02:00
committed by GitHub
2 changed files with 30 additions and 0 deletions
+26
View File
@@ -390,6 +390,7 @@ void DiagramView::handleTextDrop(QDropEvent *e) {
*/
void DiagramView::setVisualisationMode()
{
m_ctrl_shift_panning = false;
setDragMode(ScrollHandDrag);
applyReadOnly();
setInteractive(false);
@@ -401,6 +402,7 @@ void DiagramView::setVisualisationMode()
*/
void DiagramView::setSelectionMode()
{
m_ctrl_shift_panning = false;
setDragMode(RubberBandDrag);
setInteractive(true);
applyReadOnly();
@@ -631,6 +633,12 @@ void DiagramView::mousePressEvent(QMouseEvent *e)
{
e->ignore();
//Ctrl+Shift panning whose key release was missed (see
//focusOutEvent()): a click without them ends it
if (m_ctrl_shift_panning && !isCtrlShifting(e)) {
setSelectionMode();
}
if (m_fresh_focus_in)
{
switchToVisualisationModeIfNeeded(e);
@@ -1031,6 +1039,23 @@ void DiagramView::focusInEvent(QFocusEvent *e) {
}
}
/**
@brief DiagramView::focusOutEvent
Leave the Ctrl+Shift panning: without the focus, the view will not see
Ctrl or Shift being released, which is what normally ends it. A
Ctrl+Shift shortcut that opens a window (Ctrl+Shift+M, the command
search) left the view panning, ignoring clicks on the folio, on Windows,
where no other key release reached the view to end it.
@param e
*/
void DiagramView::focusOutEvent(QFocusEvent *e)
{
if (m_ctrl_shift_panning) {
setSelectionMode();
}
PaletteGraphicsView::focusOutEvent(e);
}
/**
@brief DiagramView::focusNextPrevChild
By default, QWidget intercepts Tab/Shift+Tab to move keyboard focus to
@@ -1638,6 +1663,7 @@ bool DiagramView::switchToVisualisationModeIfNeeded(QInputEvent *e) {
if (isCtrlShifting(e) && !selectedItemHasFocus()) {
if (dragMode() != QGraphicsView::ScrollHandDrag) {
setVisualisationMode();
m_ctrl_shift_panning = true;
return(true);
}
}