X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c932709d31bf359c994dc2050bec1b3b986bbd62..052d2fc5818243dadbc1ec54b1120e295304fc55:/src/common/containr.cpp diff --git a/src/common/containr.cpp b/src/common/containr.cpp index a17f646fe5..5bfc812f78 100644 --- a/src/common/containr.cpp +++ b/src/common/containr.cpp @@ -291,25 +291,25 @@ void wxControlContainer::HandleOnNavigationKey( wxNavigationKeyEvent& event ) wxWindow *child = node->GetData(); -#ifdef __WXMSW__ - bool is_not_msw_rb = ! wxIsKindOf(m_winLastFocused,wxRadioButton); +#if defined(__WXMSW__) && !defined(__PALMOS__) + bool is_not_msw_rb = !m_winLastFocused || + !wxIsKindOf(m_winLastFocused,wxRadioButton); #else - bool is_not_msw_rb = true; - + static const bool is_not_msw_rb = true; #endif - if ( child->AcceptsFocusFromKeyboard() && is_not_msw_rb) + if ( child->AcceptsFocusFromKeyboard() && is_not_msw_rb ) { // if we're setting the focus to a child panel we should prevent it // from giving it to the child which had the focus the last time // and instead give it to the first/last child depending from which // direction we're coming event.SetEventObject(m_winParent); - -#ifdef __WXMSW__ + +#if defined(__WXMSW__) && !defined(__PALMOS__) // we need to hop to the next activated // radio button, not just the next radio - // button under MSW + // button under MSW if (wxIsKindOf(child,wxRadioButton)) { wxRadioButton *rb = (wxRadioButton*) child; @@ -318,19 +318,23 @@ void wxControlContainer::HandleOnNavigationKey( wxNavigationKeyEvent& event ) for (;;) { wxWindowList::compatibility_iterator node = children.Find( child ); - if (forward) + if (forward) node = node->GetNext(); else node = node->GetPrevious(); - if (!node) return; // this would probably an error + if (!node) + return; // this would probably an error child = node->GetData(); - if (!wxIsKindOf(child,wxRadioButton)) continue; + if (!wxIsKindOf(child,wxRadioButton)) + continue; rb = (wxRadioButton*) child; - if (rb->GetValue()) break; + if (rb->GetValue()) + break; } } } -#endif +#endif // __WXMSW__ + // disable propagation for this call as otherwise the event might // bounce back to us. wxPropagationDisabler disableProp(event);