X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/574c939ef1c1b835a8bc65c0fe724548fa04ec49..137b5242b1834999da2883c7a68fbde28c6fba37:/include/wx/window.h?ds=sidebyside diff --git a/include/wx/window.h b/include/wx/window.h index 1e4736b97b..1b7071d626 100644 --- a/include/wx/window.h +++ b/include/wx/window.h @@ -293,11 +293,14 @@ public: int maxW = -1, int maxH = -1, int incW = -1, int incH = -1 ); - int GetMinWidth() const { return m_minWidth; } - int GetMinHeight() const { return m_minHeight; } + 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 ); } + // window state // ------------ @@ -327,7 +330,7 @@ public: // extra style: the less often used style bits which can't be set with // SetWindowStyleFlag() - void SetExtraStyle(long exStyle) { m_exStyle = exStyle; } + virtual void SetExtraStyle(long exStyle) { m_exStyle = exStyle; } long GetExtraStyle() const { return m_exStyle; } // make the window modal (all other windows unresponsive) @@ -702,15 +705,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,11 +727,24 @@ 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 - // TODO: what are they and how do they work?? - void SetSizer( wxSizer *sizer ); + void SetSizer(wxSizer *sizer, bool deleteOld = TRUE ); wxSizer *GetSizer() const { return m_windowSizer; } -#endif // wxUSE_CONSTRAINTS + + // Track if this window is a member of a sizer + void SetContainingSizer(wxSizer* sizer) { m_containingSizer = sizer; } + wxSizer *GetContainingSizer() const { return m_containingSizer; } // backward compatibility // ---------------------- @@ -770,15 +777,16 @@ public: // Store the palette used by DCs in wxWindow so that the dcs can share // a palette. And we can respond to palette messages. wxPalette GetPalette() const { return m_palette; } + // When palette is changed tell the DC to set the system palette to the // new one. - void SetPalette(wxPalette &pal) { - m_custompalette=true; - m_palette=pal; - wxWindowDC d((wxWindow *) this); - d.SetPalette(pal); - } - bool HasCustomPalette() { return m_custompalette; } + void SetPalette(const wxPalette& pal); + + // return true if we have a specific palette + bool HasCustomPalette() const { return m_hasCustomPalette; } + + // return the first parent window with a custom palette or NULL + wxWindow *GetAncestorWithCustomPalette() const; #endif // wxUSE_PALETTE protected: @@ -838,15 +846,16 @@ protected: // constraints this window is involved in wxWindowList *m_constraintsInvolvedIn; +#endif // wxUSE_CONSTRAINTS - // top level and the parent sizers - // TODO what's this and how does it work?) + // this window's sizer wxSizer *m_windowSizer; - wxWindowBase *m_sizerParent; + + // The sizer this window is a member of, if any + wxSizer *m_containingSizer; // Layout() window automatically when its size changes? bool m_autoLayout:1; -#endif // wxUSE_CONSTRAINTS // window state bool m_isShown:1; @@ -864,10 +873,10 @@ protected: wxString m_windowName; bool m_themeEnabled; -#ifdef wxUSE_PALETTE +#if wxUSE_PALETTE wxPalette m_palette; - bool m_custompalette; -#endif + bool m_hasCustomPalette; +#endif // wxUSE_PALETTE protected: @@ -959,12 +968,8 @@ 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; -#ifdef __WXPM__ - // extra OS/2 layout processing - virtual void OS2Layout(int width, int height) { }; -#endif private: @@ -1075,3 +1080,5 @@ inline int NewControlId() { return wxWindowBase::NewControlId(); } #endif // _WX_WINDOW_H_BASE_ + +// vi:sts=4:sw=4:et