X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0c3140ca4494195cfe3fee8a21dd0834437993a6..92c0fc34c104c8d7c12d6a3b78ea232690fc23f4:/interface/wx/window.h diff --git a/interface/wx/window.h b/interface/wx/window.h index 7b32e9c5c5..361f34cd69 100644 --- a/interface/wx/window.h +++ b/interface/wx/window.h @@ -2,7 +2,6 @@ // Name: window.h // Purpose: interface of wxWindow // Author: wxWidgets team -// RCS-ID: $Id$ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -53,6 +52,16 @@ enum wxShowEffect }; +/** + flags for SendSizeEvent() +*/ +enum +{ + wxSEND_EVENT_POST = 1 +}; + + + /** Struct containing all the visual attributes of a control. @@ -339,8 +348,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() */ @@ -385,6 +394,8 @@ public: 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; @@ -533,7 +544,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. @@ -764,6 +775,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. @@ -845,6 +920,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; @@ -944,9 +1025,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; /** @@ -1000,6 +1112,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. @@ -1393,7 +1513,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; @@ -1917,7 +2037,16 @@ 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; /** @@ -2347,7 +2476,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 @@ -2387,7 +2516,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() @@ -3206,7 +3335,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. @@ -3228,7 +3357,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. */ @@ -3532,6 +3661,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 @@ -3577,7 +3711,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. */