X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/865a74c70011e0e253fe3f966a0726d6ee302dd2..414b7b40164c4b146c4518d4873cbee9570a222e:/include/wx/window.h diff --git a/include/wx/window.h b/include/wx/window.h index 9716f0e9f1..733f3d02da 100644 --- a/include/wx/window.h +++ b/include/wx/window.h @@ -353,26 +353,20 @@ public: void CacheBestSize(const wxSize& size) const { wxConstCast(this, wxWindowBase)->m_bestSizeCache = size; } - // There are times (and windows) where 'Best' size and 'Min' size - // are vastly out of sync. This should be remedied somehow, but in - // the meantime, this method will return the larger of BestSize - // (the window's smallest legible size), and any user specified - // MinSize hint. - wxSize GetAdjustedBestSize() const - { - wxSize s( GetBestSize() ); - return wxSize( wxMax( s.x, GetMinWidth() ), wxMax( s.y, GetMinHeight() ) ); - } // This function will merge the window's best size into the window's // minimum size, giving priority to the min size components, and // returns the results. - wxSize GetBestFittingSize() const; + wxSize GetEffectiveMinSize() const; + wxDEPRECATED( wxSize GetBestFittingSize() const ); // replaced by GetEffectiveMinSize + wxDEPRECATED( wxSize GetAdjustedMinSize() const ); // replaced by GetEffectiveMinSize // A 'Smart' SetSize that will fill in default size values with 'best' // size. Sets the minsize to what was passed in. - void SetBestFittingSize(const wxSize& size=wxDefaultSize); + void SetInitialSize(const wxSize& size=wxDefaultSize); + wxDEPRECATED( void SetBestFittingSize(const wxSize& size=wxDefaultSize) ); // replaced by SetInitialSize + // the generic centre function - centers the window on parent by` // default or on screen if it doesn't have parent or // wxCENTER_ON_SCREEN flag is given @@ -389,26 +383,29 @@ public: // set virtual size to satisfy children virtual void FitInside(); - // set min/max size of the window + + // SetSizeHints is actually for setting the size hints + // for the wxTLW for a Window Manager - hence the name - + // and it is therefore overridden in wxTLW to do that. + // In wxWindow(Base), it has (unfortunately) been abused + // to mean the same as SetMinSize() and SetMaxSize(). + virtual void SetSizeHints( int minW, int minH, int maxW = wxDefaultCoord, int maxH = wxDefaultCoord, int incW = wxDefaultCoord, int incH = wxDefaultCoord ) - { - DoSetSizeHints(minW, minH, maxW, maxH, incW, incH); - } + { DoSetSizeHints(minW, minH, maxW, maxH, incW, incH); } void SetSizeHints( const wxSize& minSize, const wxSize& maxSize=wxDefaultSize, const wxSize& incSize=wxDefaultSize) - { - DoSetSizeHints(minSize.x, minSize.y, - maxSize.x, maxSize.y, - incSize.x, incSize.y); - } + { DoSetSizeHints(minSize.x, minSize.y, maxSize.x, maxSize.y, incSize.x, incSize.y); } + + virtual void DoSetSizeHints( int minW, int minH, + int maxW, int maxH, + int incW, int incH ); - virtual void DoSetSizeHints(int minW, int minH, - int maxW = wxDefaultCoord, int maxH = wxDefaultCoord, - int incW = wxDefaultCoord, int incH = wxDefaultCoord ); + // Methods for setting virtual size hints + // FIXME: What are virtual size hints? virtual void SetVirtualSizeHints( int minW, int minH, int maxW = wxDefaultCoord, int maxH = wxDefaultCoord ); @@ -418,17 +415,25 @@ public: SetVirtualSizeHints(minSize.x, minSize.y, maxSize.x, maxSize.y); } - 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 ); } - virtual wxSize GetMinSize() const { return wxSize( m_minWidth, m_minHeight ); } + // Call these to override what GetBestSize() returns. This + // method is only virtual because it is overriden in wxTLW + // as a different API for SetSizeHints(). + virtual void SetMinSize(const wxSize& minSize) { m_minWidth = minSize.x; m_minHeight = minSize.y; } + virtual void SetMaxSize(const wxSize& maxSize) { m_maxWidth = maxSize.x; m_maxHeight = maxSize.y; } + + // Override these methods to impose restrictions on min/max size. + // The easier way is to call SetMinSize() and SetMaxSize() which + // will have the same effect. Doing both is non-sense. + virtual wxSize GetMinSize() const { return wxSize(m_minWidth, m_minHeight); } + virtual wxSize GetMaxSize() const { return wxSize(m_maxWidth, m_maxHeight); } + + // Get the min and max values one by one + int GetMinWidth() const { return GetMinSize().x; } + int GetMinHeight() const { return GetMinSize().y; } + int GetMaxWidth() const { return GetMaxSize().x; } + int GetMaxHeight() const { return GetMaxSize().y; } - void SetMinSize(const wxSize& minSize) { SetSizeHints(minSize); } - void SetMaxSize(const wxSize& maxSize) { SetSizeHints(GetMinSize(), maxSize); } // Methods for accessing the virtual size of a window. For most // windows this is just the client area of the window, but for @@ -468,6 +473,11 @@ public: return wxSize( wxMax( client.x, best.x ), wxMax( client.y, best.y ) ); } + // return the size of the left/right and top/bottom borders in x and y + // components of the result respectively + virtual wxSize GetWindowBorderSize() const; + + // window state // ------------ @@ -496,9 +506,14 @@ public: void SetWindowStyle( long style ) { SetWindowStyleFlag(style); } long GetWindowStyle() const { return GetWindowStyleFlag(); } + // check if the flag is set bool HasFlag(int flag) const { return (m_windowStyle & flag) != 0; } virtual bool IsRetained() const { return HasFlag(wxRETAINED); } + // turn the flag on if it had been turned off before and vice versa, + // return true if the flag is currently turned on + bool ToggleWindowStyle(int flag); + // extra style: the less often used style bits which can't be set with // SetWindowStyleFlag() virtual void SetExtraStyle(long exStyle) { m_exStyle = exStyle; } @@ -725,6 +740,9 @@ public: // adjust DC for drawing on this window virtual void PrepareDC( wxDC & WXUNUSED(dc) ) { } + // return true if the window contents is double buffered by the system + virtual bool IsDoubleBuffered() const { return false; } + // the update region of the window contains the areas which must be // repainted by the program const wxRegion& GetUpdateRegion() const { return m_updateRegion; } @@ -838,6 +856,13 @@ public: const wxFont *theFont = (const wxFont *) NULL) const = 0; + wxSize GetTextExtent(const wxString& string) const + { + wxCoord w, h; + GetTextExtent(string, &w, &h); + return wxSize(w, h); + } + // client <-> screen coords // ------------------------ @@ -1118,6 +1143,10 @@ public: // behaviour in the most common case virtual bool ShouldInheritColours() const { return false; } + // returns true if the window can be positioned outside of parent's client + // area (normal windows can't, but e.g. menubar or statusbar can): + virtual bool CanBeOutsideClientArea() const { return false; } + protected: // event handling specific to wxWindow virtual bool TryValidator(wxEvent& event); @@ -1272,18 +1301,8 @@ protected: // recalculated each time the value is needed. wxSize m_bestSizeCache; - // keep the old name for compatibility, at least until all the internal - // usages of it are changed to SetBestFittingSize - void SetBestSize(const wxSize& size) { SetBestFittingSize(size); } - - // set the initial window size if none is given (i.e. at least one of the - // components of the size passed to ctor/Create() is wxDefaultCoord) - // - // normally just calls SetBestSize() for controls, but can be overridden - // not to do it for the controls which have to do some additional - // initialization (e.g. add strings to list box) before their best size - // can be accurately calculated - virtual void SetInitialBestSize(const wxSize& WXUNUSED(size)) {} + wxDEPRECATED( void SetBestSize(const wxSize& size) ); // use SetInitialSize + wxDEPRECATED( virtual void SetInitialBestSize(const wxSize& size) ); // use SetInitialSize @@ -1342,6 +1361,10 @@ protected: // from both DoSetSize() and DoSetClientSize() and would usually just // reposition this window except for composite controls which will want to // arrange themselves inside the given rectangle + // + // Important note: the coordinates passed to this method are in parent's + // *window* coordinates and not parent's client coordinates (as the values + // passed to DoSetSize and returned by DoGetPosition are)! virtual void DoMoveWindow(int x, int y, int width, int height) = 0; // centre the window in the specified direction on parent, note that @@ -1386,6 +1409,30 @@ private: DECLARE_EVENT_TABLE() }; + + +// Inlines for some deprecated methods +inline wxSize wxWindowBase::GetBestFittingSize() const +{ + return GetEffectiveMinSize(); +} + +inline void wxWindowBase::SetBestFittingSize(const wxSize& size) +{ + SetInitialSize(size); +} + +inline void wxWindowBase::SetBestSize(const wxSize& size) +{ + SetInitialSize(size); +} + +inline void wxWindowBase::SetInitialBestSize(const wxSize& size) +{ + SetInitialSize(size); +} + + // ---------------------------------------------------------------------------- // now include the declaration of wxWindow class // ---------------------------------------------------------------------------- @@ -1582,6 +1629,7 @@ public: // If this object has the focus, child should be 'this'. virtual wxAccStatus GetFocus(int* childId, wxAccessible** child); +#if wxUSE_VARIANT // Gets a variant representing the selected children // of this object. // Acceptable values: @@ -1591,6 +1639,7 @@ public: // or 0 if this object is selected (GetType() == wxT("long") // - a "void*" pointer to a wxAccessible child object virtual wxAccStatus GetSelections(wxVariant* selections); +#endif // wxUSE_VARIANT }; #endif // wxUSE_ACCESSIBILITY