Fix wxMenu::GetTitle() before the menu is appended to the menu bar.

The mnemonics conversion was not done correctly when the menu title contained
them but the menu hadn't been appended to the menu bar yet.

Closes #15461.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74731 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2013-08-30 23:32:37 +00:00
parent 45d66f592c
commit 69384772ac
4 changed files with 19 additions and 7 deletions

View File

@ -572,6 +572,10 @@ All (GUI):
- Set correct cursor when the mouse is over image map links in wxHTML (LukasK).
- Add wxPropertyGridPageState::GetColumnFullWidth() (Teodor Petrov).
wxGTK:
- Fix wxMenu::GetTitle() before the menu is appended to the bar (David Hart).
wxMSW:
- It is now possible to tab into radio boxes again.

View File

@ -81,7 +81,8 @@ public:
// Returns the title, with mnemonics translated to wx format
wxString GetTitle() const;
// TODO: virtual void SetTitle(const wxString& title);
// Sets the title, with mnemonics translated to gtk format
virtual void SetTitle(const wxString& title);
// implementation GTK only
GtkWidget *m_menu; // GtkMenu

View File

@ -317,11 +317,10 @@ void wxMenuBar::GtkAppend(wxMenu* menu, const wxString& title, int pos)
else
#endif // wxUSE_LIBHILDON || wxUSE_LIBHILDON2 /!wxUSE_LIBHILDON && !wxUSE_LIBHILDON2
{
const wxString str(wxConvertMnemonicsToGTK(title));
// This doesn't have much effect right now.
menu->SetTitle( str );
menu->SetTitle( title );
const wxString str(wxConvertMnemonicsToGTK(title));
// The "m_owner" is the "menu item"
menu->m_owner = gtk_menu_item_new_with_mnemonic( wxGTK_CONV( str ) );
@ -504,10 +503,9 @@ void wxMenuBar::SetMenuLabel( size_t pos, const wxString& label )
wxMenu* menu = node->GetData();
menu->SetTitle( label );
const wxString str(wxConvertMnemonicsToGTK(label));
menu->SetTitle( str );
if (menu->m_owner)
gtk_label_set_text_with_mnemonic(GTK_LABEL(gtk_bin_get_child(GTK_BIN(menu->m_owner))), wxGTK_CONV(str));
}
@ -843,6 +841,11 @@ wxString wxMenu::GetTitle() const
return wxConvertMnemonicsFromGTK(wxMenuBase::GetTitle());
}
void wxMenu::SetTitle(const wxString& title)
{
wxMenuBase::SetTitle(wxConvertMnemonicsToGTK(title));
}
void wxMenu::GtkAppend(wxMenuItem* mitem, int pos)
{
GtkWidget *menuItem;

View File

@ -150,6 +150,10 @@ void MenuTestCase::CreateFrame()
subMenu->AppendSubMenu(subsubMenu, "Subsubmen&u", "Test a subsubmenu");
// Check GetTitle() returns the correct string _before_ appending to the bar
fileMenu->SetTitle("&Foo\tCtrl-F");
CPPUNIT_ASSERT_EQUAL( "&Foo\tCtrl-F", fileMenu->GetTitle() );
PopulateMenu(fileMenu, "Filemenu item ", itemcount);
fileMenu->Append(MenuTestCase_Foo, "&Foo\tCtrl-F", "Test item to be found");