X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/cf516c2bb2b8bc462f6f0cb852fb2fc2d86c9c66..51c9c13c05b3aa6e713b7bcfcc027e7ece75541c:/include/wx/event.h diff --git a/include/wx/event.h b/include/wx/event.h index 369c0b9da9..42c5406b13 100644 --- a/include/wx/event.h +++ b/include/wx/event.h @@ -253,7 +253,7 @@ private: // value is used by the event table macros inline wxObjectEventFunctor * -wxNewEventFunctor(wxEventType WXUNUSED(evtType), +wxNewEventFunctor(const wxEventType& WXUNUSED(evtType), wxObjectEventFunction method, wxEvtHandler *handler = NULL) { @@ -261,7 +261,7 @@ wxNewEventFunctor(wxEventType WXUNUSED(evtType), } inline wxObjectEventFunctor -wxConstructEventFunctor(wxEventType WXUNUSED(evtType), +wxConstructEventFunctor(const wxEventType& WXUNUSED(evtType), wxObjectEventFunction method, wxEvtHandler *handler) { @@ -718,7 +718,7 @@ public: void Skip(bool skip = true) { m_skipped = skip; } bool GetSkipped() const { return m_skipped; } - // this function is used to create a copy of the event polymorphically and + // This function is used to create a copy of the event polymorphically and // all derived classes must implement it because otherwise wxPostEvent() // for them wouldn't work (it needs to do a copy of the event) virtual wxEvent *Clone() const = 0; @@ -747,6 +747,20 @@ public: m_propagationLevel = propagationLevel; } + + // This is for internal use only and is only called by + // wxEvtHandler::ProcessEvent() to check whether it's the first time this + // event is being processed + bool WasProcessed() + { + if ( m_wasProcessed ) + return true; + + m_wasProcessed = true; + + return false; + } + protected: wxObject* m_eventObject; wxEventType m_eventType; @@ -768,6 +782,12 @@ protected: bool m_skipped; bool m_isCommandEvent; + // initially false but becomes true as soon as WasProcessed() is called for + // the first time, as this is done only by ProcessEvent() it explains the + // variable name: it becomes true after ProcessEvent() was called at least + // once for this event + bool m_wasProcessed; + protected: wxEvent(const wxEvent&); // for implementing Clone() wxEvent& operator=(const wxEvent&); // for derived classes operator=() @@ -3081,12 +3101,7 @@ public: void OnSinkDestroyed( wxEvtHandler *sink ); - // The method processing the event in this event handler (or rather in this - // event handler chain as it also tries the next handler and so on), i.e. - // it returns true if we processed this event or false if we didn't but - // does not call TryParent() in the latter case. It also doesn't call - // wxApp::FilterEvent() before processing it, this is supposed to be done - // by the public ProcessEvent() only once for every event we handle. + // The method tries to process the event in this event handler. // // It is meant to be called from ProcessEvent() only and is not virtual, // additional event handlers can be hooked into the normal event processing