Fall back on the main widget if connect one isn't focusable
If neither main widget nor connect widget is focusable (which notably happens when they're the same anyhow, as is the case for wxChoice, for example), still use the main widget as mnemonic instead of not using any mnemonic at all. This fixes activation of a wxChoice preceded by wxStaticText by pressing the key combination corresponding to the label mnemonic, which didn't work previously.
This commit is contained in:
@@ -4768,22 +4768,21 @@ void wxWindowGTK::RealizeTabOrder()
|
|||||||
{
|
{
|
||||||
if ( focusableFromKeyboard )
|
if ( focusableFromKeyboard )
|
||||||
{
|
{
|
||||||
// wxComboBox et al. needs to focus on on a different
|
// We may need to focus on the connect widget if the
|
||||||
// widget than m_widget, so if the main widget isn't
|
// main one isn't focusable, but note that we still use
|
||||||
// focusable try the connect widget
|
// the main widget if neither it nor connect widget is
|
||||||
|
// focusable, without this using a wxStaticText before
|
||||||
|
// wxChoice wouldn't work at all, for example.
|
||||||
GtkWidget* w = win->m_widget;
|
GtkWidget* w = win->m_widget;
|
||||||
if ( !gtk_widget_get_can_focus(w) )
|
if ( !gtk_widget_get_can_focus(w) )
|
||||||
{
|
{
|
||||||
w = win->GetConnectWidget();
|
GtkWidget* const cw = win->GetConnectWidget();
|
||||||
if ( !gtk_widget_get_can_focus(w) )
|
if ( cw != w && gtk_widget_get_can_focus(cw) )
|
||||||
w = NULL;
|
w = cw;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( w )
|
mnemonicWindow->GTKWidgetDoSetMnemonic(w);
|
||||||
{
|
mnemonicWindow = NULL;
|
||||||
mnemonicWindow->GTKWidgetDoSetMnemonic(w);
|
|
||||||
mnemonicWindow = NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user