X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/958eb28b3fe366611bb23f337cd4859faa5a2537..d3fa4bc22e84e3ca4d88cc1772f2d414140a1017:/interface/wx/window.h diff --git a/interface/wx/window.h b/interface/wx/window.h index 15bc3bd13a..d075e1178c 100644 --- a/interface/wx/window.h +++ b/interface/wx/window.h @@ -53,6 +53,16 @@ enum wxShowEffect }; +/** + flags for SendSizeEvent() +*/ +enum +{ + wxSEND_EVENT_POST = 1 +}; + + + /** Struct containing all the visual attributes of a control. @@ -339,8 +349,8 @@ public: /** 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() */ @@ -360,11 +370,33 @@ public: 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; @@ -513,7 +545,7 @@ public: 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. @@ -744,6 +776,70 @@ public: */ //@{ + /** + 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. @@ -825,6 +921,12 @@ public: 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; @@ -924,9 +1026,40 @@ public: */ 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; /** @@ -980,6 +1113,14 @@ public: */ 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. @@ -1373,7 +1514,7 @@ public: 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; @@ -1897,6 +2038,18 @@ public: */ 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. @@ -2324,7 +2477,7 @@ public: 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 @@ -2364,7 +2517,7 @@ public: 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() @@ -2686,6 +2839,14 @@ public: */ 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. @@ -3175,7 +3336,7 @@ public: 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. @@ -3197,7 +3358,7 @@ public: /** 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. */ @@ -3223,6 +3384,12 @@ public: */ 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. @@ -3495,6 +3662,11 @@ protected: 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 @@ -3540,7 +3712,7 @@ protected: 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. */