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:
Vadim Zeitlin
1999-11-15 14:04:06 +00:00
parent c09f28798b
commit 9739d9ee80
6 changed files with 29 additions and 0 deletions

View File

@@ -35,6 +35,21 @@ class WXDLLEXPORT wxMenuItem;
WX_DECLARE_LIST(wxMenu, wxMenuList); WX_DECLARE_LIST(wxMenu, wxMenuList);
WX_DECLARE_LIST(wxMenuItem, wxMenuItemList); 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 // wxMenu
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -177,10 +192,13 @@ public:
wxList& GetItems() const { return (wxList &)m_items; } wxList& GetItems() const { return (wxList &)m_items; }
#endif // WXWIN_COMPATIBILITY #endif // WXWIN_COMPATIBILITY
#if wxUSE_MENU_CALLBACK
// wxWin 1.6x compatible menu event handling // wxWin 1.6x compatible menu event handling
wxFunction GetCallback() const { return m_callback; } wxFunction GetCallback() const { return m_callback; }
void Callback(const wxFunction func) { m_callback = func; } void Callback(const wxFunction func) { m_callback = func; }
wxFunction m_callback; wxFunction m_callback;
#endif // wxUSE_MENU_CALLBACK
// unlike FindItem(), this function doesn't recurse but only looks through // 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 // our direct children and also may return the index of the found child if

View File

@@ -125,7 +125,10 @@ void wxMenuBase::Init(long style)
m_style = style; m_style = style;
m_clientData = (void *)NULL; m_clientData = (void *)NULL;
m_eventHandler = this; m_eventHandler = this;
#if wxUSE_MENU_CALLBACK
m_callback = (wxFunction) NULL; m_callback = (wxFunction) NULL;
#endif // wxUSE_MENU_CALLBACK
} }
wxMenuBase::~wxMenuBase() wxMenuBase::~wxMenuBase()

View File

@@ -469,11 +469,13 @@ static void gtk_menu_clicked_callback( GtkWidget *widget, wxMenu *menu )
event.SetEventObject( menu ); event.SetEventObject( menu );
event.SetInt(id ); event.SetInt(id );
#if wxUSE_MENU_CALLBACK
if (menu->GetCallback()) if (menu->GetCallback())
{ {
(void) (*(menu->GetCallback())) (*menu, event); (void) (*(menu->GetCallback())) (*menu, event);
return; return;
} }
#endif // wxUSE_MENU_CALLBACK
if (menu->GetEventHandler()->ProcessEvent(event)) if (menu->GetEventHandler()->ProcessEvent(event))
return; return;

View File

@@ -469,11 +469,13 @@ static void gtk_menu_clicked_callback( GtkWidget *widget, wxMenu *menu )
event.SetEventObject( menu ); event.SetEventObject( menu );
event.SetInt(id ); event.SetInt(id );
#if wxUSE_MENU_CALLBACK
if (menu->GetCallback()) if (menu->GetCallback())
{ {
(void) (*(menu->GetCallback())) (*menu, event); (void) (*(menu->GetCallback())) (*menu, event);
return; return;
} }
#endif // wxUSE_MENU_CALLBACK
if (menu->GetEventHandler()->ProcessEvent(event)) if (menu->GetEventHandler()->ProcessEvent(event))
return; return;

View File

@@ -162,12 +162,14 @@ bool wxMenu::ProcessCommand(wxCommandEvent & event)
{ {
bool processed = FALSE; bool processed = FALSE;
#if wxUSE_MENU_CALLBACK
// Try a callback // Try a callback
if (m_callback) if (m_callback)
{ {
(void) (*(m_callback)) (*this, event); (void) (*(m_callback)) (*this, event);
processed = TRUE; processed = TRUE;
} }
#endif // wxUSE_MENU_CALLBACK
// Try the menu's event handler // Try the menu's event handler
if ( !processed && GetEventHandler()) if ( !processed && GetEventHandler())

View File

@@ -432,12 +432,14 @@ bool wxMenu::ProcessCommand(wxCommandEvent & event)
{ {
bool processed = FALSE; bool processed = FALSE;
#if wxUSE_MENU_CALLBACK
// Try a callback // Try a callback
if (m_callback) if (m_callback)
{ {
(void)(*(m_callback))(*this, event); (void)(*(m_callback))(*this, event);
processed = TRUE; processed = TRUE;
} }
#endif // wxUSE_MENU_CALLBACK
// Try the menu's event handler // Try the menu's event handler
if ( !processed && GetEventHandler()) if ( !processed && GetEventHandler())