Menubar accelerators are now preserved
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49726 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
6d8eb95b35
commit
e41a1b1cbb
@ -110,11 +110,78 @@ void wxFrame::DoGetClientSize( int *width, int *height ) const
|
||||
*height = 0;
|
||||
}
|
||||
|
||||
#if wxUSE_MENUS
|
||||
// Helper for wxCreateAcceleratorTableForMenuBar
|
||||
static void wxAddAccelerators(wxList& accelEntries, wxMenu* menu)
|
||||
{
|
||||
size_t i;
|
||||
for (i = 0; i < menu->GetMenuItems().GetCount(); i++)
|
||||
{
|
||||
wxMenuItem* item = (wxMenuItem*) menu->GetMenuItems().Item(i)->GetData();
|
||||
if (item->GetSubMenu())
|
||||
{
|
||||
wxAddAccelerators(accelEntries, item->GetSubMenu());
|
||||
}
|
||||
else if (!item->GetItemLabel().IsEmpty())
|
||||
{
|
||||
wxAcceleratorEntry* entry = wxAcceleratorEntry::Create(item->GetItemLabel());
|
||||
if (entry)
|
||||
{
|
||||
entry->Set(entry->GetFlags(), entry->GetKeyCode(), item->GetId());
|
||||
accelEntries.Append((wxObject*) entry);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Create an accelerator table consisting of all the accelerators
|
||||
// from the menubar in the given menus
|
||||
static wxAcceleratorTable wxCreateAcceleratorTableForMenuBar(wxMenuBar* menuBar)
|
||||
{
|
||||
wxList accelEntries;
|
||||
|
||||
size_t i;
|
||||
for (i = 0; i < menuBar->GetMenuCount(); i++)
|
||||
{
|
||||
wxAddAccelerators(accelEntries, menuBar->GetMenu(i));
|
||||
}
|
||||
|
||||
size_t n = accelEntries.GetCount();
|
||||
|
||||
if (n == 0)
|
||||
return wxAcceleratorTable();
|
||||
|
||||
wxAcceleratorEntry* entries = new wxAcceleratorEntry[n];
|
||||
|
||||
for (i = 0; i < accelEntries.GetCount(); i++)
|
||||
{
|
||||
wxAcceleratorEntry* entry = (wxAcceleratorEntry*) accelEntries.Item(i)->GetData();
|
||||
entries[i] = (*entry);
|
||||
delete entry;
|
||||
|
||||
}
|
||||
|
||||
wxAcceleratorTable table(n, entries);
|
||||
delete[] entries;
|
||||
|
||||
return table;
|
||||
}
|
||||
#endif
|
||||
|
||||
bool wxFrame::ShowFullScreen(bool show, long style)
|
||||
{
|
||||
if (!wxFrameBase::ShowFullScreen(show, style))
|
||||
return false;
|
||||
|
||||
#if wxUSE_MENUS
|
||||
if (show && GetMenuBar())
|
||||
{
|
||||
wxAcceleratorTable table(wxCreateAcceleratorTableForMenuBar(GetMenuBar()));
|
||||
if (table.IsOk())
|
||||
SetAcceleratorTable(table);
|
||||
}
|
||||
#endif
|
||||
|
||||
wxWindow* const bar[] = {
|
||||
#if wxUSE_MENUS
|
||||
m_frameMenuBar,
|
||||
|
Loading…
Reference in New Issue
Block a user