diff --git a/src/Mod/Sketcher/Gui/DrawSketchController.h b/src/Mod/Sketcher/Gui/DrawSketchController.h index 6e4bde1a3e..f65ebe3b48 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchController.h +++ b/src/Mod/Sketcher/Gui/DrawSketchController.h @@ -118,18 +118,12 @@ public: //@} protected: - HandlerT* handler; // real derived type - bool init = false; // true if the controls have been initialised. - bool firstMoveInit = false; // true if first mouse movement not yet performed (resets) - - std::unique_ptr keymanager; - - Base::Vector2d prevCursorPosition; - Base::Vector2d lastControlEnforcedPosition; - - int onViewIndexWithFocus = 0; // track the index of the on-view parameter having the focus - int nOnViewParameter = OnViewParametersT::defaultMethodSize(); + // NOLINTBEGIN + HandlerT* handler; // real derived type + std::vector> onViewParameters; + // NOLINTEND + bool init = false; // true if the controls have been initialised. /** @name Named indices for controlling on-view controls */ //@{ @@ -149,7 +143,12 @@ protected: }; //@} - std::vector> onViewParameters; +private: + Base::Vector2d prevCursorPosition; + Base::Vector2d lastControlEnforcedPosition; + + int onViewIndexWithFocus = 0; // track the index of the on-view parameter having the focus + int nOnViewParameter = OnViewParametersT::defaultMethodSize(); /// Class to keep track of colors used by the on-view parameters class ColorManager @@ -262,8 +261,8 @@ public: DrawSketchController(const DrawSketchController&) = delete; DrawSketchController(DrawSketchController&&) = delete; - bool operator=(const DrawSketchController&) = delete; - bool operator=(DrawSketchController&&) = delete; + DrawSketchController& operator=(const DrawSketchController&) = delete; + DrawSketchController& operator=(DrawSketchController&&) = delete; virtual ~DrawSketchController() {} @@ -725,6 +724,13 @@ protected: } //@} + // makes keymanager available to derived classes so that they install it as event handler + // where necessary, without allowing them to manage resource ownership + DrawSketchKeyboardManager* getKeyManager() + { + return keymanager.get(); + } + private: /** @name helper functions */ //@{ @@ -744,6 +750,9 @@ private: private: OnViewParameterVisibilityManager ovpVisibilityManager; ColorManager colorManager; + std::unique_ptr keymanager; + + bool firstMoveInit = false; // true if first mouse movement not yet performed (resets) }; diff --git a/src/Mod/Sketcher/Gui/DrawSketchDefaultWidgetController.h b/src/Mod/Sketcher/Gui/DrawSketchDefaultWidgetController.h index 2c916e7e55..4df96a6b4c 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchDefaultWidgetController.h +++ b/src/Mod/Sketcher/Gui/DrawSketchDefaultWidgetController.h @@ -91,7 +91,7 @@ public: ConstructionMethodT>; //@} -protected: +private: int nParameter = WidgetParametersT::defaultMethodSize(); int nCheckbox = WidgetCheckboxesT::defaultMethodSize(); int nCombobox = WidgetComboboxesT::defaultMethodSize(); @@ -117,8 +117,14 @@ protected: public: explicit DrawSketchDefaultWidgetController(HandlerT* dshandler) : ControllerBase(dshandler) + , toolWidget(nullptr) {} + DrawSketchDefaultWidgetController(const DrawSketchDefaultWidgetController&) = delete; + DrawSketchDefaultWidgetController(DrawSketchDefaultWidgetController&&) = delete; + DrawSketchDefaultWidgetController& operator=(const DrawSketchDefaultWidgetController&) = delete; + DrawSketchDefaultWidgetController& operator=(DrawSketchDefaultWidgetController&&) = delete; + ~DrawSketchDefaultWidgetController() override { connectionParameterValueChanged.disconnect(); @@ -262,7 +268,7 @@ private: /// Initialisation of the widget void initDefaultWidget(QWidget* widget) { - toolWidget = static_cast(widget); + toolWidget = static_cast(widget); // NOLINT connectionParameterValueChanged = toolWidget->registerParameterValueChanged( std::bind(&DrawSketchDefaultWidgetController::parameterValueChanged, @@ -294,7 +300,7 @@ private: nCheckbox = WidgetCheckboxesT::size(handler->constructionMethod()); nCombobox = WidgetComboboxesT::size(handler->constructionMethod()); - toolWidget->initNParameters(nParameter, keymanager.get()); + toolWidget->initNParameters(nParameter, ControllerBase::getKeyManager()); toolWidget->initNCheckboxes(nCheckbox); toolWidget->initNComboboxes(nCombobox);