From 1d4a09366c98576390eb17ce2066c6b0abd770e5 Mon Sep 17 00:00:00 2001 From: Rafael Pronto Date: Mon, 31 Mar 2025 18:45:33 +0100 Subject: [PATCH] Sketcher: Prevent renaming interruption when hovering task elements. (#20458) * Sketcher: Prevent renaming interruption when hovering task elements. Fixes #11842. * Sketcher: Refactored input focus check based on PR feedback (PR #20458) * Update src/Mod/Sketcher/Gui/TaskSketcherElements.cpp --------- Co-authored-by: Benjamin Nauck --- src/Mod/Sketcher/Gui/TaskSketcherElements.cpp | 14 ++++++++++++++ src/Mod/Sketcher/Gui/TaskSketcherElements.h | 2 ++ 2 files changed, 16 insertions(+) diff --git a/src/Mod/Sketcher/Gui/TaskSketcherElements.cpp b/src/Mod/Sketcher/Gui/TaskSketcherElements.cpp index 551b9fa90f..e2412dc51a 100644 --- a/src/Mod/Sketcher/Gui/TaskSketcherElements.cpp +++ b/src/Mod/Sketcher/Gui/TaskSketcherElements.cpp @@ -24,6 +24,7 @@ #ifndef _PreComp_ #include #include +#include #include #include #include @@ -1694,8 +1695,17 @@ void TaskSketcherElements::onListWidgetElementsItemPressed(QListWidgetItem* it) ui->listWidgetElements->repaint(); } +bool TaskSketcherElements::hasInputWidgetFocused() +{ + QWidget* focusedWidget = QApplication::focusWidget(); + return qobject_cast(focusedWidget) != nullptr; +} + void TaskSketcherElements::onListWidgetElementsItemEntered(QListWidgetItem* item) { + if (hasInputWidgetFocused()) { + return; + } ui->listWidgetElements->setFocus(); focusItemIndex = ui->listWidgetElements->row(item); @@ -1703,6 +1713,10 @@ void TaskSketcherElements::onListWidgetElementsItemEntered(QListWidgetItem* item void TaskSketcherElements::onListWidgetElementsMouseMoveOnItem(QListWidgetItem* it) { + if (hasInputWidgetFocused()) { + return; + } + ElementItem* item = static_cast(it); if (!item diff --git a/src/Mod/Sketcher/Gui/TaskSketcherElements.h b/src/Mod/Sketcher/Gui/TaskSketcherElements.h index 05d528b7ac..aa91e1b643 100644 --- a/src/Mod/Sketcher/Gui/TaskSketcherElements.h +++ b/src/Mod/Sketcher/Gui/TaskSketcherElements.h @@ -125,6 +125,8 @@ public: /// Observer message from the Selection void onSelectionChanged(const Gui::SelectionChanges& msg) override; + bool hasInputWidgetFocused(); + private: void slotElementsChanged(); void updateVisibility();