]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/window.h
Use wxClientDataDictionary for client data.
[wxWidgets.git] / include / wx / window.h
index 94f9919e5da568833bd4c5ca9ab4e3072281ac8c..1b12bc2884b787dd0d898fb5b22d09b513a83ae0 100644 (file)
@@ -12,7 +12,7 @@
 #ifndef _WX_WINDOW_H_BASE_
 #define _WX_WINDOW_H_BASE_
 
 #ifndef _WX_WINDOW_H_BASE_
 #define _WX_WINDOW_H_BASE_
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(__APPLE__)
     #pragma interface "windowbase.h"
 #endif
 
     #pragma interface "windowbase.h"
 #endif
 
@@ -271,7 +271,18 @@ public:
             *h = s.y;
     }
 
             *h = s.y;
     }
 
-        // the generic centre function - centers the window on parent by
+        // There are times (and windows) where 'Best' size and 'Min' size
+        // are vastly out of sync.  This should be remedied somehow, but in
+        // the meantime, this method will return the larger of BestSize
+        // (the window's smallest legible size), and any user specified
+        // MinSize hint.
+    wxSize GetAdjustedBestSize() const
+    {
+        wxSize  s( DoGetBestSize() );
+        return wxSize( wxMax( s.x, GetMinWidth() ), wxMax( s.y, GetMinHeight() ) );
+    }
+
+        // the generic centre function - centers the window on parent by`
         // default or on screen if it doesn't have parent or
         // wxCENTER_ON_SCREEN flag is given
     void Centre( int direction = wxBOTH );
         // default or on screen if it doesn't have parent or
         // wxCENTER_ON_SCREEN flag is given
     void Centre( int direction = wxBOTH );
@@ -288,6 +299,9 @@ public:
         // set window size to wrap around its children
     virtual void Fit();
 
         // set window size to wrap around its children
     virtual void Fit();
 
+        // set virtual size to satisfy children
+    virtual void FitInside();
+
         // set min/max size of the window
     virtual void SetSizeHints( int minW, int minH,
                                int maxW = -1, int maxH = -1,
         // set min/max size of the window
     virtual void SetSizeHints( int minW, int minH,
                                int maxW = -1, int maxH = -1,
@@ -331,6 +345,17 @@ public:
     virtual void DoSetVirtualSize( int x, int y );
     virtual wxSize DoGetVirtualSize() const; // { return m_virtualSize; }
 
     virtual void DoSetVirtualSize( int x, int y );
     virtual wxSize DoGetVirtualSize() const; // { return m_virtualSize; }
 
+        // Return the largest of ClientSize and BestSize (as determined
+        // by a sizer, interior children, or other means)
+
+    virtual wxSize GetBestVirtualSize() const
+    {
+        wxSize  client( GetClientSize() );
+        wxSize  best( GetBestSize() );
+
+        return wxSize( wxMax( client.x, best.x ), wxMax( client.y, best.y ) );
+    }
+
     // window state
     // ------------
 
     // window state
     // ------------
 
@@ -400,6 +425,9 @@ public:
     virtual wxWindow *SetDefaultItem(wxWindow * WXUNUSED(child))
         { return NULL; }
 
     virtual wxWindow *SetDefaultItem(wxWindow * WXUNUSED(child))
         { return NULL; }
 
+        // set this child as temporary default
+    virtual void SetTmpDefaultItem(wxWindow * WXUNUSED(win)) { }
+
     // parent/children relations
     // -------------------------
 
     // parent/children relations
     // -------------------------
 
@@ -420,14 +448,24 @@ public:
         // was changed, FALSE otherwise (error or newParent == oldParent)
     virtual bool Reparent( wxWindowBase *newParent );
 
         // was changed, FALSE otherwise (error or newParent == oldParent)
     virtual bool Reparent( wxWindowBase *newParent );
 
+        // implementation mostly
+    virtual void AddChild( wxWindowBase *child );
+    virtual void RemoveChild( wxWindowBase *child );
+
+    // looking for windows
+    // -------------------
+
         // find window among the descendants of this one either by id or by
         // name (return NULL if not found)
     wxWindow *FindWindow( long id );
     wxWindow *FindWindow( const wxString& name );
 
         // find window among the descendants of this one either by id or by
         // name (return NULL if not found)
     wxWindow *FindWindow( long id );
     wxWindow *FindWindow( const wxString& name );
 
-        // implementation mostly
-    virtual void AddChild( wxWindowBase *child );
-    virtual void RemoveChild( wxWindowBase *child );
+        // Find a window among any window (all return NULL if not found)
+    static wxWindow *FindWindowById( long id, const wxWindow *parent = NULL );
+    static wxWindow *FindWindowByName( const wxString& name,
+                                       const wxWindow *parent = NULL );
+    static wxWindow *FindWindowByLabel( const wxString& label,
+                                        const wxWindow *parent = NULL );
 
     // event handler stuff
     // -------------------
 
     // event handler stuff
     // -------------------
@@ -825,6 +863,10 @@ public:
 #endif // wxUSE_PALETTE
 
 protected:
 #endif // wxUSE_PALETTE
 
 protected:
+#if wxUSE_CONSTRAINTS
+    // satisfy the constraints for the windows but don't set the window sizes
+    void SatisfyConstraints();
+#endif // wxUSE_CONSTRAINTS
 
     // the window id - a number which uniquely identifies a window among
     // its siblings unless it is -1
 
     // the window id - a number which uniquely identifies a window among
     // its siblings unless it is -1
@@ -837,7 +879,10 @@ protected:
 
     // the minimal allowed size for the window (no minimal size if variable(s)
     // contain(s) -1)
 
     // the minimal allowed size for the window (no minimal size if variable(s)
     // contain(s) -1)
-    int                  m_minWidth, m_minHeight, m_maxWidth, m_maxHeight;
+    int                  m_minWidth,
+                         m_minHeight,
+                         m_maxWidth,
+                         m_maxHeight;
 
     // event handler for this window: usually is just 'this' but may be
     // changed with SetEventHandler()
 
     // event handler for this window: usually is just 'this' but may be
     // changed with SetEventHandler()
@@ -938,8 +983,16 @@ protected:
     // set the best size for the control if the default size was given:
     // replaces the fields of size == -1 with the best values for them and
     // calls SetSize() if needed
     // set the best size for the control if the default size was given:
     // replaces the fields of size == -1 with the best values for them and
     // calls SetSize() if needed
+    //
+    // This function is rather unfortunately named..  it's really just a
+    // smarter SetSize / convenience function for expanding wxDefaultSize.
+    // Note that it does not influence the value returned by GetBestSize
+    // at all.
     void SetBestSize(const wxSize& size)
     {
     void SetBestSize(const wxSize& size)
     {
+        // the size only needs to be changed if the current size is incomplete,
+        // i.e. one of the components was specified as default -- so if both
+        // were given, simply don't do anything
         if ( size.x == -1 || size.y == -1 )
         {
             wxSize sizeBest = DoGetBestSize();
         if ( size.x == -1 || size.y == -1 )
         {
             wxSize sizeBest = DoGetBestSize();