]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/wincmn.cpp
moved wxDash typedef to gdicmn.h
[wxWidgets.git] / src / common / wincmn.cpp
index 068a995fd34743da17e9b9b48819b2691cf0fb75..bd49ebf5dd893aa8cfbd76ffd9556ea7d3e78ab3 100644 (file)
@@ -123,12 +123,12 @@ void wxWindowBase::InitBase()
     // m_foregroundColour = *wxBLACK;  // TODO take this from sys settings too?
     m_foregroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOWTEXT);
 
-#if !defined(__WXMAC__) && !defined(__WXGTK__)
+    // GRG, changed Mar/2000
+#if 0 // !defined(__WXMAC__) && !defined(__WXGTK__)
     m_font = *wxSWISS_FONT;         //      and this?
 #else
-       m_font = settings.GetSystemFont(wxSYS_DEFAULT_GUI_FONT);
+    m_font = settings.GetSystemFont(wxSYS_DEFAULT_GUI_FONT);
 #endif
-
     // no style bits
     m_exStyle =
     m_windowStyle = 0;
@@ -183,6 +183,14 @@ bool wxWindowBase::CreateBase(wxWindowBase *parent,
     SetValidator(validator);
 #endif // wxUSE_VALIDATORS
 
+    // if the parent window has wxWS_EX_VALIDATE_RECURSIVELY set, we want to
+    // have it too - like this it's possible to set it only in the top level
+    // dialog/frame and all children will inherit it by defult
+    if ( parent && (parent->GetExtraStyle() & wxWS_EX_VALIDATE_RECURSIVELY) )
+    {
+        SetExtraStyle(wxWS_EX_VALIDATE_RECURSIVELY);
+    }
+
     return TRUE;
 }
 
@@ -345,10 +353,11 @@ void wxWindowBase::Centre(int direction)
 
     // controls are always centered on their parent because it doesn't make
     // sense to centre them on the screen
-    if ( !(direction & wxCENTRE_ON_SCREEN) || wxDynamicCast(this, wxControl) )
+    if ( !(direction & wxCENTRE_ON_SCREEN) || !IsTopLevel() )
     {
-        // theo nly chance to get this is to have a wxControl without parent
-        wxCHECK_RET( parent, wxT("a control must have a parent") );
+        // the only chance to get this is to have a not top level window
+        // without parent which shouldn't happen
+        wxCHECK_RET( parent, wxT("this window must have a parent") );
 
         // adjust to the parents client area origin
         wxPoint posParent = parent->ClientToScreen(wxPoint(0, 0));
@@ -394,6 +403,14 @@ wxSize wxWindowBase::DoGetBestSize() const
 
             int wx, wy, ww, wh;
             win->GetPosition(&wx, &wy);
+
+            // if the window hadn't been positioned yet, assume that it is in
+            // the origin
+            if ( wx == -1 )
+                wx = 0;
+            if ( wy == -1 )
+                wy = 0;
+
             win->GetSize(&ww, &wh);
             if ( wx + ww > maxX )
                 maxX = wx + ww;