When activating the PrusaSlicer main window, focus the Plater 3D view

or G-code preview if it is marked as Active.
Fixes 3Dconnexion not work directly after importing stl (focus problem ?) 
Keep your fingers crossed that it will not break something else.
This commit is contained in:
Vojtech Bubnik 2020-12-15 15:14:59 +01:00
parent aa8f97fce2
commit 20f5b7a7cd

View file

@ -5865,15 +5865,14 @@ void Plater::force_print_bed_update()
void Plater::on_activate()
{
#ifdef __linux__
#if defined(__linux__) || defined(_WIN32)
wxWindow *focus_window = wxWindow::FindFocus();
// Activating the main frame, and no window has keyboard focus.
// Set the keyboard focus to the visible Canvas3D.
if (this->p->view3D->IsShown() && (!focus_window || focus_window == this->p->view3D->get_wxglcanvas()))
this->p->view3D->get_wxglcanvas()->SetFocus();
else if (this->p->preview->IsShown() && (!focus_window || focus_window == this->p->view3D->get_wxglcanvas()))
this->p->preview->get_wxglcanvas()->SetFocus();
if (this->p->view3D->IsShown() && wxWindow::FindFocus() != this->p->view3D->get_wxglcanvas())
CallAfter([this]() { this->p->view3D->get_wxglcanvas()->SetFocus(); });
else if (this->p->preview->IsShown() && wxWindow::FindFocus() != this->p->view3D->get_wxglcanvas())
CallAfter([this]() { this->p->preview->get_wxglcanvas()->SetFocus(); });
#endif
this->p->show_delayed_error_message();