From e6396ed45195ef5356f425095e267847408b7676 Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Tue, 18 Feb 2003 09:02:30 +0000 Subject: [PATCH] Applied patch [ 681262 ] Add EVT_MENU_OPEN support for GTK git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19238 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/menu.cpp | 22 ++++++++++++++++++++++ src/gtk1/menu.cpp | 22 ++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/src/gtk/menu.cpp b/src/gtk/menu.cpp index 34cec7b657..941df0c833 100644 --- a/src/gtk/menu.cpp +++ b/src/gtk/menu.cpp @@ -161,6 +161,24 @@ static wxString wxReplaceUnderscore( const wxString& title ) return str; } +//----------------------------------------------------------------------------- +// activate message from GTK +//----------------------------------------------------------------------------- + +static void gtk_menu_open_callback( GtkWidget *widget, wxMenu *menu ) +{ + if (g_isIdle) wxapp_install_idle_handler(); + + wxMenuEvent event( wxEVT_MENU_OPEN, -1 ); + event.SetEventObject( menu ); + + if (menu->GetEventHandler()->ProcessEvent(event)) + return; + + wxWindow *win = menu->GetInvokingWindow(); + if (win) win->GetEventHandler()->ProcessEvent( event ); +} + //----------------------------------------------------------------------------- // wxMenuBar //----------------------------------------------------------------------------- @@ -392,6 +410,10 @@ bool wxMenuBar::GtkAppend(wxMenu *menu, const wxString& title) #endif + gtk_signal_connect( GTK_OBJECT(menu->m_owner), "activate", + GTK_SIGNAL_FUNC(gtk_menu_open_callback), + (gpointer)menu ); + // m_invokingWindow is set after wxFrame::SetMenuBar(). This call enables // addings menu later on. if (m_invokingWindow) diff --git a/src/gtk1/menu.cpp b/src/gtk1/menu.cpp index 34cec7b657..941df0c833 100644 --- a/src/gtk1/menu.cpp +++ b/src/gtk1/menu.cpp @@ -161,6 +161,24 @@ static wxString wxReplaceUnderscore( const wxString& title ) return str; } +//----------------------------------------------------------------------------- +// activate message from GTK +//----------------------------------------------------------------------------- + +static void gtk_menu_open_callback( GtkWidget *widget, wxMenu *menu ) +{ + if (g_isIdle) wxapp_install_idle_handler(); + + wxMenuEvent event( wxEVT_MENU_OPEN, -1 ); + event.SetEventObject( menu ); + + if (menu->GetEventHandler()->ProcessEvent(event)) + return; + + wxWindow *win = menu->GetInvokingWindow(); + if (win) win->GetEventHandler()->ProcessEvent( event ); +} + //----------------------------------------------------------------------------- // wxMenuBar //----------------------------------------------------------------------------- @@ -392,6 +410,10 @@ bool wxMenuBar::GtkAppend(wxMenu *menu, const wxString& title) #endif + gtk_signal_connect( GTK_OBJECT(menu->m_owner), "activate", + GTK_SIGNAL_FUNC(gtk_menu_open_callback), + (gpointer)menu ); + // m_invokingWindow is set after wxFrame::SetMenuBar(). This call enables // addings menu later on. if (m_invokingWindow) -- 2.47.2