]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/theme.cpp
Avoid clash with control container event handlers
[wxWidgets.git] / src / univ / theme.cpp
index 2eb31fb1d4af442b68a6e801eec3ef04408a05af..985bc527acbd1dc7c1548e0fc320e221f933a364 100644 (file)
@@ -93,16 +93,12 @@ wxThemeInfo::wxThemeInfo(Constructor c,
     {
         nameDefTheme = p;
     }
+#ifdef wxUNIV_DEFAULT_THEME
     else // use native theme by default
     {
-        #if defined(__WXGTK__)
-            nameDefTheme = _T("gtk");
-        #elif defined(__WXX11__)
-            nameDefTheme = _T("win32");
-        #else
-            nameDefTheme = _T("win32");
-        #endif
+        nameDefTheme = wxSTRINGIZE_T(wxUNIV_DEFAULT_THEME);
     }
+#endif // wxUNIV_DEFAULT_THEME
 
     wxTheme *theme = Create(nameDefTheme);
 
@@ -151,3 +147,58 @@ wxTheme::~wxTheme()
 {
 }
 
+
+// ----------------------------------------------------------------------------
+// wxDelegateTheme
+// ----------------------------------------------------------------------------
+
+wxDelegateTheme::wxDelegateTheme(const wxChar *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();
+}