minimize searching for tlw parent, remove useless code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52503 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -155,46 +155,50 @@ wxMenuBar::~wxMenuBar()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static void wxMenubarUnsetInvokingWindow( wxMenu *menu, wxWindow *win )
|
static void
|
||||||
|
wxMenubarUnsetInvokingWindow(wxMenu* menu, wxWindow* win, GtkWindow* tlw = NULL)
|
||||||
{
|
{
|
||||||
menu->SetInvokingWindow( (wxWindow*) NULL );
|
menu->SetInvokingWindow( (wxWindow*) NULL );
|
||||||
|
|
||||||
wxWindow *top_frame = win;
|
|
||||||
while (top_frame->GetParent() && !(top_frame->IsTopLevel()))
|
|
||||||
top_frame = top_frame->GetParent();
|
|
||||||
|
|
||||||
// support for native hot keys
|
// support for native hot keys
|
||||||
if (menu->m_accel && g_slist_find(menu->m_accel->acceleratables, top_frame->m_widget))
|
if (menu->m_accel)
|
||||||
gtk_window_remove_accel_group(GTK_WINDOW(top_frame->m_widget), menu->m_accel);
|
{
|
||||||
|
if (tlw == NULL)
|
||||||
|
tlw = GTK_WINDOW(wxGetTopLevelParent(win)->m_widget);
|
||||||
|
if (g_slist_find(menu->m_accel->acceleratables, tlw))
|
||||||
|
gtk_window_remove_accel_group(tlw, menu->m_accel);
|
||||||
|
}
|
||||||
|
|
||||||
wxMenuItemList::compatibility_iterator node = menu->GetMenuItems().GetFirst();
|
wxMenuItemList::compatibility_iterator node = menu->GetMenuItems().GetFirst();
|
||||||
while (node)
|
while (node)
|
||||||
{
|
{
|
||||||
wxMenuItem *menuitem = node->GetData();
|
wxMenuItem *menuitem = node->GetData();
|
||||||
if (menuitem->IsSubMenu())
|
if (menuitem->IsSubMenu())
|
||||||
wxMenubarUnsetInvokingWindow( menuitem->GetSubMenu(), win );
|
wxMenubarUnsetInvokingWindow(menuitem->GetSubMenu(), win, tlw);
|
||||||
node = node->GetNext();
|
node = node->GetNext();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void wxMenubarSetInvokingWindow( wxMenu *menu, wxWindow *win )
|
static void
|
||||||
|
wxMenubarSetInvokingWindow(wxMenu* menu, wxWindow* win, GtkWindow* tlw = NULL)
|
||||||
{
|
{
|
||||||
menu->SetInvokingWindow( win );
|
menu->SetInvokingWindow( win );
|
||||||
|
|
||||||
wxWindow *top_frame = win;
|
|
||||||
while (top_frame->GetParent() && !(top_frame->IsTopLevel()))
|
|
||||||
top_frame = top_frame->GetParent();
|
|
||||||
|
|
||||||
// support for native hot keys
|
// support for native hot keys
|
||||||
if (menu->m_accel && !g_slist_find(menu->m_accel->acceleratables, top_frame->m_widget))
|
if (menu->m_accel)
|
||||||
gtk_window_add_accel_group(GTK_WINDOW(top_frame->m_widget), menu->m_accel);
|
{
|
||||||
|
if (tlw == NULL)
|
||||||
|
tlw = GTK_WINDOW(wxGetTopLevelParent(win)->m_widget);
|
||||||
|
if (!g_slist_find(menu->m_accel->acceleratables, tlw))
|
||||||
|
gtk_window_add_accel_group(tlw, menu->m_accel);
|
||||||
|
}
|
||||||
|
|
||||||
wxMenuItemList::compatibility_iterator node = menu->GetMenuItems().GetFirst();
|
wxMenuItemList::compatibility_iterator node = menu->GetMenuItems().GetFirst();
|
||||||
while (node)
|
while (node)
|
||||||
{
|
{
|
||||||
wxMenuItem *menuitem = node->GetData();
|
wxMenuItem *menuitem = node->GetData();
|
||||||
if (menuitem->IsSubMenu())
|
if (menuitem->IsSubMenu())
|
||||||
wxMenubarSetInvokingWindow( menuitem->GetSubMenu(), win );
|
wxMenubarSetInvokingWindow(menuitem->GetSubMenu(), win, tlw);
|
||||||
node = node->GetNext();
|
node = node->GetNext();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -202,9 +206,6 @@ static void wxMenubarSetInvokingWindow( wxMenu *menu, wxWindow *win )
|
|||||||
void wxMenuBar::SetInvokingWindow( wxWindow *win )
|
void wxMenuBar::SetInvokingWindow( wxWindow *win )
|
||||||
{
|
{
|
||||||
m_invokingWindow = win;
|
m_invokingWindow = win;
|
||||||
wxWindow *top_frame = win;
|
|
||||||
while (top_frame->GetParent() && !(top_frame->IsTopLevel()))
|
|
||||||
top_frame = top_frame->GetParent();
|
|
||||||
|
|
||||||
wxMenuList::compatibility_iterator node = m_menus.GetFirst();
|
wxMenuList::compatibility_iterator node = m_menus.GetFirst();
|
||||||
while (node)
|
while (node)
|
||||||
@@ -262,9 +263,6 @@ void wxMenuBar::Attach(wxFrame *frame)
|
|||||||
void wxMenuBar::UnsetInvokingWindow( wxWindow *win )
|
void wxMenuBar::UnsetInvokingWindow( wxWindow *win )
|
||||||
{
|
{
|
||||||
m_invokingWindow = (wxWindow*) NULL;
|
m_invokingWindow = (wxWindow*) NULL;
|
||||||
wxWindow *top_frame = win;
|
|
||||||
while (top_frame->GetParent() && !(top_frame->IsTopLevel()))
|
|
||||||
top_frame = top_frame->GetParent();
|
|
||||||
|
|
||||||
wxMenuList::compatibility_iterator node = m_menus.GetFirst();
|
wxMenuList::compatibility_iterator node = m_menus.GetFirst();
|
||||||
while (node)
|
while (node)
|
||||||
|
|||||||
Reference in New Issue
Block a user