]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/window.h
synchronize GTK2 minimum version in docs
[wxWidgets.git] / interface / wx / window.h
index 89d34bd2fd87604306b1722dc99576ab4dd55ee3..d98fb8b0abbd74dfc1389c8234640c703bbcdb2c 100644 (file)
@@ -737,7 +737,8 @@ public:
     /**
         @name Sizing functions
 
     /**
         @name Sizing functions
 
-        See also the protected functions DoGetBestSize() and SetInitialBestSize().
+        See also the protected functions DoGetBestSize() and
+        DoGetBestClientSize().
     */
     //@{
 
     */
     //@{
 
@@ -818,13 +819,32 @@ public:
         wxPanel), the size returned by this function will be the same as the size
         the window would have had after calling Fit().
 
         wxPanel), the size returned by this function will be the same as the size
         the window would have had after calling Fit().
 
-        Note that when you write your own widget you need to override the
-        DoGetBestSize() function instead of this (non-virtual!) function.
+        Override virtual DoGetBestSize() or, better, because it's usually more
+        convenient, DoGetBestClientSize() when writing your own custom window
+        class to change the value returned by this public non-virtual method.
 
         @see CacheBestSize(), @ref overview_windowsizing
     */
     wxSize GetBestSize() const;
 
 
         @see CacheBestSize(), @ref overview_windowsizing
     */
     wxSize GetBestSize() const;
 
+    /**
+        Returns the best height needed by this window if it had the given width.
+
+        @see DoGetBestClientHeight()
+
+        @since 2.9.4
+     */
+    int GetBestHeight(int width) const;
+
+    /**
+        Returns the best width needed by this window if it had the given height.
+
+        @see DoGetBestClientWidth()
+
+        @since 2.9.4
+     */
+    int GetBestWidth(int height) const;
+
     /**
         Returns the size of the window 'client area' in pixels.
 
     /**
         Returns the size of the window 'client area' in pixels.
 
@@ -1415,12 +1435,6 @@ public:
             A pointer to a integer value for the y coordinate. Pass the client
             coordinate in, and a screen coordinate will be passed out.
 
             A pointer to a integer value for the y coordinate. Pass the client
             coordinate in, and a screen coordinate will be passed out.
 
-        @beginWxPythonOnly
-        In place of a single overloaded method name, wxPython implements the following methods:
-            - ClientToScreen(point): Accepts and returns a wxPoint
-            - ClientToScreenXY(x, y): Returns a 2-tuple, (x, y)
-        @endWxPythonOnly
-
         @beginWxPerlOnly
         In wxPerl this method returns a 2-element list instead of
         modifying its parameters.
         @beginWxPerlOnly
         In wxPerl this method returns a 2-element list instead of
         modifying its parameters.
@@ -3165,6 +3179,9 @@ public:
     */
     virtual bool IsDoubleBuffered() const;
 
     */
     virtual bool IsDoubleBuffered() const;
 
+    /**
+       Turn on or off double buffering of the window if the system supports it.
+    */
     void SetDoubleBuffered(bool on);
 
     /**
     void SetDoubleBuffered(bool on);
 
     /**
@@ -3441,9 +3458,11 @@ protected:
     virtual void DoCentre(int direction);
 
     /**
     virtual void DoCentre(int direction);
 
     /**
-        Gets the size which best suits the window: for a control, it would be
-        the minimal size which doesn't truncate the control, for a panel - the
-        same size as it would have after a call to Fit().
+        Implementation of GetBestSize() that can be overridden.
+
+        Notice that it is usually more convenient to override
+        DoGetBestClientSize() rather than this method itself as you need to
+        explicitly account for the window borders size if you do the latter.
 
         The default implementation of this function is designed for use in container
         windows, such as wxPanel, and works something like this:
 
         The default implementation of this function is designed for use in container
         windows, such as wxPanel, and works something like this:
@@ -3461,11 +3480,65 @@ protected:
     */
     virtual wxSize DoGetBestSize() const;
 
     */
     virtual wxSize DoGetBestSize() const;
 
+    /**
+        Override this method to return the best size for a custom control.
+
+        A typical implementation of this method should compute the minimal size
+        needed to fully display the control contents taking into account the
+        current font size.
+
+        The default implementation simply returns ::wxDefaultSize and
+        GetBestSize() returns an arbitrary hardcoded size for the window, so
+        you must override it when implementing a custom window class.
+
+        @see @ref overview_windowsizing
+
+        @since 2.9.0
+     */
+    virtual wxSize DoGetBestClientSize() const;
+
+    /**
+        Override this method to implement height-for-width best size
+        calculation.
+
+        Return the height needed to fully display the control contents if its
+        width is fixed to the given value. Custom classes implementing
+        wrapping should override this method and return the height
+        corresponding to the number of lines needed to lay out the control
+        contents at this width.
+
+        Currently this method is not used by wxWidgets yet, however it is
+        planned that it will be used by the new sizer classes implementing
+        height-for-width layout strategy in the future.
+
+        Notice that implementing this method or even implementing both it and
+        DoGetBestClientWidth() doesn't replace overriding DoGetBestClientSize(),
+        i.e. you still need to implement the latter as well in order to provide
+        the best size when neither width nor height are constrained.
+
+        By default returns ::wxDefaultCoord meaning that the vertical component
+        of DoGetBestClientSize() return value should be used.
+
+        @since 2.9.4
+     */
+    virtual int DoGetBestClientHeight(int width) const;
+
+    /**
+        Override this method to implement width-for-height best size
+        calculation.
+
+        This method is exactly the same as DoGetBestClientHeight() except that
+        it determines the width assuming the height is fixed instead of vice
+        versa.
+
+        @since 2.9.4
+     */
+    virtual int DoGetBestClientWidth(int height) const;
 
     /**
         Sets 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).
 
     /**
         Sets 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).
-        @deprecated @todo provide deprecation description
+        @deprecated Use SetInitialSize() instead.
     */
     virtual void SetInitialBestSize(const wxSize& size);
 
     */
     virtual void SetInitialBestSize(const wxSize& size);