// Name: window.h
// Purpose: interface of wxWindow
// Author: wxWidgets team
-// RCS-ID: $Id$
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
};
+/**
+ flags for SendSizeEvent()
+*/
+enum
+{
+ wxSEND_EVENT_POST = 1
+};
+
+
+
/**
Struct containing all the visual attributes of a control.
/**
This method may be overridden in the derived classes to return @false to
- indicate that this control doesn't accept input at all (i.e. behaves like
- e.g. wxStaticText) and so doesn't need focus.
+ indicate that this control doesn't accept input at all (i.e.\ behaves like
+ e.g.\ wxStaticText) and so doesn't need focus.
@see AcceptsFocusFromKeyboard()
*/
container windows.
*/
virtual bool AcceptsFocusRecursively() const;
+
+ /**
+ Can this window itself have focus?
+ */
+ bool IsFocusable() const;
+
+ /**
+ Can this window have focus right now?
+
+ If this method returns true, it means that calling SetFocus() will
+ put focus either to this window or one of its children, if you need
+ to know whether this window accepts focus itself, use IsFocusable()
+ */
+ bool CanAcceptFocus() const;
+
+ /**
+ Can this window be assigned focus from keyboard right now?
+ */
+ bool CanAcceptFocusFromKeyboard() const;
+
/**
Returns @true if the window (or in case of composite controls, its main
child window) has focus.
+ @since 2.9.0
+
@see FindFocus()
*/
virtual bool HasFocus() const;
bool IsDescendant(wxWindowBase* win) const;
/**
- Reparents the window, i.e. the window will be removed from its
+ Reparents the window, i.e.\ the window will be removed from its
current parent window (e.g. a non-standard toolbar in a wxFrame)
and then re-inserted into another.
*/
//@{
+ /**
+ Helper for ensuring EndRepositioningChildren() is called correctly.
+
+ This class wraps the calls to BeginRepositioningChildren() and
+ EndRepositioningChildren() by performing the former in its constructor
+ and the latter in its destructor if, and only if, the first call
+ returned @true. This is the simplest way to call these methods and if
+ this class is created as a local variable, it also ensures that
+ EndRepositioningChildren() is correctly called (or not) on scope exit,
+ so its use instead of calling these methods manually is highly
+ recommended.
+
+ @since 2.9.5
+ */
+ class ChildrenRepositioningGuard
+ {
+ public:
+ /**
+ Constructor calls wxWindow::BeginRepositioningChildren().
+
+ @param win The window to call BeginRepositioningChildren() on. If
+ it is @NULL, nothing is done.
+ */
+ explicit ChildrenRepositioningGuard(wxWindow* win);
+
+ /**
+ Destructor calls wxWindow::EndRepositioningChildren() if necessary.
+
+ EndRepositioningChildren() is called only if a valid window was
+ passed to the constructor and if BeginRepositioningChildren()
+ returned @true.
+ */
+ ~ChildrenRepositioningGuard();
+ };
+
+ /**
+ Prepare for changing positions of multiple child windows.
+
+ This method should be called before changing positions of multiple
+ child windows to reduce flicker and, in MSW case, even avoid display
+ corruption in some cases. It is used internally by wxWidgets and called
+ automatically when the window size changes but it can also be useful to
+ call it from outside of the library if a repositioning involving
+ multiple children is done without changing the window size.
+
+ If this method returns @true, then EndRepositioningChildren() must be
+ called after setting all children positions. Use
+ ChildrenRepositioningGuard class to ensure that this requirement is
+ satisfied.
+
+ @since 2.9.5
+ */
+ bool BeginRepositioningChildren();
+
+ /**
+ Fix child window positions after setting all of them at once.
+
+ This method must be called if and only if the previous call to
+ BeginRepositioningChildren() returned @true.
+
+ @since 2.9.5
+ */
+ void EndRepositioningChildren();
+
/**
Sets the cached best size value.
convenient, DoGetBestClientSize() when writing your own custom window
class to change the value returned by this public non-virtual method.
+ Notice that the best size respects the minimal and maximal size
+ explicitly set for the window, if any. So even if some window believes
+ that it needs 200 pixels horizontally, calling SetMaxSize() with a
+ width of 100 would ensure that GetBestSize() returns the width of at
+ most 100 pixels.
+
@see CacheBestSize(), @ref overview_windowsizing
*/
wxSize GetBestSize() const;
*/
virtual wxSize GetMinSize() const;
+ /**
+ Returns the horizontal component of window minimal size.
+
+ The returned value is wxDefaultCoord if the minimal width was not set.
+
+ @see GetMinSize()
+ */
int GetMinWidth() const;
+
+ /**
+ Returns the vertical component of window minimal size.
+
+ The returned value is wxDefaultCoord if the minimal height was not set.
+
+ @see GetMinSize()
+ */
int GetMinHeight() const;
+
+ /**
+ Returns the horizontal component of window maximal size.
+
+ The returned value is wxDefaultCoord if the maximal width was not set.
+
+ @see GetMaxSize()
+ */
int GetMaxWidth() const;
+
+ /**
+ Returns the vertical component of window maximal size.
+
+ The returned value is wxDefaultCoord if the maximal width was not set.
+
+ @see GetMaxSize()
+ */
int GetMaxHeight() const;
/**
*/
virtual wxSize GetBestVirtualSize() const;
+ /**
+ Returns the magnification of the backing store of this window, eg 2.0
+ for a window on a retina screen.
+
+ @since 2.9.5
+ */
+ virtual double GetContentScaleFactor() const;
+
/**
Returns the size of the left/right and top/bottom borders of this window in x
and y components of the result respectively.
virtual wxPoint GetClientAreaOrigin() const;
/**
- Get the client rectangle in window (i.e. client) coordinates
+ Get the client rectangle in window (i.e.\ client) coordinates
*/
wxRect GetClientRect() const;
*/
void SetOwnBackgroundColour(const wxColour& colour);
+ /**
+ Return @true if this window inherits the background colour from its parent.
+
+ @see SetOwnBackgroundColour(), InheritAttributes()
+ */
+ bool InheritsBackgroundColour() const;
+
+ /**
+ Return @true if a background colour has been set for this window.
+ */
+ bool UseBgCol() const;
+
/**
Sets the font of the window but prevents it from being inherited by the
children of this window.
virtual bool HideWithEffect(wxShowEffect effect,
unsigned int timeout = 0);
/**
- Returns @true if the window is enabled, i.e. if it accepts user input,
+ Returns @true if the window is enabled, i.e.\ if it accepts user input,
@false otherwise.
Notice that this method can return @false even if this window itself hadn't
virtual bool IsShown() const;
/**
- Returns @true if the window is physically visible on the screen, i.e. it
+ Returns @true if the window is physically visible on the screen, i.e.\ it
is shown and all its parents up to the toplevel window are shown as well.
@see IsShown()
*/
virtual wxLayoutDirection GetLayoutDirection() const;
+ /**
+ Mirror coordinates for RTL layout if this window uses it and if the
+ mirroring is not done automatically like Win32.
+ */
+ virtual wxCoord AdjustForLayoutDirection(wxCoord x,
+ wxCoord width,
+ wxCoord widthTotal) const;
+
/**
Returns the window's name.
@false if the window's close handler should be able to veto the destruction
of this window, @true if it cannot.
- @return @true if the even was handled and not vetoed, @false otherwise.
+ @return @true if the event was handled and not vetoed, @false otherwise.
@remarks Close calls the close handler for the window, providing an
opportunity for the window to choose whether to destroy
virtual void InitDialog();
/**
- Returns @true if the window contents is double-buffered by the system, i.e. if
+ Returns @true if the window contents is double-buffered by the system, i.e.\ if
any drawing done on the window is really done on a temporary backing surface
and transferred to the screen all at once later.
/**
Returns @true if this window is intrinsically enabled, @false otherwise,
- i.e. if @ref Enable() Enable(@false) had been called. This method is
+ i.e.\ if @ref Enable() Enable(@false) had been called. This method is
mostly used for wxWidgets itself, user code should normally use
IsEnabled() instead.
*/
*/
virtual void OnInternalIdle();
+ /**
+ Send idle event to window and all subwindows. Returns true if more idle
+ time is requested.
+ */
+ virtual bool SendIdleEvents(wxIdleEvent& event);
+
/**
Registers a system wide hotkey. Every time the user presses the hotkey
registered here, this window will receive a hotkey event.
GetBestSize() returns an arbitrary hardcoded size for the window, so
you must override it when implementing a custom window class.
+ Notice that the best size returned by this function is cached
+ internally, so if anything that results in the best size changing (e.g.
+ change to the control contents) happens, you need to call
+ InvalidateBestSize() to notify wxWidgets about it.
+
@see @ref overview_windowsizing
@since 2.9.0
virtual int DoGetBestClientWidth(int height) const;
/**
- Sets the initial window size if none is given (i.e. at least one of the
+ 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 Use SetInitialSize() instead.
*/