X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0185cd097844887c308a81fbd137676086ae8580..d5536adedfb59e4a5792234e6a28949535e13369:/include/wx/event.h diff --git a/include/wx/event.h b/include/wx/event.h index 1d97b842f8..e113a34ee2 100644 --- a/include/wx/event.h +++ b/include/wx/event.h @@ -482,8 +482,14 @@ public: int GetOrientation() const { return (int) m_extraLong ; } int GetPosition() const { return m_commandInt ; } + bool IsScrolling() const { return m_isScrolling; } void SetOrientation(int orient) { m_extraLong = (long) orient; } void SetPosition(int pos) { m_commandInt = pos; } + void SetScrolling(bool isScrolling) { m_isScrolling = isScrolling; } + + void CopyObject(wxObject& obj) const; +public: + bool m_isScrolling; }; // ScrollWin event class, derived fom wxEvent. wxScrollWinEvents @@ -513,13 +519,16 @@ public: int GetOrientation() const { return (int) m_extraLong ; } int GetPosition() const { return m_commandInt ; } + bool IsScrolling() const { return m_isScrolling; } void SetOrientation(int orient) { m_extraLong = (long) orient; } void SetPosition(int pos) { m_commandInt = pos; } + void SetScrolling(bool isScrolling) { m_isScrolling = isScrolling; } void CopyObject(wxObject& object_dest) const; public: int m_commandInt; // Additional information long m_extraLong; + bool m_isScrolling; }; // Mouse event class @@ -1239,27 +1248,56 @@ protected: Event generated by dialog navigation keys wxEVT_NAVIGATION_KEY */ -// must derive from command event to be propagated to the parent -class WXDLLEXPORT wxNavigationKeyEvent : public wxCommandEvent +// NB: don't derive from command event to avoid being propagated to the parent +class WXDLLEXPORT wxNavigationKeyEvent : public wxEvent { - DECLARE_DYNAMIC_CLASS(wxNavigationKeyEvent) - public: - wxNavigationKeyEvent() : wxCommandEvent(wxEVT_NAVIGATION_KEY) { } + wxNavigationKeyEvent() + { + SetEventType(wxEVT_NAVIGATION_KEY); + + m_flags = IsForward | Propagate; // defaults are for TAB + m_focus = (wxWindow *)NULL; + } // direction: forward (true) or backward (false) - bool GetDirection() const { return m_commandInt == 1; } - void SetDirection(bool bForward) { m_commandInt = bForward; } + bool GetDirection() const + { return (m_flags & IsForward) != 0; } + void SetDirection(bool bForward) + { if ( bForward ) m_flags |= IsForward; else m_flags &= ~IsForward; } // it may be a window change event (MDI, notebook pages...) or a control // change event - bool IsWindowChange() const { return m_extraLong == 1; } - void SetWindowChange(bool bIs) { m_extraLong = bIs; } + bool IsWindowChange() const + { return (m_flags & WinChange) != 0; } + void SetWindowChange(bool bIs) + { if ( bIs ) m_flags |= WinChange; else m_flags &= ~WinChange; } + + // some navigation events are meant to be propagated upwards (Windows + // convention is to do this for TAB events) while others should always + // cycle inside the panel/radiobox/whatever we're current inside + bool ShouldPropagate() const + { return (m_flags & Propagate) != 0; } + void SetPropagate(bool bDoIt) + { if ( bDoIt ) m_flags |= Propagate; else m_flags &= ~Propagate; } // the child which has the focus currently (may be NULL - use // wxWindow::FindFocus then) - wxWindow* GetCurrentFocus() const { return (wxWindow *)m_clientData; } - void SetCurrentFocus(wxWindow *win) { m_clientData = (void *)win; } + wxWindow* GetCurrentFocus() const { return m_focus; } + void SetCurrentFocus(wxWindow *win) { m_focus = win; } + +private: + enum + { + IsForward = 0x0001, + WinChange = 0x0002, + Propagate = 0x0004 + }; + + long m_flags; + wxWindow *m_focus; + + DECLARE_DYNAMIC_CLASS(wxNavigationKeyEvent) }; // Window creation/destruction events: the first is sent as soon as window is @@ -1662,7 +1700,6 @@ const wxEventTableEntry theClass::sm_eventTableEntries[] = { \ #define EVT_TOOL_RCLICKED_RANGE(id1, id2, fn) { wxEVT_COMMAND_TOOL_RCLICKED, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, #define EVT_TOOL_ENTER(id, fn) { wxEVT_COMMAND_TOOL_ENTER, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, #define EVT_CHECKLISTBOX(id, fn) { wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_SPINCTRL(id, fn) { wxEVT_COMMAND_SPINCTRL_UPDATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, // Generic command events #define EVT_COMMAND_LEFT_CLICK(id, fn) { wxEVT_COMMAND_LEFT_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },