X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b2d5a7ee008faae08694abd039f7da235da8bce5..3f0fb1d4165f622ab392a28c1a08a975aa7c5378:/include/wx/window.h diff --git a/include/wx/window.h b/include/wx/window.h index 90611c917b..94f9919e5d 100644 --- a/include/wx/window.h +++ b/include/wx/window.h @@ -2,7 +2,7 @@ // Name: wx/window.h // Purpose: wxWindowBase class - the interface of wxWindow // Author: Vadim Zeitlin -// Modified by: +// Modified by: Ron Lee // Created: 01/02/97 // RCS-ID: $Id$ // Copyright: (c) wxWindows team @@ -33,8 +33,8 @@ #include "wx/validate.h" // for wxDefaultValidator (always include it) #if wxUSE_PALETTE - #include "wx/dcclient.h" - #include "wx/palette.h" + #include "wx/dcclient.h" + #include "wx/palette.h" #endif // wxUSE_PALETTE #if wxUSE_ACCEL @@ -293,11 +293,44 @@ public: int maxW = -1, int maxH = -1, int incW = -1, int incH = -1 ); + virtual void SetVirtualSizeHints( int minW, int minH, + int maxW = -1, int maxH = -1 ); + virtual int GetMinWidth() const { return m_minWidth; } virtual int GetMinHeight() const { return m_minHeight; } int GetMaxWidth() const { return m_maxWidth; } int GetMaxHeight() const { return m_maxHeight; } + // Override this method to control the values given to Sizers etc. + virtual wxSize GetMaxSize() const { return wxSize( m_maxWidth, m_maxHeight ); } + + // Methods for accessing the virtual size of a window. For most + // windows this is just the client area of the window, but for + // some like scrolled windows it is more or less independent of + // the screen window size. You may override the DoXXXVirtual + // methods below for classes where that is is the case. + + void SetVirtualSize( const wxSize &size ) { DoSetVirtualSize( size.x, size.y ); } + void SetVirtualSize( int x, int y ) { DoSetVirtualSize( x, y ); } + + wxSize GetVirtualSize() const { return DoGetVirtualSize(); } + void GetVirtualSize( int *x, int *y ) const + { + wxSize s( DoGetVirtualSize() ); + + if( x ) + *x = s.GetWidth(); + if( y ) + *y = s.GetHeight(); + } + + // Override these methods for windows that have a virtual size + // independent of their client size. eg. the virtual area of a + // wxScrolledWindow. Default is to alias VirtualSize to ClientSize. + + virtual void DoSetVirtualSize( int x, int y ); + virtual wxSize DoGetVirtualSize() const; // { return m_virtualSize; } + // window state // ------------ @@ -342,6 +375,9 @@ public: // set focus to this window virtual void SetFocus() = 0; + // set focus to this window as the result of a keyboard action + virtual void SetFocusFromKbd() { SetFocus(); } + // return the window which currently has the focus or NULL static wxWindow *FindFocus() /* = 0: implement in derived classes */; @@ -702,15 +738,6 @@ public: void SetConstraints( wxLayoutConstraints *constraints ); wxLayoutConstraints *GetConstraints() const { return m_constraints; } - // when using constraints, it makes sense to update children positions - // automatically whenever the window is resized - this is done if - // autoLayout is on - void SetAutoLayout( bool autoLayout ) { m_autoLayout = autoLayout; } - bool GetAutoLayout() const { return m_autoLayout; } - - // do layout the window and its children - virtual bool Layout(); - // implementation only void UnsetConstraints(wxLayoutConstraints *c); wxWindowList *GetConstraintsInvolvedIn() const @@ -733,16 +760,27 @@ public: virtual void GetClientSizeConstraint(int *w, int *h) const ; virtual void GetPositionConstraint(int *x, int *y) const ; +#endif // wxUSE_CONSTRAINTS + + // when using constraints or sizers, it makes sense to update + // children positions automatically whenever the window is resized + // - this is done if autoLayout is on + void SetAutoLayout( bool autoLayout ) { m_autoLayout = autoLayout; } + bool GetAutoLayout() const { return m_autoLayout; } + + // lay out the window and its children + virtual bool Layout(); + // sizers - void SetSizer( wxSizer *sizer ); + void SetSizer(wxSizer *sizer, bool deleteOld = TRUE ); + void SetSizerAndFit( wxSizer *sizer, bool deleteOld = TRUE ); + wxSizer *GetSizer() const { return m_windowSizer; } // Track if this window is a member of a sizer void SetContainingSizer(wxSizer* sizer) { m_containingSizer = sizer; } wxSizer *GetContainingSizer() const { return m_containingSizer; } -#endif // wxUSE_CONSTRAINTS - // backward compatibility // ---------------------- #if WXWIN_COMPATIBILITY @@ -787,6 +825,7 @@ public: #endif // wxUSE_PALETTE protected: + // the window id - a number which uniquely identifies a window among // its siblings unless it is -1 wxWindowID m_windowId; @@ -843,6 +882,7 @@ protected: // constraints this window is involved in wxWindowList *m_constraintsInvolvedIn; +#endif // wxUSE_CONSTRAINTS // this window's sizer wxSizer *m_windowSizer; @@ -852,7 +892,6 @@ protected: // Layout() window automatically when its size changes? bool m_autoLayout:1; -#endif // wxUSE_CONSTRAINTS // window state bool m_isShown:1; @@ -875,7 +914,13 @@ protected: bool m_hasCustomPalette; #endif // wxUSE_PALETTE -protected: + // Virtual size (scrolling) + wxSize m_virtualSize; + + int m_minVirtualWidth; // VirtualSizeHints + int m_minVirtualHeight; + int m_maxVirtualWidth; + int m_maxVirtualHeight; // common part of all ctors: it is not virtual because it is called from // ctor @@ -965,7 +1010,7 @@ protected: // Makes an adjustment to the window position (for example, a frame that has // a toolbar that it manages itself). - virtual void AdjustForParentClientOrigin(int& x, int& y, int sizeFlags); + virtual void AdjustForParentClientOrigin(int& x, int& y, int sizeFlags) const; private: @@ -1072,8 +1117,12 @@ WXDLLEXPORT extern wxPoint wxGetMousePosition(); // get the currently active window of this application or NULL WXDLLEXPORT extern wxWindow *wxGetActiveWindow(); +// get the (first) top level parent window +WXDLLEXPORT wxWindow* wxGetTopLevelParent(wxWindow *win); + // deprecated (doesn't start with 'wx' prefix), use wxWindow::NewControlId() inline int NewControlId() { return wxWindowBase::NewControlId(); } #endif // _WX_WINDOW_H_BASE_ +