X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/aadbdf11bda695e2ca135ef1e4dc09d6c01d2521..6bbd334480935bcb47955797fa1f18cd8d9b21a8:/include/wx/event.h diff --git a/include/wx/event.h b/include/wx/event.h index 6bd1e2f7ff..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 /* @@ -94,7 +95,7 @@ const wxEventType wxEVT_KEY_DOWN = wxEVT_FIRST + 215; const wxEventType wxEVT_KEY_UP = wxEVT_FIRST + 216; /* - * Scrollbar event identifiers + * wxScrollbar and wxSlider event identifiers */ const wxEventType wxEVT_SCROLL_TOP = wxEVT_FIRST + 300; const wxEventType wxEVT_SCROLL_BOTTOM = wxEVT_FIRST + 301; @@ -104,6 +105,20 @@ const wxEventType wxEVT_SCROLL_PAGEUP = wxEVT_FIRST + 304; const wxEventType wxEVT_SCROLL_PAGEDOWN = wxEVT_FIRST + 305; const wxEventType wxEVT_SCROLL_THUMBTRACK = wxEVT_FIRST + 306; + /* + * Scroll events from wxWindow + */ +const wxEventType wxEVT_SCROLLWIN_TOP = wxEVT_FIRST + 320; +const wxEventType wxEVT_SCROLLWIN_BOTTOM = wxEVT_FIRST + 321; +const wxEventType wxEVT_SCROLLWIN_LINEUP = wxEVT_FIRST + 322; +const wxEventType wxEVT_SCROLLWIN_LINEDOWN = wxEVT_FIRST + 323; +const wxEventType wxEVT_SCROLLWIN_PAGEUP = wxEVT_FIRST + 324; +const wxEventType wxEVT_SCROLLWIN_PAGEDOWN = wxEVT_FIRST + 325; +const wxEventType wxEVT_SCROLLWIN_THUMBTRACK = wxEVT_FIRST + 326; + + /* + * System events + */ const wxEventType wxEVT_SIZE = wxEVT_FIRST + 400; const wxEventType wxEVT_MOVE = wxEVT_FIRST + 401; const wxEventType wxEVT_CLOSE_WINDOW = wxEVT_FIRST + 402; @@ -203,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 */ @@ -293,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) @@ -396,7 +416,8 @@ private: DECLARE_DYNAMIC_CLASS(wxNotifyEvent) }; -// Scroll event class +// Scroll event class, derived form wxCommandEvent. wxScrollEvents are +// sent by wxSlider and wxScrollbar. /* wxEVT_SCROLL_TOP wxEVT_SCROLL_BOTTOM @@ -427,6 +448,42 @@ public: void SetPosition(int pos) { m_commandInt = pos; } }; +// ScrollWin event class, derived fom wxEvent. wxScrollWinEvents +// are sent by wxWindow. +/* + wxEVT_SCROLLWIN_TOP + wxEVT_SCROLLWIN_BOTTOM + wxEVT_SCROLLWIN_LINEUP + wxEVT_SCROLLWIN_LINEDOWN + wxEVT_SCROLLWIN_PAGEUP + wxEVT_SCROLLWIN_PAGEDOWN + wxEVT_SCROLLWIN_THUMBTRACK +*/ + +class WXDLLEXPORT wxScrollWinEvent : public wxEvent +{ + DECLARE_DYNAMIC_CLASS(wxScrollWinEvent) + +public: + wxScrollWinEvent(wxEventType commandType = wxEVT_NULL, + int pos = 0, int orient = 0); + ~wxScrollWinEvent() {} + + /* + * Accessors + */ + + int GetOrientation() const { return (int) m_extraLong ; } + int GetPosition() const { return m_commandInt ; } + 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; +}; + // Mouse event class /* @@ -608,6 +665,7 @@ public: bool m_shiftDown; bool m_altDown; bool m_metaDown; + bool m_scanCode; }; // Size event class @@ -950,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 @@ -974,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 @@ -992,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; }; @@ -1032,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; @@ -1073,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; }; @@ -1094,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; }; @@ -1103,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) @@ -1125,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 @@ -1179,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)) { @@ -1189,6 +1288,7 @@ public: // Default behaviour virtual long Default() { return GetNextHandler() ? GetNextHandler()->Default() : 0; }; +#endif // WXWIN_COMPATIBILITY_2 #if WXWIN_COMPATIBILITY virtual bool OnClose(); @@ -1232,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 @@ -1245,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&); @@ -1324,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 }, @@ -1358,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 },\ @@ -1376,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 },\