]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/wincmn.cpp
Fix memory leaks in wxAutomationObject::Invoke().
[wxWidgets.git] / src / common / wincmn.cpp
index ecc4aa88320254cabed2bb34b32af847d3c00f49..ce2bb0a23778e6cdc5780a1cd4662604236c24b4 100644 (file)
@@ -916,6 +916,24 @@ wxSize wxWindowBase::GetBestSize() const
     return DoGetBestSize();
 }
 
+int wxWindowBase::GetBestHeight(int width) const
+{
+    const int height = DoGetBestClientHeight(width);
+
+    return height == wxDefaultCoord
+            ? GetBestSize().y
+            : height + DoGetBorderSize().y;
+}
+
+int wxWindowBase::GetBestWidth(int height) const
+{
+    const int width = DoGetBestClientWidth(height);
+
+    return width == wxDefaultCoord
+            ? GetBestSize().x
+            : width + DoGetBorderSize().x;
+}
+
 void wxWindowBase::SetMinSize(const wxSize& minSize)
 {
     m_minWidth = minSize.x;
@@ -1242,9 +1260,28 @@ void wxWindowBase::Thaw()
 }
 
 // ----------------------------------------------------------------------------
-// reparenting the window
+// Dealing with parents and children.
 // ----------------------------------------------------------------------------
 
+bool wxWindowBase::IsDescendant(wxWindowBase* win) const
+{
+    // Iterate until we find this window in the parent chain or exhaust it.
+    while ( win )
+    {
+        wxWindow* const parent = win->GetParent();
+        if ( parent == this )
+            return true;
+
+        // Stop iterating on reaching the top level window boundary.
+        if ( parent->IsTopLevel() )
+            break;
+
+        win = parent;
+    }
+
+    return false;
+}
+
 void wxWindowBase::AddChild(wxWindowBase *child)
 {
     wxCHECK_RET( child, wxT("can't add a NULL child") );
@@ -1916,6 +1953,7 @@ wxWindowBase::FindWindowById( long id, const wxWindow* parent )
 // dialog oriented functions
 // ----------------------------------------------------------------------------
 
+#if WXWIN_COMPATIBILITY_2_8
 void wxWindowBase::MakeModal(bool modal)
 {
     // Disable all other windows
@@ -1932,6 +1970,7 @@ void wxWindowBase::MakeModal(bool modal)
         }
     }
 }
+#endif // WXWIN_COMPATIBILITY_2_8
 
 bool wxWindowBase::Validate()
 {