Applied patch #421554: implementation of wxEVT_CONTEXT_MENU
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10173 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
f80eabe5a2
commit
69231000be
@ -961,7 +961,6 @@ public:
|
||||
wxEVT_MENU_INIT,
|
||||
wxEVT_MENU_HIGHLIGHT,
|
||||
wxEVT_POPUP_MENU_INIT,
|
||||
wxEVT_CONTEXT_MENU,
|
||||
*/
|
||||
|
||||
class WXDLLEXPORT wxMenuEvent : public wxEvent
|
||||
@ -1425,6 +1424,37 @@ private:
|
||||
DECLARE_DYNAMIC_CLASS(wxHelpEvent)
|
||||
};
|
||||
|
||||
// A Context event is sent when the user right clicks on a window or
|
||||
// presses Shift-F10
|
||||
// NOTE : Under windows this is a repackaged WM_CONTETXMENU message
|
||||
// Under other systems it may have to be generated from a right click event
|
||||
/*
|
||||
wxEVT_CONTEXT_MENU
|
||||
*/
|
||||
|
||||
class WXDLLEXPORT wxContextMenuEvent : public wxCommandEvent
|
||||
{
|
||||
public:
|
||||
wxContextMenuEvent(wxEventType type = wxEVT_NULL,
|
||||
wxWindowID id = 0,
|
||||
const wxPoint& pt = wxDefaultPosition)
|
||||
{
|
||||
m_eventType = type;
|
||||
m_id = id;
|
||||
m_pos = pt;
|
||||
}
|
||||
|
||||
// Position of event (in screen coordinates)
|
||||
const wxPoint& GetPosition() const { return m_pos; }
|
||||
void SetPosition(const wxPoint& pos) { m_pos = pos; }
|
||||
|
||||
protected:
|
||||
wxPoint m_pos;
|
||||
|
||||
private:
|
||||
DECLARE_DYNAMIC_CLASS(wxContextMenuEvent)
|
||||
};
|
||||
|
||||
#endif // wxUSE_GUI
|
||||
|
||||
// Idle event
|
||||
@ -1705,6 +1735,7 @@ typedef void (wxEvtHandler::*wxWindowDestroyEventFunction)(wxWindowDestroyEvent&
|
||||
typedef void (wxEvtHandler::*wxSetCursorEventFunction)(wxSetCursorEvent&);
|
||||
typedef void (wxEvtHandler::*wxNotifyEventFunction)(wxNotifyEvent&);
|
||||
typedef void (wxEvtHandler::*wxHelpEventFunction)(wxHelpEvent&);
|
||||
typedef void (wxEvtHandler::*wxContextMenuEventFunction)(wxContextMenuEvent&);
|
||||
#endif // wxUSE_GUI
|
||||
|
||||
// N.B. In GNU-WIN32, you *have* to take the address of a member function
|
||||
@ -1935,6 +1966,10 @@ typedef void (wxEvtHandler::*wxHelpEventFunction)(wxHelpEvent&);
|
||||
#define EVT_DETAILED_HELP_RANGE(id1, id2, func) \
|
||||
DECLARE_EVENT_TABLE_ENTRY( wxEVT_DETAILED_HELP, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxHelpEventFunction) & func, (wxObject *) NULL ),
|
||||
|
||||
// Context Menu Events
|
||||
#define EVT_CONTEXT_MENU(func) \
|
||||
DECLARE_EVENT_TABLE_ENTRY(wxEVT_CONTEXT_MENU, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxContextMenuEventFunction) & func, (wxObject *) NULL ),
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Global data
|
||||
// ----------------------------------------------------------------------------
|
||||
|
@ -83,6 +83,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxIdleEvent, wxEvent)
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxWindowCreateEvent, wxEvent)
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxWindowDestroyEvent, wxEvent)
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxHelpEvent, wxCommandEvent)
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxContextMenuEvent, wxCommandEvent)
|
||||
#endif // wxUSE_GUI
|
||||
|
||||
const wxEventTable *wxEvtHandler::GetEventTable() const
|
||||
|
@ -2226,10 +2226,29 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
|
||||
wxHelpEvent helpEvent(wxEVT_HELP, info->iCtrlId) ;
|
||||
helpEvent.SetEventObject(this);
|
||||
processed = GetEventHandler()->ProcessEvent(helpEvent);
|
||||
|
||||
}
|
||||
else processed = FALSE;
|
||||
break;
|
||||
}
|
||||
case WM_CONTEXTMENU:
|
||||
{
|
||||
HWND hWnd = (HWND) wParam;
|
||||
|
||||
// we don't convert from screen to client coordinates as
|
||||
// the event may be handled by a parent window
|
||||
wxPoint p(LOWORD(lParam), HIWORD(lParam));
|
||||
|
||||
wxContextMenuEvent contextEvent(wxEVT_CONTEXT_MENU, GetId(), p);
|
||||
GetEventHandler()->ProcessEvent(contextEvent);
|
||||
|
||||
// set processed to true even if the event is not handled because if we don't
|
||||
// windows will propogate the WM_CONTEXTMENU up the parent window chain, which
|
||||
// we have already done ourselves.
|
||||
processed = true;
|
||||
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user