X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d1367c3d78fba566687c41538dc79321a207d214..74295623bb14ed23da081f002aa99380d5c1a2e2:/include/wx/event.h?ds=inline diff --git a/include/wx/event.h b/include/wx/event.h index 4179febd93..0453f4fc9a 100644 --- a/include/wx/event.h +++ b/include/wx/event.h @@ -19,8 +19,9 @@ #include "wx/defs.h" #include "wx/object.h" #include "wx/gdicmn.h" + #if wxUSE_THREADS -#include "wx/thread.h" + #include "wx/thread.h" #endif /* @@ -217,6 +218,12 @@ const wxEventType wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED = wxEVT_FIRST + 802; const wxEventType wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING = wxEVT_FIRST + 803; #endif +/* Splitter events */ +const wxEventType wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED = wxEVT_FIRST + 850; +const wxEventType wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING = wxEVT_FIRST + 851; +const wxEventType wxEVT_COMMAND_SPLITTER_DOUBLECLICKED = wxEVT_FIRST + 852; +const wxEventType wxEVT_COMMAND_SPLITTER_UNSPLIT = wxEVT_FIRST + 853; + const wxEventType wxEVT_USER_FIRST = wxEVT_FIRST + 2000; /* Compatibility */ @@ -307,13 +314,12 @@ public: void CopyObject(wxObject& object_dest) const; public: - bool m_skipped; wxObject* m_eventObject; - char* m_eventHandle; // Handle of an underlying windowing system event wxEventType m_eventType; long m_timeStamp; int m_id; wxObject* m_callbackUserData; + bool m_skipped; // optimization: instead of using costly IsKindOf() we keep a flag telling // whether we're a command event (by far the most common case) @@ -472,6 +478,7 @@ public: void SetOrientation(int orient) { m_extraLong = (long) orient; } void SetPosition(int pos) { m_commandInt = pos; } + void CopyObject(wxObject& object_dest) const; public: int m_commandInt; // Additional information long m_extraLong; @@ -658,6 +665,7 @@ public: bool m_shiftDown; bool m_altDown; bool m_metaDown; + bool m_scanCode; }; // Size event class @@ -1000,6 +1008,8 @@ public: bool ButtonIsDown(int but = wxJOY_BUTTON_ANY) const { return (((but == wxJOY_BUTTON_ANY) && (m_buttonState != 0)) || ((m_buttonState & but) == but)); } + + void CopyObject(wxObject& obj) const; }; // Drop files event class @@ -1024,6 +1034,8 @@ public: wxPoint GetPosition() const { return m_pos; } int GetNumberOfFiles() const { return m_noFiles; } wxString *GetFiles() const { return m_files; } + + void CopyObject(wxObject& obj) const; }; // Idle event @@ -1042,6 +1054,8 @@ public: void RequestMore(bool needMore = TRUE) { m_requestMore = needMore; } bool MoreRequested() const { return m_requestMore; } + void CopyObject(wxObject& obj) const; + protected: bool m_requestMore; }; @@ -1082,6 +1096,8 @@ public: void Enable(bool enable) { m_enabled = enable; m_setEnabled = TRUE; } void SetText(const wxString& text) { m_text = text; m_setText = TRUE; } + void CopyObject(wxObject& obj) const; + protected: bool m_checked; bool m_enabled; @@ -1123,6 +1139,8 @@ public: void SetChangedWindow(wxWindow* win) { m_changedWindow = win; } wxWindow* GetChangedWindow() const { return m_changedWindow; } + void CopyObject(wxObject& obj) const; + protected: wxWindow* m_changedWindow; }; @@ -1144,6 +1162,8 @@ public: void SetPaletteRealized(bool realized) { m_paletteRealized = realized; } bool GetPaletteRealized() const { return m_paletteRealized; } + void CopyObject(wxObject& obj) const; + protected: bool m_paletteRealized; }; @@ -1153,7 +1173,7 @@ protected: wxEVT_NAVIGATION_KEY */ // must derive from command event to be propagated to the parent -class WXDLLEXPORT wxNavigationKeyEvent : public wxCommandEvent +class WXDLLEXPORT wxNavigationKeyEvent : public wxCommandEvent { DECLARE_DYNAMIC_CLASS(wxNavigationKeyEvent) @@ -1175,10 +1195,38 @@ public: void SetCurrentFocus(wxWindow *win) { m_clientData = (void *)win; } }; +// Window creation/destruction events: the first is sent as soon as window is +// created (i.e. the underlying GUI object exists), but when the C++ object is +// fully initialized (so virtual functions may be called). The second, +// wxEVT_DESTROY, is sent right before the window is destroyed - again, it's +// still safe to call virtual functions at this moment +/* + wxEVT_CREATE + wxEVT_DESTROY + */ + +class WXDLLEXPORT wxWindowCreateEvent : public wxEvent +{ + DECLARE_DYNAMIC_CLASS(wxWindowCreateEvent) + +public: + wxWindowCreateEvent(wxWindow *win = NULL); + + wxWindow *GetWindow() const { return (wxWindow *)GetEventObject(); } +}; + +class WXDLLEXPORT wxWindowDestroyEvent : public wxEvent +{ + DECLARE_DYNAMIC_CLASS(wxWindowDestroyEvent) + +public: + wxWindowDestroyEvent(wxWindow *win = NULL); + + wxWindow *GetWindow() const { return (wxWindow *)GetEventObject(); } +}; + /* TODO wxEVT_POWER, - wxEVT_CREATE, - wxEVT_DESTROY, wxEVT_MOUSE_CAPTURE_CHANGED, wxEVT_SETTING_CHANGED, // WM_WININICHANGE (NT) / WM_SETTINGCHANGE (Win95) // wxEVT_FONT_CHANGED, // WM_FONTCHANGE: roll into wxEVT_SETTING_CHANGED, but remember to propagate @@ -1229,6 +1277,7 @@ public: void SetEvtHandlerEnabled(bool en) { m_enabled = en; } bool GetEvtHandlerEnabled() const { return m_enabled; } +#if WXWIN_COMPATIBILITY_2 virtual void OnCommand(wxWindow& WXUNUSED(win), wxCommandEvent& WXUNUSED(event)) { @@ -1239,6 +1288,7 @@ public: // Default behaviour virtual long Default() { return GetNextHandler() ? GetNextHandler()->Default() : 0; }; +#endif // WXWIN_COMPATIBILITY_2 #if WXWIN_COMPATIBILITY virtual bool OnClose(); @@ -1282,7 +1332,7 @@ protected: wxEvtHandler* m_previousHandler; bool m_enabled; // Is event handler enabled? wxList* m_dynamicEvents; - wxList* m_pendingEvents; + wxList* m_pendingEvents; #if wxUSE_THREADS wxCriticalSection* m_eventsLocker; #endif @@ -1295,6 +1345,7 @@ protected: typedef void (wxEvtHandler::*wxEventFunction)(wxEvent&); typedef void (wxEvtHandler::*wxCommandEventFunction)(wxCommandEvent&); typedef void (wxEvtHandler::*wxScrollEventFunction)(wxScrollEvent&); +typedef void (wxEvtHandler::*wxScrollWinEventFunction)(wxScrollWinEvent&); typedef void (wxEvtHandler::*wxSizeEventFunction)(wxSizeEvent&); typedef void (wxEvtHandler::*wxMoveEventFunction)(wxMoveEvent&); typedef void (wxEvtHandler::*wxPaintEventFunction)(wxPaintEvent&); @@ -1374,6 +1425,8 @@ const wxEventTableEntry theClass::sm_eventTableEntries[] = { \ #define EVT_NAVIGATION_KEY(func) { wxEVT_NAVIGATION_KEY, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNavigationKeyEventFunction) & func, (wxObject *) NULL }, #define EVT_PALETTE_CHANGED(func) { wxEVT_PALETTE_CHANGED, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxPaletteChangedEventFunction) & func, (wxObject *) NULL }, #define EVT_QUERY_NEW_PALETTE(func) { wxEVT_QUERY_NEW_PALETTE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxQueryNewPaletteEventFunction) & func, (wxObject *) NULL }, +#define EVT_WINDOW_CREATE(func) { wxEVT_CREATE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxQueryNewPaletteEventFunction) & func, (wxObject *) NULL }, +#define EVT_WINDOW_DESTROY(func) { wxEVT_DESTROY, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxQueryNewPaletteEventFunction) & func, (wxObject *) NULL }, // Mouse events #define EVT_LEFT_DOWN(func) { wxEVT_LEFT_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL }, @@ -1408,7 +1461,25 @@ const wxEventTableEntry theClass::sm_eventTableEntries[] = { \ #define EVT_COMMAND(id, event, fn) { event, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, #define EVT_COMMAND_RANGE(id1, id2, event, fn) { event, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -// Scrolling +// Scrolling from wxWindow (sent to wxScrolledWindow) +#define EVT_SCROLLWIN(func) \ + { wxEVT_SCROLLWIN_TOP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL },\ + { wxEVT_SCROLLWIN_BOTTOM, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL },\ + { wxEVT_SCROLLWIN_LINEUP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL },\ + { wxEVT_SCROLLWIN_LINEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL },\ + { wxEVT_SCROLLWIN_PAGEUP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL },\ + { wxEVT_SCROLLWIN_PAGEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL },\ + { wxEVT_SCROLLWIN_THUMBTRACK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL }, + +#define EVT_SCROLLWIN_TOP(func) { wxEVT_SCROLLWIN_TOP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL }, +#define EVT_SCROLLWIN_BOTTOM(func) { wxEVT_SCROLLWIN_BOTTOM, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL }, +#define EVT_SCROLLWIN_LINEUP(func) { wxEVT_SCROLLWIN_LINEUP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL }, +#define EVT_SCROLLWIN_LINEDOWN(func) { wxEVT_SCROLLWIN_LINEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL }, +#define EVT_SCROLLWIN_PAGEUP(func) { wxEVT_SCROLLWIN_PAGEUP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL }, +#define EVT_SCROLLWIN_PAGEDOWN(func) { wxEVT_SCROLLWIN_PAGEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL }, +#define EVT_SCROLLWIN_THUMBTRACK(func) { wxEVT_SCROLLWIN_THUMBTRACK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollWinEventFunction) & func, (wxObject *) NULL }, + +// Scrolling from wxSlider and wxScrollBar #define EVT_SCROLL(func) \ { wxEVT_SCROLL_TOP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL },\ { wxEVT_SCROLL_BOTTOM, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL },\ @@ -1426,7 +1497,7 @@ const wxEventTableEntry theClass::sm_eventTableEntries[] = { \ #define EVT_SCROLL_PAGEDOWN(func) { wxEVT_SCROLL_PAGEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL }, #define EVT_SCROLL_THUMBTRACK(func) { wxEVT_SCROLL_THUMBTRACK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL }, -// Scrolling, with an id +// Scrolling from wxSlider and wxScrollBar, with an id #define EVT_COMMAND_SCROLL(id, func) \ { wxEVT_SCROLL_TOP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL },\ { wxEVT_SCROLL_BOTTOM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL },\