]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/themes/win32.cpp
compilation fix
[wxWidgets.git] / src / univ / themes / win32.cpp
index 540676b5ea5c4ebf046988b74f803c3bb67a9bdb..ead2d25dddda1c27e54b56202a182171bd6a538a 100644 (file)
@@ -600,7 +600,7 @@ public:
     wxWin32Theme();
     virtual ~wxWin32Theme();
 
-    virtual wxRenderer *GetRenderer() { return m_renderer; }
+    virtual wxRenderer *GetRenderer();
     virtual wxInputHandler *GetInputHandler(const wxString& control);
     virtual wxColourScheme *GetColourScheme();
 
@@ -1111,8 +1111,8 @@ WX_IMPLEMENT_THEME(wxWin32Theme, win32, wxTRANSLATE("Win32 theme"));
 
 wxWin32Theme::wxWin32Theme()
 {
-    m_scheme = new wxWin32ColourScheme;
-    m_renderer = new wxWin32Renderer(m_scheme);
+    m_scheme = NULL;
+    m_renderer = NULL;
     m_handlerDefault = NULL;
 }
 
@@ -1131,6 +1131,16 @@ wxWin32Theme::~wxWin32Theme()
     delete m_scheme;
 }
 
+wxRenderer *wxWin32Theme::GetRenderer()
+{
+    if ( !m_renderer )
+    {
+        m_renderer = new wxWin32Renderer(GetColourScheme());
+    }
+
+    return m_renderer;
+}
+
 wxInputHandler *wxWin32Theme::GetDefaultInputHandler()
 {
     if ( !m_handlerDefault )
@@ -1209,6 +1219,10 @@ wxInputHandler *wxWin32Theme::GetInputHandler(const wxString& control)
 
 wxColourScheme *wxWin32Theme::GetColourScheme()
 {
+    if ( !m_scheme )
+    {
+        m_scheme = new wxWin32ColourScheme;
+    }
     return m_scheme;
 }
 
@@ -1247,7 +1261,7 @@ wxColour wxWin32ColourScheme::GetBackground(wxWindow *win) const
 
         // the colour set by the user should be used for the normal state
         // and for the states for which we don't have any specific colours
-        if ( !col.Ok() || (flags != 0) )
+        if ( !col.Ok() || (flags & wxCONTROL_PRESSED) != 0 )
         {
             if ( wxDynamicCast(win, wxScrollBar) )
                 col = Get(flags & wxCONTROL_PRESSED ? SCROLLBAR_PRESSED
@@ -1366,7 +1380,7 @@ wxWin32Renderer::wxWin32Renderer(const wxColourScheme *scheme)
     m_colHighlight = wxSCHEME_COLOUR(scheme, SHADOW_HIGHLIGHT);
     m_penHighlight = wxPen(m_colHighlight, 0, wxSOLID);
 
-    m_titlebarFont = wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT);
+    m_titlebarFont = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
     m_titlebarFont.SetWeight(wxFONTWEIGHT_BOLD);
 
     // init the arrow bitmaps
@@ -2181,7 +2195,13 @@ wxBitmap wxWin32Renderer::GetIndicator(IndicatorType indType, int flags)
                                     : IndicatorStatus_Unchecked;
 
     const char **xpm = bmpIndicators[indType][indState][indStatus];
-    return xpm ? wxBitmap(xpm) : wxNullBitmap;
+    if (xpm)
+    {
+        wxBitmap bmp(xpm);
+       return bmp;
+    }
+    else
+       return wxNullBitmap;
 }
 
 void wxWin32Renderer::DrawCheckOrRadioButton(wxDC& dc,
@@ -2240,10 +2260,19 @@ void wxWin32Renderer::DrawRadioButton(wxDC& dc,
                                       wxAlignment align,
                                       int indexAccel)
 {
-    DrawCheckOrRadioButton(dc, label,
-                           bitmap.Ok() ? bitmap : GetRadioBitmap(flags),
+    if (bitmap.Ok())
+        DrawCheckOrRadioButton(dc, label,
+                              bitmap,
                            rect, flags, align, indexAccel,
-                           FOCUS_RECT_OFFSET_Y); // default focus rect offset
+                            FOCUS_RECT_OFFSET_Y); // default focus rect offset
+    else
+    {
+       wxBitmap rbitmap(GetRadioBitmap(flags));
+        DrawCheckOrRadioButton(dc, label,
+                              rbitmap,
+                           rect, flags, align, indexAccel,
+                              FOCUS_RECT_OFFSET_Y); // default focus rect offset
+    }
 }
 
 void wxWin32Renderer::DrawCheckButton(wxDC& dc,
@@ -2254,10 +2283,19 @@ void wxWin32Renderer::DrawCheckButton(wxDC& dc,
                                       wxAlignment align,
                                       int indexAccel)
 {
-    DrawCheckOrRadioButton(dc, label,
-                           bitmap.Ok() ? bitmap : GetCheckBitmap(flags),
-                           rect, flags, align, indexAccel,
-                           0); // no focus rect offset for checkboxes
+    if (bitmap.Ok())
+        DrawCheckOrRadioButton(dc, label,
+                              bitmap,
+                             rect, flags, align, indexAccel,
+                             0); // no focus rect offset for checkboxes
+    else
+    {
+           wxBitmap cbitmap(GetCheckBitmap(flags));
+        DrawCheckOrRadioButton(dc, label,
+                             cbitmap,
+                             rect, flags, align, indexAccel,
+                              0); // no focus rect offset for checkboxes
+    }
 }
 
 // ----------------------------------------------------------------------------
@@ -2835,7 +2873,7 @@ wxMenuGeometryInfo *wxWin32Renderer::GetMenuGeometry(wxWindow *win,
 {
     // prepare the dc: for now we draw all the items with the system font
     wxClientDC dc(win);
-    dc.SetFont(wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT));
+    dc.SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT));
 
     // the height of a normal item
     wxCoord heightText = dc.GetCharHeight();
@@ -4054,8 +4092,8 @@ bool wxWin32StatusBarInputHandler::IsOnGrip(wxWindow *statbar,
     {
         wxSize sizeSbar = statbar->GetSize();
 
-        return (sizeSbar.x - pt.x) < STATUSBAR_GRIP_SIZE &&
-               (sizeSbar.y - pt.y) < STATUSBAR_GRIP_SIZE;
+        return (sizeSbar.x - pt.x) < (wxCoord)STATUSBAR_GRIP_SIZE &&
+               (sizeSbar.y - pt.y) < (wxCoord)STATUSBAR_GRIP_SIZE;
     }
 
     return FALSE;