X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e306597309a120f2ae91385c731a5cb2722c52aa..227b5cd72fe18864553ab0fc0688bb017f349e61:/include/wx/event.h diff --git a/include/wx/event.h b/include/wx/event.h index 76e31ed6cd..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&); @@ -1305,7 +1320,7 @@ const wxEventTableEntry theClass::sm_eventTableEntries[] = { \ // EVT_COMMAND #define EVT_COMMAND(id, event, fn) { event, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_COMMAND_RANGE(id1, id2, event, fn) { eventId, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, +#define EVT_COMMAND_RANGE(id1, id2, event, fn) { event, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, // Scrolling #define EVT_SCROLL(func) \