X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/dbdb39b2d0b8c3359eab1693fd1fc786499f62d7..4d91c1d1aebe7872e50c2e35b0a436cac9cee53c:/include/wx/event.h diff --git a/include/wx/event.h b/include/wx/event.h index 80f2274901..2ac0ea2fe0 100644 --- a/include/wx/event.h +++ b/include/wx/event.h @@ -283,6 +283,10 @@ public: void Skip(bool skip = TRUE) { m_skipped = skip; } bool GetSkipped() const { return m_skipped; }; + // implementation only: this test is explicitlty anti OO and this functions + // exists only for optimization purposes + bool IsCommandEvent() const { return m_isCommandEvent; } + public: bool m_skipped; wxObject* m_eventObject; @@ -291,6 +295,10 @@ public: long m_timeStamp; int m_id; wxObject* m_callbackUserData; + + // optimization: instead of using costly IsKindOf() we keep a flag telling + // whether we're a command event (by far the most common case) + bool m_isCommandEvent; }; // Item or menu event class @@ -338,8 +346,8 @@ public: int GetSelection() const { return m_commandInt; } // Set/Get listbox/choice selection string - void SetString(char* s) { m_commandString = s; } - char *GetString() const { return m_commandString; } + void SetString(const wxString& s) { m_commandString = s; } + const wxString& GetString() const { return m_commandString; } // Get checkbox value bool Checked() const { return (m_commandInt != 0); } @@ -354,7 +362,7 @@ public: long GetInt() const { return m_commandInt ; } public: - char* m_commandString; // String event argument + wxString m_commandString; // String event argument int m_commandInt; long m_extraLong; // Additional information (e.g. select/deselect) void* m_clientData; // Arbitrary client data @@ -509,6 +517,7 @@ public: bool Leaving() const { return (m_eventType == wxEVT_LEAVE_WINDOW); } // Find the position of the event + void GetPosition(long *xpos, long *ypos) const { *xpos = m_x; *ypos = m_y; } void Position(long *xpos, long *ypos) const { *xpos = m_x; *ypos = m_y; } // Find the position of the event @@ -567,18 +576,18 @@ public: bool ShiftDown() const { return m_shiftDown; } long KeyCode() const { return m_keyCode; } -#if WXWIN_COMPATIBILITY // Find the position of the event - void Position(float *xpos, float *ypos) const - { *xpos = (float)m_x; *ypos = (float)m_y; } + void GetPosition(long *xpos, long *ypos) const + { *xpos = m_x; *ypos = m_y; } + + wxPoint GetPosition() const + { return wxPoint(m_x, m_y); } // Get X position - float GetX() const { return (float)m_x; } + long GetX() const { return m_x; } // Get Y position - float GetY() const { return (float)m_y; } - -#endif // WXWIN_COMPATIBILITY + long GetY() const { return m_y; } public: long m_x; @@ -1182,13 +1191,19 @@ private: static const wxEventTableEntry sm_eventTableEntries[]; protected: - static const wxEventTable sm_eventTable; - virtual const wxEventTable* GetEventTable() const; + static const wxEventTable sm_eventTable; + + virtual const wxEventTable *GetEventTable() const; + protected: wxEvtHandler* m_nextHandler; wxEvtHandler* m_previousHandler; - bool m_enabled; // Is event handler enabled? + bool m_enabled; // Is event handler enabled? wxList* m_dynamicEvents; + + // optimization: instead of using costly IsKindOf() to decide whether we're + // a window (which is true in 99% of cases), use this flag + bool m_isWindow; }; typedef void (wxEvtHandler::*wxEventFunction)(wxEvent&);