@see GetNextSibling()
*/
wxWindow* GetPrevSibling() const;
+
+ /**
+ Check if the specified window is a descendant of this one.
+
+ Returns @true if the window is a descendant (i.e. a child or
+ grand-child or grand-grand-child or ...) of this one.
+
+ Notice that a window can never be a descendant of another one if they
+ are in different top level windows, i.e. a child of a wxDialog is not
+ considered to be a descendant of dialogs parent wxFrame.
+
+ @param win Any window, possible @NULL (@false is always returned then).
+
+ @since 2.9.4
+ */
+ bool IsDescendant(wxWindowBase* win) const;
+
/**
Reparents the window, i.e. the window will be removed from its
current parent window (e.g. a non-standard toolbar in a wxFrame)
/**
@name Sizing functions
- See also the protected functions DoGetBestSize() and SetInitialBestSize().
+ See also the protected functions DoGetBestSize() and
+ DoGetBestClientSize().
*/
//@{
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;
+ /**
+ 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.
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.
*/
virtual bool IsDoubleBuffered() const;
+ /**
+ Turn on or off double buffering of the window if the system supports it.
+ */
void SetDoubleBuffered(bool on);
/**
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:
*/
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).
- @deprecated @todo provide deprecation description
+ @deprecated Use SetInitialSize() instead.
*/
virtual void SetInitialBestSize(const wxSize& size);