From 9f6254bf01c0665f56ccd94d2ada9e29413af5a2 Mon Sep 17 00:00:00 2001 From: Abbe98 Date: Wed, 6 May 2026 03:32:03 +0200 Subject: [PATCH] EditPointTool: Middle-click to toggle dash points This makes it possible for users to use "middle-click" to toggle dash points without first going into dash point editing through Ctrl+Space. --- src/tools/edit_point_tool.cpp | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/tools/edit_point_tool.cpp b/src/tools/edit_point_tool.cpp index f62b429b1..250ea59af 100644 --- a/src/tools/edit_point_tool.cpp +++ b/src/tools/edit_point_tool.cpp @@ -112,7 +112,39 @@ bool EditPointTool::mousePressEvent(QMouseEvent* event, const MapCoordF& map_coo return true; waiting_for_mouse_release = false; } - + + // Handle "middle/scrollwheel click" for quick toggling of dash points + if (event->button() == Qt::MiddleButton) + { + mousePositionEvent(event, map_coord, widget); + updateHoverState(cur_pos_map); + + if (hover_state.testFlag(OverObjectNode) && + hover_object->getType() == Object::Path) + { + Q_ASSERT(hover_object); + PathObject* hover_object = this->hover_object->asPath(); + Q_ASSERT(hover_point < hover_object->getCoordinateCount()); + + if (!hover_object->isCurveHandle(hover_point)) + { + createReplaceUndoStep(hover_object); + + auto hover_coord = hover_object->getCoordinate(hover_point); + hover_coord.setDashPoint(!hover_coord.isDashPoint()); + hover_object->setCoordinate(hover_point, hover_coord); + hover_object->update(); + updateDirtyRect(); + + // if we toggled a dash point we don't let the user use the same action + // to pan the map + return true; + } + } + + return false; + } + return MapEditorToolBase::mousePressEvent(event, map_coord, widget); }