X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/978af864269a739e77d9431c8465435e3f8f7407..82972e922e61d323e65370236b18bd042ac8e3ef:/include/wx/window.h diff --git a/include/wx/window.h b/include/wx/window.h index 739309ac03..c545e576a0 100644 --- a/include/wx/window.h +++ b/include/wx/window.h @@ -65,6 +65,7 @@ class WXDLLEXPORT wxSizer; class WXDLLEXPORT wxToolTip; class WXDLLEXPORT wxWindowBase; class WXDLLEXPORT wxWindow; +class WXDLLEXPORT wxScrollHelper; #if wxUSE_ACCESSIBILITY class WXDLLEXPORT wxAccessible; @@ -191,7 +192,7 @@ public: // it is wxID_ANY which means "don't care" void SetId( wxWindowID winid ) { m_windowId = winid; } wxWindowID GetId() const { return m_windowId; } - + // get or change the layout direction (LTR or RTL) for this window, // wxLayout_Default is returned if layout direction is not supported virtual wxLayoutDirection GetLayoutDirection() const @@ -343,6 +344,9 @@ public: *h = s.y; } + void SetScrollHelper( wxScrollHelper *sh ) { m_scrollHelper = sh; } + wxScrollHelper *GetScrollHelper() { return m_scrollHelper; } + // reset the cached best size value so it will be recalculated the // next time it is needed. void InvalidateBestSize(); @@ -385,26 +389,28 @@ public: // set virtual size to satisfy children virtual void FitInside(); - // set min/max size of the window + + // Methods for setting size hints. This is only used + // for toplevel windows. + virtual void SetSizeHints( int minW, int minH, int maxW = wxDefaultCoord, int maxH = wxDefaultCoord, int incW = wxDefaultCoord, int incH = wxDefaultCoord ) - { - DoSetSizeHints(minW, minH, maxW, maxH, incW, incH); - } + { DoSetSizeHints(minW, minH, maxW, maxH, incW, incH); } void SetSizeHints( const wxSize& minSize, const wxSize& maxSize=wxDefaultSize, const wxSize& incSize=wxDefaultSize) + { DoSetSizeHints(minSize.x, minSize.y, maxSize.x, maxSize.y, incSize.x, incSize.y); } + + virtual void DoSetSizeHints( int WXUNUSED(minW), int WXUNUSED(minH), + int WXUNUSED(maxW), int WXUNUSED(maxH), + int WXUNUSED(incW), int WXUNUSED(incH) ) { - DoSetSizeHints(minSize.x, minSize.y, - maxSize.x, maxSize.y, - incSize.x, incSize.y); } - virtual void DoSetSizeHints(int minW, int minH, - int maxW = wxDefaultCoord, int maxH = wxDefaultCoord, - int incW = wxDefaultCoord, int incH = wxDefaultCoord ); + // Methods for setting virtual size hints + // FIXME: What are virtual size hints? virtual void SetVirtualSizeHints( int minW, int minH, int maxW = wxDefaultCoord, int maxH = wxDefaultCoord ); @@ -414,17 +420,18 @@ public: SetVirtualSizeHints(minSize.x, minSize.y, maxSize.x, maxSize.y); } - virtual int GetMinWidth() const { return m_minWidth; } - virtual int GetMinHeight() const { return m_minHeight; } - int GetMaxWidth() const { return m_maxWidth; } - int GetMaxHeight() const { return m_maxHeight; } + int GetMinWidth() const { return GetMinSize().x; } + int GetMinHeight() const { return GetMinSize().y; } + int GetMaxWidth() const { return GetMaxSize().x; } + int GetMaxHeight() const { return GetMaxSize().y; } + + // Override these methods to impose restrictions on min/max size + virtual wxSize GetMinSize() const { return wxSize(m_minWidth, m_minHeight); } + virtual wxSize GetMaxSize() const { return wxSize(m_maxWidth, m_maxHeight); } - // Override this method to control the values given to Sizers etc. - virtual wxSize GetMaxSize() const { return wxSize( m_maxWidth, m_maxHeight ); } - virtual wxSize GetMinSize() const { return wxSize( m_minWidth, m_minHeight ); } + void SetMinSize(const wxSize& minSize) { m_minWidth = minSize.x; m_minHeight = minSize.y; } + void SetMaxSize(const wxSize& maxSize) { m_maxWidth = maxSize.x; m_maxHeight = maxSize.y; } - void SetMinSize(const wxSize& minSize) { SetSizeHints(minSize); } - void SetMaxSize(const wxSize& maxSize) { SetSizeHints(GetMinSize(), maxSize); } // Methods for accessing the virtual size of a window. For most // windows this is just the client area of the window, but for @@ -479,6 +486,10 @@ public: virtual bool IsShown() const { return m_isShown; } virtual bool IsEnabled() const { return m_isEnabled; } + // returns true if the window is visible, i.e. IsShown() returns true + // if called on it and all its parents up to the first TLW + virtual bool IsShownOnScreen() const; + // get/set window style (setting style won't update the window and so // is only useful for internal usage) virtual void SetWindowStyleFlag( long style ) { m_windowStyle = style; } @@ -711,9 +722,15 @@ public: // thaw the window: redraw it after it had been frozen virtual void Thaw() { } + // return true if window had been frozen and not unthawed yet + virtual bool IsFrozen() const { return false; } + // adjust DC for drawing on this window virtual void PrepareDC( wxDC & WXUNUSED(dc) ) { } + // return true if the window contents is double buffered by the system + virtual bool IsDoubleBuffered() const { return false; } + // the update region of the window contains the areas which must be // repainted by the program const wxRegion& GetUpdateRegion() const { return m_updateRegion; } @@ -724,13 +741,17 @@ public: // these functions verify whether the given point/rectangle belongs to // (or at least intersects with) the update region - bool IsExposed( int x, int y ) const; - bool IsExposed( int x, int y, int w, int h ) const; + virtual bool DoIsExposed( int x, int y ) const; + virtual bool DoIsExposed( int x, int y, int w, int h ) const; + bool IsExposed( int x, int y ) const + { return DoIsExposed(x, y); } + bool IsExposed( int x, int y, int w, int h ) const + { return DoIsExposed(x, y, w, h); } bool IsExposed( const wxPoint& pt ) const - { return IsExposed(pt.x, pt.y); } + { return DoIsExposed(pt.x, pt.y); } bool IsExposed( const wxRect& rect ) const - { return IsExposed(rect.x, rect.y, rect.width, rect.height); } + { return DoIsExposed(rect.x, rect.y, rect.width, rect.height); } // colours, fonts and cursors // -------------------------- @@ -1042,7 +1063,7 @@ public: wxAccessible* GetOrCreateAccessible() ; #endif - + // Set window transparency if the platform supports it virtual bool SetTransparent(wxByte WXUNUSED(alpha)) { return false; } virtual bool CanSetTransparent() { return false; } @@ -1234,6 +1255,8 @@ protected: // Virtual size (scrolling) wxSize m_virtualSize; + wxScrollHelper *m_scrollHelper; + int m_minVirtualWidth; // VirtualSizeHints int m_minVirtualHeight; int m_maxVirtualWidth; @@ -1325,6 +1348,10 @@ protected: // from both DoSetSize() and DoSetClientSize() and would usually just // reposition this window except for composite controls which will want to // arrange themselves inside the given rectangle + // + // Important note: the coordinates passed to this method are in parent's + // *window* coordinates and not parent's client coordinates (as the values + // passed to DoSetSize and returned by DoGetPosition are)! virtual void DoMoveWindow(int x, int y, int width, int height) = 0; // centre the window in the specified direction on parent, note that @@ -1565,6 +1592,7 @@ public: // If this object has the focus, child should be 'this'. virtual wxAccStatus GetFocus(int* childId, wxAccessible** child); +#if wxUSE_VARIANT // Gets a variant representing the selected children // of this object. // Acceptable values: @@ -1574,6 +1602,7 @@ public: // or 0 if this object is selected (GetType() == wxT("long") // - a "void*" pointer to a wxAccessible child object virtual wxAccStatus GetSelections(wxVariant* selections); +#endif // wxUSE_VARIANT }; #endif // wxUSE_ACCESSIBILITY