X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/193bf013642b9742909ab430d3b422840a478e47..c96faa7c9b1926d63a2fff32ac4508d3138a7bee:/include/wx/event.h diff --git a/include/wx/event.h b/include/wx/event.h index c74f328aae..6a1fd599d9 100644 --- a/include/wx/event.h +++ b/include/wx/event.h @@ -19,6 +19,9 @@ #include "wx/defs.h" #include "wx/object.h" #include "wx/gdicmn.h" +#if wxUSE_THREADS +#include "wx/thread.h" +#endif /* * Event types @@ -346,8 +349,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; } + wxString GetString() const { return m_commandString; } // Get checkbox value bool Checked() const { return (m_commandInt != 0); } @@ -362,7 +365,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 @@ -517,6 +520,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 @@ -575,18 +579,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; @@ -774,7 +778,7 @@ public: { // GetVeto() will return FALSE anyhow... wxCHECK_RET( m_canVeto, - "call to Veto() ignored (can't veto this event)" ); + _T("call to Veto() ignored (can't veto this event)") ); m_veto = veto; } @@ -1169,6 +1173,10 @@ public: virtual bool OnClose(); #endif +#if wxUSE_THREADS + bool ProcessThreadEvent(wxEvent& event); + void ProcessPendingEvents(); +#endif virtual bool ProcessEvent(wxEvent& event); virtual bool SearchEventTable(wxEventTable& table, wxEvent& event); @@ -1186,6 +1194,10 @@ public: bool SearchDynamicEventTable( wxEvent& event ); +#if wxUSE_THREADS + void ClearEventLocker() { delete m_eventsLocker; m_eventsLocker = NULL; }; +#endif + private: static const wxEventTableEntry sm_eventTableEntries[]; @@ -1195,14 +1207,18 @@ protected: virtual const wxEventTable *GetEventTable() const; protected: - wxEvtHandler* m_nextHandler; - wxEvtHandler* m_previousHandler; - bool m_enabled; // Is event handler enabled? - wxList* m_dynamicEvents; + wxEvtHandler* m_nextHandler; + wxEvtHandler* m_previousHandler; + bool m_enabled; // Is event handler enabled? + wxList* m_dynamicEvents; + wxList* m_pendingEvents; +#if wxUSE_THREADS + wxCriticalSection* m_eventsLocker; +#endif // 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; + bool m_isWindow; }; typedef void (wxEvtHandler::*wxEventFunction)(wxEvent&); @@ -1415,5 +1431,13 @@ const wxEventTableEntry theClass::sm_eventTableEntries[] = { \ #define EVT_UPDATE_UI(id, func) \ { wxEVT_UPDATE_UI, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxUpdateUIEventFunction) & func, (wxObject *) NULL },\ +/* + * Helper functions + */ + +// Find a window with the focus, that is also a descendant of the given window. +// This is used to determine the window to initially send commands to. +wxWindow* wxFindFocusDescendant(wxWindow* ancestor); + #endif // _WX_EVENTH__