]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/wincmn.cpp
fixed memory leak in colour parsing code
[wxWidgets.git] / src / common / wincmn.cpp
index 59f3a09ffbf009254038513d8797706520dcbbee..95c51f5899b248dfd7e48b7757cf31c65fd15784 100644 (file)
@@ -127,14 +127,16 @@ void wxWindowBase::InitBase()
 #endif // wxUSE_VALIDATORS
 
     // use the system default colours
-    wxSystemSettings settings;
-
-    m_backgroundColour = settings.GetSystemColour(wxSYS_COLOUR_BTNFACE);
-    // m_foregroundColour = *wxBLACK;  // TODO take this from sys settings too?
+    m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_BTNFACE);
     m_foregroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOWTEXT);
 
-    // GRG, changed Mar/2000
-    m_font = settings.GetSystemFont(wxSYS_DEFAULT_GUI_FONT);
+    // don't set the font here for wxMSW as we don't call WM_SETFONT here and
+    // so the font is *not* really set - but calls to SetFont() later won't do
+    // anything because m_font appears to be already set!
+#ifndef __WXMSW__
+    m_font = wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT);
+#endif // __WXMSW__
+
     // no style bits
     m_exStyle =
     m_windowStyle = 0;
@@ -393,6 +395,30 @@ void wxWindowBase::Centre(int direction)
     xNew += posParent.x;
     yNew += posParent.y;
 
+    // Base size of the visible dimensions of the display
+    // to take into account the taskbar
+    wxRect rect = wxGetClientDisplayRect();
+    wxSize size (rect.width,rect.height);
+
+    if (posParent.x >= 0)  // if parent is on the main display
+    {
+        if (xNew < 0)
+            xNew = 0;
+        else if (xNew+width > size.x)
+            xNew = size.x-width-1;
+    }
+    if (posParent.y >= 0)  // if parent is on the main display
+    {
+        if (yNew+height > size.y)
+            yNew = size.y-height-1;
+
+        // Make certain that the title bar is initially visible
+        // always, even if this would push the bottom of the
+        // dialog of the visible area of the display
+        if (yNew < 0)
+            yNew = 0;
+    }
+
     // move the window to this position (keeping the old size but using
     // SetSize() and not Move() to allow xNew and/or yNew to be -1)
     SetSize(xNew, yNew, width, height, wxSIZE_ALLOW_MINUS_ONE);
@@ -644,7 +670,7 @@ bool wxWindowBase::SetFont(const wxFont& font)
     // don't try to set invalid font, always fall back to the default
     const wxFont& fontOk = font.Ok() ? font : *wxSWISS_FONT;
 
-    if ( (wxFont&)fontOk == m_font )
+    if ( fontOk == m_font )
     {
         // no change
         return FALSE;
@@ -1343,7 +1369,7 @@ void wxWindowBase::UpdateWindowUI()
 
         if ( event.GetSetText() )
         {
-            wxControl *control = wxDynamicCast(this, wxControl);
+            wxControl *control = wxDynamicThisCast(this, wxControl);
             if ( control )
             {
                 wxTextCtrl *text = wxDynamicCast(control, wxTextCtrl);
@@ -1355,7 +1381,7 @@ void wxWindowBase::UpdateWindowUI()
         }
 
 #if wxUSE_CHECKBOX
-        wxCheckBox *checkbox = wxDynamicCast(this, wxCheckBox);
+        wxCheckBox *checkbox = wxDynamicThisCast(this, wxCheckBox);
         if ( checkbox )
         {
             if ( event.GetSetChecked() )
@@ -1364,7 +1390,7 @@ void wxWindowBase::UpdateWindowUI()
 #endif // wxUSE_CHECKBOX
 
 #if wxUSE_RADIOBTN
-        wxRadioButton *radiobtn = wxDynamicCast(this, wxRadioButton);
+        wxRadioButton *radiobtn = wxDynamicThisCast(this, wxRadioButton);
         if ( radiobtn )
         {
             if ( event.GetSetChecked() )