Fix RTL layout of menus with GTK

Set layout direction for all menu items and sub-menus,
setting just the top level menu doesn't do much
This commit is contained in:
Paul Cornett
2021-01-24 09:20:54 -08:00
parent 4fdcdc07d2
commit 4d7ca07211

View File

@@ -827,7 +827,24 @@ wxMenu::~wxMenu()
void wxMenu::SetLayoutDirection(wxLayoutDirection dir)
{
if ( m_owner )
{
wxWindow::GTKSetLayout(m_owner, dir);
wxMenuItemList::compatibility_iterator node = m_items.GetFirst();
for (; node; node = node->GetNext())
{
wxMenuItem* item = node->GetData();
if (wxMenu* subMenu = item->GetSubMenu())
subMenu->SetLayoutDirection(dir);
else if (GtkWidget* widget = item->GetMenuItem())
{
wxWindow::GTKSetLayout(widget, dir);
widget = gtk_bin_get_child(GTK_BIN(widget));
if (widget)
wxWindow::GTKSetLayout(widget, dir);
}
}
}
//else: will be called later by wxMenuBar again
}