]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/themes/metal.cpp
readding trace constant
[wxWidgets.git] / src / univ / themes / metal.cpp
index af2b79fd60bc683595c71bda1759dc565d7533d2..a0849274c4e59be29d9d297de9ad6b40ef710dc2 100644 (file)
@@ -60,6 +60,7 @@
 #include "wx/univ/inphand.h"
 #include "wx/univ/colschem.h"
 
+// ----------------------------------------------------------------------------
 // wxMetalRenderer: draw the GUI elements in Metal style
 // ----------------------------------------------------------------------------
 
@@ -142,86 +143,35 @@ private:
 // wxMetalTheme
 // ----------------------------------------------------------------------------
 
-class wxMetalTheme : public wxTheme
+class wxMetalTheme : public wxDelegateTheme
 {
 public:
-    wxMetalTheme();
-    virtual ~wxMetalTheme();
-
-    virtual wxRenderer *GetRenderer();
-    virtual wxArtProvider *GetArtProvider();
-    virtual wxInputHandler *GetInputHandler(const wxString& control,
-                                            wxInputConsumer *consumer);
-    virtual wxColourScheme *GetColourScheme();
+    wxMetalTheme() : wxDelegateTheme(_T("win32")), m_renderer(NULL) {}
+    ~wxMetalTheme() { delete m_renderer; }
 
-private:
-    bool GetOrCreateTheme()
+protected:
+    virtual wxRenderer *GetRenderer()
     {
-        if ( !m_win32Theme )
-            m_win32Theme = wxTheme::Create( wxT("win32") );
-        return m_win32Theme != NULL;
+        if ( !m_renderer )
+        {
+            m_renderer = new wxMetalRenderer(m_theme->GetRenderer(),
+                                             GetColourScheme());
+        }
+
+        return m_renderer;
     }
 
-    wxTheme *m_win32Theme;
-    wxMetalRenderer *m_renderer;
+    wxRenderer *m_renderer;
 
     WX_DECLARE_THEME(Metal)
 };
 
-// ============================================================================
-// implementation
-// ============================================================================
-
 WX_IMPLEMENT_THEME(wxMetalTheme, Metal, wxTRANSLATE("Metal theme"));
 
-// ----------------------------------------------------------------------------
-// wxMetalTheme
-// ----------------------------------------------------------------------------
 
-wxMetalTheme::wxMetalTheme()
-{
-    m_win32Theme = NULL;
-    m_renderer = NULL;
-}
-
-wxMetalTheme::~wxMetalTheme()
-{
-    delete m_win32Theme;
-    delete m_renderer;
-}
-
-wxRenderer *wxMetalTheme::GetRenderer()
-{
-    if ( !GetOrCreateTheme() )
-        return 0;
-    if ( !m_renderer )
-        m_renderer = new wxMetalRenderer(m_win32Theme->GetRenderer(),
-                                         m_win32Theme->GetColourScheme());
-
-    return m_renderer;
-}
-
-wxArtProvider *wxMetalTheme::GetArtProvider()
-{
-    if ( !GetOrCreateTheme() )
-        return 0;
-    return m_win32Theme->GetArtProvider();
-}
-
-wxInputHandler *wxMetalTheme::GetInputHandler(const wxString& control,
-                                              wxInputConsumer *consumer)
-{
-    if ( !GetOrCreateTheme() )
-        return 0;
-    return m_win32Theme->GetInputHandler(control, consumer);
-}
-
-wxColourScheme *wxMetalTheme::GetColourScheme()
-{
-    if ( !GetOrCreateTheme() )
-        return 0;
-    return m_win32Theme->GetColourScheme();
-}
+// ============================================================================
+// implementation
+// ============================================================================
 
 // ----------------------------------------------------------------------------
 // wxMetalRenderer