]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/window.h
support for iPhone callbacks
[wxWidgets.git] / interface / wx / window.h
index 15bc3bd13ae49edad64a13c0393ec003334686be..d075e1178ca2af9d7d8282838de48d2149cbc69b 100644 (file)
@@ -53,6 +53,16 @@ enum wxShowEffect
 };
 
 
 };
 
 
+/**
+   flags for SendSizeEvent()
+*/
+enum
+{
+    wxSEND_EVENT_POST = 1
+};
+
+
+
 
 /**
     Struct containing all the visual attributes of a control.
 
 /**
     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
 
     /**
         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()
     */
 
         @see AcceptsFocusFromKeyboard()
     */
@@ -360,11 +370,33 @@ public:
         container windows.
      */
     virtual bool AcceptsFocusRecursively() const;
         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.
 
 
     /**
         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;
         @see FindFocus()
     */
     virtual bool HasFocus() const;
@@ -513,7 +545,7 @@ public:
     bool IsDescendant(wxWindowBase* win) 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.
 
         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.
 
     /**
         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.
 
         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;
         @see CacheBestSize(), @ref overview_windowsizing
     */
     wxSize GetBestSize() const;
@@ -924,9 +1026,40 @@ public:
     */
     virtual wxSize GetMinSize() 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;
     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;
     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;
     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;
 
     /**
     int GetMaxHeight() const;
 
     /**
@@ -980,6 +1113,14 @@ public:
     */
     virtual wxSize GetBestVirtualSize() 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.
     /**
         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;
 
     /**
     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;
 
     */
     wxRect GetClientRect() const;
 
@@ -1897,6 +2038,18 @@ public:
     */
     void SetOwnBackgroundColour(const wxColour& colour);
 
     */
     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.
     /**
         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);
     /**
     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
         @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;
 
     /**
     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()
         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;
 
     */
     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.
 
     /**
         Returns the window's name.
 
@@ -3175,7 +3336,7 @@ public:
     virtual void InitDialog();
 
     /**
     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.
 
         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,
 
     /**
         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.
     */
         mostly used for wxWidgets itself, user code should normally use
         IsEnabled() instead.
     */
@@ -3223,6 +3384,12 @@ public:
     */
     virtual void OnInternalIdle();
 
     */
     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.
     /**
         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.
 
         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
         @see @ref overview_windowsizing
 
         @since 2.9.0
@@ -3540,7 +3712,7 @@ protected:
     virtual int DoGetBestClientWidth(int height) const;
 
     /**
     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.
     */
         components of the size passed to ctor/Create() is wxDefaultCoord).
         @deprecated Use SetInitialSize() instead.
     */