diff --git a/src/slic3r/GUI/Widgets/Button.cpp b/src/slic3r/GUI/Widgets/Button.cpp index fa1dc15ee..273d1d841 100644 --- a/src/slic3r/GUI/Widgets/Button.cpp +++ b/src/slic3r/GUI/Widgets/Button.cpp @@ -237,7 +237,8 @@ void Button::mouseDown(wxMouseEvent& event) pressedDown = true; if (canFocus) SetFocus(); - CaptureMouse(); + if (!HasCapture()) + CaptureMouse(); } void Button::mouseReleased(wxMouseEvent& event) diff --git a/src/slic3r/GUI/Widgets/SpinInput.cpp b/src/slic3r/GUI/Widgets/SpinInput.cpp index d4b03795b..f9eb1dc36 100644 --- a/src/slic3r/GUI/Widgets/SpinInput.cpp +++ b/src/slic3r/GUI/Widgets/SpinInput.cpp @@ -230,19 +230,22 @@ Button *SpinInput::createButton(bool inc) delta = inc ? 1 : -1; SetValue(val + delta); text_ctrl->SetFocus(); - btn->CaptureMouse(); + if (!btn->HasCapture()) + btn->CaptureMouse(); delta *= 8; timer.Start(100); sendSpinEvent(); }); btn->Bind(wxEVT_LEFT_DCLICK, [=](auto &e) { delta = inc ? 1 : -1; - btn->CaptureMouse(); + if (!btn->HasCapture()) + btn->CaptureMouse(); SetValue(val + delta); sendSpinEvent(); }); btn->Bind(wxEVT_LEFT_UP, [=](auto &e) { - btn->ReleaseMouse(); + if (btn->HasCapture()) + btn->ReleaseMouse(); timer.Stop(); text_ctrl->SelectAll(); delta = 0; diff --git a/src/slic3r/GUI/Widgets/StepCtrl.cpp b/src/slic3r/GUI/Widgets/StepCtrl.cpp index fa4754581..c7071a564 100644 --- a/src/slic3r/GUI/Widgets/StepCtrl.cpp +++ b/src/slic3r/GUI/Widgets/StepCtrl.cpp @@ -134,7 +134,8 @@ void StepCtrl::mouseDown(wxMouseEvent &event) if (rcThumb.Contains(pt)) { pos_thumb = wxPoint{circleX, size.y / 2}; drag_offset = pos_thumb - pt; - CaptureMouse(); + if (!HasCapture()) + CaptureMouse(); } else if (rcBar.Contains(pt)) { if (pt.x < circleX) { if (step > 0) SelectItem(step - 1);