X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/87a1e3085bc19deacd312a1dcf7d4eb89f51d5a3..7b9da2077d0975db6c965a85c91d5aca671ab5e3:/src/generic/panelg.cpp?ds=sidebyside diff --git a/src/generic/panelg.cpp b/src/generic/panelg.cpp index 52d864fbf5..38d4b13ee3 100644 --- a/src/generic/panelg.cpp +++ b/src/generic/panelg.cpp @@ -190,7 +190,7 @@ void wxPanel::OnSize(wxSizeEvent& WXUNUSED(event)) void wxPanel::SetFocus() { // If the panel gets the focus *by way of getting it set directly* - // we move it to the first window that can get it. + // we move the focus to the first window that can get it. wxNode *node = GetChildren().First(); while (node) @@ -213,13 +213,15 @@ void wxPanel::SetFocus() void wxPanel::OnFocus(wxFocusEvent& event) { // If the panel gets the focus *by way of getting clicked on* - // we move it to either the last window that had the focus or - // the first one that can get it. + // we move the focus to either the last window that had the + // focus or the first one that can get it. if (m_winLastFocused) { - // it might happen that the window got reparented... - if ( m_winLastFocused->GetParent() == this ) + // It might happen that the window got reparented or no longer + // accepts the focus. + if ((m_winLastFocused->GetParent() == this) && + (m_winLastFocused->AcceptsFocus())) { m_winLastFocused->SetFocus(); return;