diff --git a/src/Mod/Sketcher/Gui/DrawSketchController.h b/src/Mod/Sketcher/Gui/DrawSketchController.h
index 3edd8782e6..c0a39d2edd 100644
--- a/src/Mod/Sketcher/Gui/DrawSketchController.h
+++ b/src/Mod/Sketcher/Gui/DrawSketchController.h
@@ -25,7 +25,6 @@
#include
#include
-#include
#include "DrawSketchDefaultHandler.h"
#include "SketcherToolDefaultWidget.h"
@@ -280,8 +279,7 @@ public:
void resetControls()
{
// Make sure we do not loose focus if next methode does not have OVP that take focus.
- Gui::MDIView* mdi = Gui::Application::Instance->activeDocument()->getActiveView();
- mdi->setFocus();
+ handler->ensureFocus();
doResetControls(); // NVI
diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp b/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp
index 50dfbe1f55..b11011972f 100644
--- a/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp
+++ b/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp
@@ -111,6 +111,11 @@ ViewProviderSketchDrawSketchHandlerAttorney::moveCursorToSketchPoint(ViewProvide
vp.moveCursorToSketchPoint(point);
}
+inline void ViewProviderSketchDrawSketchHandlerAttorney::ensureFocus(ViewProviderSketch& vp)
+{
+ vp.ensureFocus();
+}
+
inline void ViewProviderSketchDrawSketchHandlerAttorney::preselectAtPoint(ViewProviderSketch& vp,
Base::Vector2d point)
{
@@ -1189,6 +1194,11 @@ void DrawSketchHandler::moveCursorToSketchPoint(Base::Vector2d point)
ViewProviderSketchDrawSketchHandlerAttorney::moveCursorToSketchPoint(*sketchgui, point);
}
+void DrawSketchHandler::ensureFocus()
+{
+ ViewProviderSketchDrawSketchHandlerAttorney::ensureFocus(*sketchgui);
+}
+
void DrawSketchHandler::preselectAtPoint(Base::Vector2d point)
{
ViewProviderSketchDrawSketchHandlerAttorney::preselectAtPoint(*sketchgui, point);
diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandler.h b/src/Mod/Sketcher/Gui/DrawSketchHandler.h
index 989837ff41..f17eea8b48 100644
--- a/src/Mod/Sketcher/Gui/DrawSketchHandler.h
+++ b/src/Mod/Sketcher/Gui/DrawSketchHandler.h
@@ -104,6 +104,7 @@ private:
unsigned int augmentationlevel = 0);
static inline void setAxisPickStyle(ViewProviderSketch& vp, bool on);
static inline void moveCursorToSketchPoint(ViewProviderSketch& vp, Base::Vector2d point);
+ static inline void ensureFocus(ViewProviderSketch& vp);
static inline void preselectAtPoint(ViewProviderSketch& vp, Base::Vector2d point);
static inline void setAngleSnapping(ViewProviderSketch& vp,
bool enable,
@@ -276,6 +277,7 @@ protected:
void setAxisPickStyle(bool on);
void moveCursorToSketchPoint(Base::Vector2d point);
+ void ensureFocus();
void preselectAtPoint(Base::Vector2d point);
void drawPositionAtCursor(const Base::Vector2d& position);
diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp
index 7fbed4f501..e5ee7ce1b2 100644
--- a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp
+++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp
@@ -657,6 +657,13 @@ void ViewProviderSketch::moveCursorToSketchPoint(Base::Vector2d point)
QCursor::setPos(newPos);
}
+void ViewProviderSketch::ensureFocus()
+{
+
+ Gui::MDIView* mdi = Gui::Application::Instance->activeDocument()->getActiveView();
+ mdi->setFocus();
+}
+
void ViewProviderSketch::preselectAtPoint(Base::Vector2d point)
{
if (Mode != STATUS_SELECT_Point && Mode != STATUS_SELECT_Edge
diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.h b/src/Mod/Sketcher/Gui/ViewProviderSketch.h
index 1e20e2d46f..6b4d7e2bf5 100644
--- a/src/Mod/Sketcher/Gui/ViewProviderSketch.h
+++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.h
@@ -876,6 +876,7 @@ private:
void setAxisPickStyle(bool on);
void moveCursorToSketchPoint(Base::Vector2d point);
+ void ensureFocus();
void preselectAtPoint(Base::Vector2d point);
//@}