wxMenu::callback stuff taken inside WXWIN_COMPATIBILITY_2 (everybody should
be happy now) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4568 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -35,6 +35,21 @@ class WXDLLEXPORT wxMenuItem;
|
||||
WX_DECLARE_LIST(wxMenu, wxMenuList);
|
||||
WX_DECLARE_LIST(wxMenuItem, wxMenuItemList);
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// conditional compilation
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// having callbacks in menus is a wxWin 1.6x feature which should be replaced
|
||||
// with event tables in wxWin 2.xx code - however provide it because many
|
||||
// people like it a lot by default
|
||||
#ifndef wxUSE_MENU_CALLBACK
|
||||
#if WXWIN_COMPATIBILITY_2
|
||||
#define wxUSE_MENU_CALLBACK 1
|
||||
#else
|
||||
#define wxUSE_MENU_CALLBACK 0
|
||||
#endif // WXWIN_COMPATIBILITY_2
|
||||
#endif // !defined(wxUSE_MENU_CALLBACK)
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxMenu
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -177,10 +192,13 @@ public:
|
||||
wxList& GetItems() const { return (wxList &)m_items; }
|
||||
#endif // WXWIN_COMPATIBILITY
|
||||
|
||||
#if wxUSE_MENU_CALLBACK
|
||||
// wxWin 1.6x compatible menu event handling
|
||||
wxFunction GetCallback() const { return m_callback; }
|
||||
void Callback(const wxFunction func) { m_callback = func; }
|
||||
|
||||
wxFunction m_callback;
|
||||
#endif // wxUSE_MENU_CALLBACK
|
||||
|
||||
// unlike FindItem(), this function doesn't recurse but only looks through
|
||||
// our direct children and also may return the index of the found child if
|
||||
|
@@ -125,7 +125,10 @@ void wxMenuBase::Init(long style)
|
||||
m_style = style;
|
||||
m_clientData = (void *)NULL;
|
||||
m_eventHandler = this;
|
||||
|
||||
#if wxUSE_MENU_CALLBACK
|
||||
m_callback = (wxFunction) NULL;
|
||||
#endif // wxUSE_MENU_CALLBACK
|
||||
}
|
||||
|
||||
wxMenuBase::~wxMenuBase()
|
||||
|
@@ -469,11 +469,13 @@ static void gtk_menu_clicked_callback( GtkWidget *widget, wxMenu *menu )
|
||||
event.SetEventObject( menu );
|
||||
event.SetInt(id );
|
||||
|
||||
#if wxUSE_MENU_CALLBACK
|
||||
if (menu->GetCallback())
|
||||
{
|
||||
(void) (*(menu->GetCallback())) (*menu, event);
|
||||
return;
|
||||
}
|
||||
#endif // wxUSE_MENU_CALLBACK
|
||||
|
||||
if (menu->GetEventHandler()->ProcessEvent(event))
|
||||
return;
|
||||
|
@@ -469,11 +469,13 @@ static void gtk_menu_clicked_callback( GtkWidget *widget, wxMenu *menu )
|
||||
event.SetEventObject( menu );
|
||||
event.SetInt(id );
|
||||
|
||||
#if wxUSE_MENU_CALLBACK
|
||||
if (menu->GetCallback())
|
||||
{
|
||||
(void) (*(menu->GetCallback())) (*menu, event);
|
||||
return;
|
||||
}
|
||||
#endif // wxUSE_MENU_CALLBACK
|
||||
|
||||
if (menu->GetEventHandler()->ProcessEvent(event))
|
||||
return;
|
||||
|
@@ -162,12 +162,14 @@ bool wxMenu::ProcessCommand(wxCommandEvent & event)
|
||||
{
|
||||
bool processed = FALSE;
|
||||
|
||||
#if wxUSE_MENU_CALLBACK
|
||||
// Try a callback
|
||||
if (m_callback)
|
||||
{
|
||||
(void) (*(m_callback)) (*this, event);
|
||||
processed = TRUE;
|
||||
}
|
||||
#endif // wxUSE_MENU_CALLBACK
|
||||
|
||||
// Try the menu's event handler
|
||||
if ( !processed && GetEventHandler())
|
||||
|
@@ -432,12 +432,14 @@ bool wxMenu::ProcessCommand(wxCommandEvent & event)
|
||||
{
|
||||
bool processed = FALSE;
|
||||
|
||||
#if wxUSE_MENU_CALLBACK
|
||||
// Try a callback
|
||||
if (m_callback)
|
||||
{
|
||||
(void)(*(m_callback))(*this, event);
|
||||
processed = TRUE;
|
||||
}
|
||||
#endif // wxUSE_MENU_CALLBACK
|
||||
|
||||
// Try the menu's event handler
|
||||
if ( !processed && GetEventHandler())
|
||||
|
Reference in New Issue
Block a user