X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/34636400a0018eba4a1f63dda18cf32e944b959e..9b61f868b597a84fd3c589b2e8539624c491f86b:/include/wx/window.h diff --git a/include/wx/window.h b/include/wx/window.h index 3fdcd5acf0..5ae7d448c9 100644 --- a/include/wx/window.h +++ b/include/wx/window.h @@ -29,6 +29,10 @@ #include "wx/colour.h" #include "wx/region.h" +#if wxUSE_VALIDATORS + #include "wx/validate.h" // defines wxDefaultValidator +#endif // wxUSE_VALIDATORS + #if wxUSE_ACCEL #include "wx/accel.h" #endif // wxUSE_ACCEL @@ -48,7 +52,6 @@ class WXDLLEXPORT wxLayoutConstraints; class WXDLLEXPORT wxResourceTable; class WXDLLEXPORT wxSizer; class WXDLLEXPORT wxToolTip; -class WXDLLEXPORT wxValidator; class WXDLLEXPORT wxWindowBase; class WXDLLEXPORT wxWindow; @@ -117,6 +120,9 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, +#if wxUSE_VALIDATORS + const wxValidator& validator = wxDefaultValidator, +#endif // wxUSE_VALIDATORS const wxString& name = wxPanelNameStr); virtual ~wxWindowBase(); @@ -257,8 +263,10 @@ public: } // centre with respect to the the parent window - void Centre( int direction = wxHORIZONTAL ); - void Center( int direction = wxHORIZONTAL ) { Centre(direction); } + void Centre( int direction = wxBOTH ); + void Center( int direction = wxBOTH ) { Centre(direction); } + void CentreOnParent( int dir = wxBOTH ) { Centre(dir | wxCENTER_FRAME); } + void CenterOnParent( int dir = wxBOTH ) { Centre(dir | wxCENTER_FRAME); } // set window size to wrap around its children virtual void Fit(); @@ -369,18 +377,12 @@ public: // each window may have associated client data: either a pointer to // wxClientData object in which case it is managed by the window (i.e. // it will delete the data when it's destroyed) or an untyped pointer - // which won't be deleted by the window - virtual void SetClientObject( wxClientData *data ) - { - if ( m_clientObject ) - delete m_clientObject; - - m_clientObject = data; - } - virtual wxClientData *GetClientObject() const { return m_clientObject; } + // which won't be deleted by the window - but not both of them + void SetClientObject( wxClientData *data ) { DoSetClientObject(data); } + wxClientData *GetClientObject() const { return DoGetClientObject(); } - virtual void SetClientData( void *data ) { m_clientData = data; } - virtual void *GetClientData() const { return m_clientData; } + void SetClientData( void *data ) { DoSetClientData(data); } + void *GetClientData() const { return DoGetClientData(); } // dialog oriented functions // ------------------------- @@ -529,7 +531,10 @@ public: void UpdateWindowUI(); - virtual bool PopupMenu( wxMenu *menu, int x, int y ) = 0; + bool PopupMenu( wxMenu *menu, const wxPoint& pos ) + { return DoPopupMenu(menu, pos.x, pos.y); } + bool PopupMenu( wxMenu *menu, int x, int y ) + { return DoPopupMenu(menu, x, y); } // scrollbars // ---------- @@ -690,9 +695,14 @@ protected: // user data associated with the window: either an object which will be // deleted by the window when it's deleted or some raw pointer which we do - // nothing with - wxClientData *m_clientObject; - void *m_clientData; + // nothing with - only one type of data can be used with the given window + // (i.e. you cannot set the void data and then associate the window with + // wxClientData or vice versa) + union + { + wxClientData *m_clientObject; + void *m_clientData; + }; // the tooltip for this window (may be NULL) #if wxUSE_TOOLTIPS @@ -770,6 +780,23 @@ protected: virtual void DoSetToolTip( wxToolTip *tip ); #endif // wxUSE_TOOLTIPS + virtual bool DoPopupMenu( wxMenu *menu, int x, int y ) = 0; + + // client data accessors + virtual void DoSetClientObject( wxClientData *data ); + virtual wxClientData *DoGetClientObject() const; + + virtual void DoSetClientData( void *data ); + virtual void *DoGetClientData() const; + + // what kind of data do we have? + enum wxClientDataType + { + ClientData_None, // we don't know yet because we don't have it at all + ClientData_Object, // our client data is typed and we own it + ClientData_Void // client data is untyped and we don't own it + } m_clientDataType; + private: // contains the last id generated by NewControlId static int ms_lastControlId; @@ -792,6 +819,8 @@ private: #include "wx/qt/window.h" #elif defined(__WXMAC__) #include "wx/mac/window.h" +#elif defined(__WXPM__) + #include "wx/os2/window.h" #endif // ----------------------------------------------------------------------------