]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/theme.cpp
fixing focus, fixes #11911
[wxWidgets.git] / src / univ / theme.cpp
index 4f89ceb076b311cd9d7b83ae465c0510d2446449..28119dd6a90c2194c1e31a804190350b5123ff03 100644 (file)
 // implementation
 // ============================================================================
 
-wxThemeInfo *wxTheme::ms_allThemes = (wxThemeInfo *)NULL;
-wxTheme *wxTheme::ms_theme = (wxTheme *)NULL;
+wxThemeInfo *wxTheme::ms_allThemes = NULL;
+wxTheme *wxTheme::ms_theme = NULL;
 
 // ----------------------------------------------------------------------------
 // "dynamic" theme creation
 // ----------------------------------------------------------------------------
 
 wxThemeInfo::wxThemeInfo(Constructor c,
-                         const wxChar *n,
-                         const wxChar *d)
+                         const wxString& n,
+                         const wxString& d)
            : name(n), desc(d), ctor(c)
 {
     // insert us (in the head of) the linked list
@@ -70,7 +70,7 @@ wxThemeInfo::wxThemeInfo(Constructor c,
         info = info->next;
     }
 
-    return (wxTheme *)NULL;
+    return NULL;
 }
 
 // ----------------------------------------------------------------------------
@@ -88,7 +88,7 @@ wxThemeInfo::wxThemeInfo(Constructor c,
     wxString nameDefTheme;
 
     // use the environment variable first
-    const wxChar *p = wxGetenv(_T("WXTHEME"));
+    const wxChar *p = wxGetenv(wxT("WXTHEME"));
     if ( p )
     {
         nameDefTheme = p;
@@ -147,3 +147,58 @@ wxTheme::~wxTheme()
 {
 }
 
+
+// ----------------------------------------------------------------------------
+// wxDelegateTheme
+// ----------------------------------------------------------------------------
+
+wxDelegateTheme::wxDelegateTheme(const wxString& theme)
+{
+    m_themeName = theme;
+    m_theme = NULL;
+}
+
+wxDelegateTheme::~wxDelegateTheme()
+{
+    delete m_theme;
+}
+
+bool wxDelegateTheme::GetOrCreateTheme()
+{
+    if ( !m_theme )
+        m_theme = wxTheme::Create(m_themeName);
+    return m_theme != NULL;
+}
+
+wxRenderer *wxDelegateTheme::GetRenderer()
+{
+    if ( !GetOrCreateTheme() )
+        return NULL;
+
+    return m_theme->GetRenderer();
+}
+
+wxArtProvider *wxDelegateTheme::GetArtProvider()
+{
+    if ( !GetOrCreateTheme() )
+        return NULL;
+
+    return m_theme->GetArtProvider();
+}
+
+wxInputHandler *wxDelegateTheme::GetInputHandler(const wxString& control,
+                                                 wxInputConsumer *consumer)
+{
+    if ( !GetOrCreateTheme() )
+        return NULL;
+
+    return m_theme->GetInputHandler(control, consumer);
+}
+
+wxColourScheme *wxDelegateTheme::GetColourScheme()
+{
+    if ( !GetOrCreateTheme() )
+        return NULL;
+
+    return m_theme->GetColourScheme();
+}