X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/23645bfa01b6450257f140a30c87565225b1ef4a..07b6378fcb2fade6cb360254beeccf2bc81f4a36:/include/wx/univ/inpcons.h diff --git a/include/wx/univ/inpcons.h b/include/wx/univ/inpcons.h index bd099c0cd0..28f6b7ee52 100644 --- a/include/wx/univ/inpcons.h +++ b/include/wx/univ/inpcons.h @@ -6,16 +6,12 @@ // Created: 14.08.00 // RCS-ID: $Id$ // Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com) -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_UNIV_INPCONS_H_ #define _WX_UNIV_INPCONS_H_ -#ifdef __GNUG__ - #pragma interface "inpcons.h" -#endif - class WXDLLEXPORT wxInputHandler; class WXDLLEXPORT wxWindow; @@ -35,7 +31,7 @@ typedef wxString wxControlAction; #define wxACTION_NONE _T("") // no action to perform // ---------------------------------------------------------------------------- -// wxInputConsumer: mix-in class for handling wxControlActions (used by +// wxInputConsumer: mix-in class for handling wxControlActions (used by // wxControl and wxTopLevelWindow). // ---------------------------------------------------------------------------- @@ -43,6 +39,7 @@ class WXDLLEXPORT wxInputConsumer { public: wxInputConsumer() { m_inputHandler = NULL; } + virtual ~wxInputConsumer() {} // get the input handler wxInputHandler *GetInputHandler() const { return m_inputHandler; } @@ -90,7 +87,9 @@ private: \ void OnKeyDown(wxKeyEvent& event); \ void OnKeyUp(wxKeyEvent& event); \ void OnFocus(wxFocusEvent& event); \ - void OnActivate(wxActivateEvent& event); +public: /* because of docview :-( */ \ + void OnActivate(wxActivateEvent& event); \ +private: // implement the event table entries for wxControlContainer #define WX_EVENT_TABLE_INPUT_CONSUMER(classname) \ @@ -100,18 +99,18 @@ private: \ EVT_SET_FOCUS(classname::OnFocus) \ EVT_KILL_FOCUS(classname::OnFocus) \ EVT_ACTIVATE(classname::OnActivate) - + // Forward event handlers to wxInputConsumer // -// (We can't use them directly, because wxIC has virtual methods, which forces -// the compiler to include (at least) two vtables into wxControl, one for the -// wxWindow-wxControlBase-wxControl branch and one for the wxIC mix-in. -// Consequently, the "this" pointer has different value when in wxControl's -// and wxIC's method, even though the instance stays same. This doesn't matter -// so far as member pointers aren't used, but that's not wxControl's case. -// When we add an event table entry (= use a member pointer) pointing to -// wxIC's OnXXX method, GCC compiles code that executes wxIC::OnXXX with the -// version of "this" that belongs to wxControl, not wxIC! In our particular +// (We can't use them directly, because wxIC has virtual methods, which forces +// the compiler to include (at least) two vtables into wxControl, one for the +// wxWindow-wxControlBase-wxControl branch and one for the wxIC mix-in. +// Consequently, the "this" pointer has different value when in wxControl's +// and wxIC's method, even though the instance stays same. This doesn't matter +// so far as member pointers aren't used, but that's not wxControl's case. +// When we add an event table entry (= use a member pointer) pointing to +// wxIC's OnXXX method, GCC compiles code that executes wxIC::OnXXX with the +// version of "this" that belongs to wxControl, not wxIC! In our particular // case, the effect is that m_handler is NULL (probably same memory // area as the_other_vtable's_this->m_refObj) and input handling doesn't work.) #define WX_FORWARD_TO_INPUT_CONSUMER(classname) \ @@ -136,5 +135,4 @@ private: \ wxInputConsumer::OnActivate(event); \ } - #endif // _WX_UNIV_INPCONS_H_