X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c5b42c871b189a0199ff138ee094c00746bfc46a..a0250ba3e5f1b176fa69eb5aa7301069ad3bfcf3:/include/wx/event.h diff --git a/include/wx/event.h b/include/wx/event.h index 692d9f18d5..71c3bcfb61 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 /* @@ -156,9 +157,14 @@ const wxEventType wxEVT_COMPARE_ITEM = wxEVT_FIRST + 436; const wxEventType wxEVT_INIT_DIALOG = wxEVT_FIRST + 437; const wxEventType wxEVT_IDLE = wxEVT_FIRST + 438; const wxEventType wxEVT_UPDATE_UI = wxEVT_FIRST + 439; + /* System misc. */ const wxEventType wxEVT_END_PROCESS = wxEVT_FIRST + 440; + /* Dial up events */ +const wxEventType wxEVT_DIALUP_CONNECTED = wxEVT_FIRST + 450; +const wxEventType wxEVT_DIALUP_DISCONNECTED = wxEVT_FIRST + 451; + /* Generic command events */ /* Note: a click is a higher-level event than button down/up */ const wxEventType wxEVT_COMMAND_LEFT_CLICK = wxEVT_FIRST + 500; @@ -217,6 +223,17 @@ 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; + +/* Wizard events */ +const wxEventType wxEVT_WIZARD_PAGE_CHANGED = wxEVT_FIRST + 900; +const wxEventType wxEVT_WIZARD_PAGE_CHANGING = wxEVT_FIRST + 901; +const wxEventType wxEVT_WIZARD_CANCEL = wxEVT_FIRST + 902; + const wxEventType wxEVT_USER_FIRST = wxEVT_FIRST + 2000; /* Compatibility */ @@ -307,13 +324,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 +488,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; @@ -713,12 +730,33 @@ public: wxEVT_PAINT_ICON */ +#if defined(__WXDEBUG__) && defined(__WXMSW__) + // see comments in src/msw/dcclient.cpp where g_isPainting is defined + extern int g_isPainting; +#endif // debug + class WXDLLEXPORT wxPaintEvent : public wxEvent { DECLARE_DYNAMIC_CLASS(wxPaintEvent) public: - wxPaintEvent(int Id = 0) { m_eventType = wxEVT_PAINT; m_id = Id; } + wxPaintEvent(int Id = 0) + { + m_eventType = wxEVT_PAINT; + m_id = Id; + +#if defined(__WXDEBUG__) && defined(__WXMSW__) + // set the internal flag for the duration of processing of WM_PAINT + g_isPainting++; +#endif // debug + } + +#if defined(__WXDEBUG__) && defined(__WXMSW__) + ~wxPaintEvent() + { + g_isPainting--; + } +#endif // debug }; // Erase background event class @@ -979,7 +1017,7 @@ public: // Was it a button event? (*doesn't* mean: is any button *down*?) bool IsButton() const { return ((GetEventType() == wxEVT_JOY_BUTTON_DOWN) || - (GetEventType() == wxEVT_JOY_BUTTON_DOWN)); } + (GetEventType() == wxEVT_JOY_BUTTON_UP)); } // Was it a move event? bool IsMove() const { return (GetEventType() == wxEVT_JOY_MOVE) ; } @@ -1166,7 +1204,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) @@ -1188,10 +1226,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 @@ -1242,16 +1308,17 @@ 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)) { + wxFAIL_MSG(_T("shouldn't be called any more")); } - // Called if child control has no - // callback function - // Default behaviour + // Called if child control has no callback function virtual long Default() { return GetNextHandler() ? GetNextHandler()->Default() : 0; }; +#endif // WXWIN_COMPATIBILITY_2 #if WXWIN_COMPATIBILITY virtual bool OnClose(); @@ -1295,7 +1362,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 @@ -1388,6 +1455,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 },