From 4d7ca07211bc5d58b5a29a9d4fce0497386d5ece Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Sun, 24 Jan 2021 09:20:54 -0800 Subject: [PATCH] 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 --- src/gtk/menu.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/gtk/menu.cpp b/src/gtk/menu.cpp index 708e93fc9a..03093f41b6 100644 --- a/src/gtk/menu.cpp +++ b/src/gtk/menu.cpp @@ -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 }