now we don't only show label mnemonics but they also work

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37345 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2006-02-05 23:50:13 +00:00
parent 12848fda6f
commit 259858fc6a

View File

@ -47,6 +47,7 @@
#include "wx/settings.h"
#include "wx/log.h"
#include "wx/fontutil.h"
#include "wx/stattext.h"
#ifdef __WXDEBUG__
#include "wx/thread.h"
@ -3542,13 +3543,40 @@ void wxWindowGTK::RealizeTabOrder()
{
if ( !m_children.empty() )
{
#if wxUSE_STATTEXT
// we don't only construct the correct focus chain but also use
// this opportunity to update the mnemonic widgets for all labels
//
// it would be nice to extract this code from here and put it in
// stattext.cpp to reduce dependencies but there is no really easy
// way to do it unfortunately
wxStaticText *lastLabel = NULL;
#endif // wxUSE_STATTEXT
GList *chain = NULL;
for ( wxWindowList::const_iterator i = m_children.begin();
i != m_children.end();
++i )
{
chain = g_list_prepend(chain, (*i)->m_widget);
wxWindowGTK *win = *i;
#if wxUSE_STATTEXT
if ( lastLabel )
{
if ( win->AcceptsFocusFromKeyboard() )
{
GtkLabel *l = GTK_LABEL(lastLabel->m_widget);
gtk_label_set_mnemonic_widget(l, win->m_widget);
lastLabel = NULL;
}
}
else // check if this one is a label
{
lastLabel = wxDynamicCast(win, wxStaticText);
}
#endif // wxUSE_STATTEXT
chain = g_list_prepend(chain, win->m_widget);
}
chain = g_list_reverse(chain);