Skip to content

Commit

Permalink
When activating the PrusaSlicer main window, focus the Plater 3D view
Browse files Browse the repository at this point in the history
or G-code preview if it is marked as Active.
Fixes 3Dconnexion not work directly after importing stl (focus problem ?) prusa3d#5141
Keep your fingers crossed that it will not break something else.
  • Loading branch information
bubnikv committed Dec 15, 2020
1 parent aa8f97f commit 20f5b7a
Showing 1 changed file with 5 additions and 6 deletions.
11 changes: 5 additions & 6 deletions src/slic3r/GUI/Plater.cpp
Expand Up @@ -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();
Expand Down

0 comments on commit 20f5b7a

Please sign in to comment.