]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/uxtheme.h
Fixed bug #1022383: 'several ComboBoxes appear selected'
[wxWidgets.git] / include / wx / msw / uxtheme.h
index da91ed7d0e3957522ac96343bc53984c4a0157c2..13c77b2288cb4e3a1e81189b675a312dbbd9810f 100644 (file)
@@ -1,18 +1,18 @@
 ///////////////////////////////////////////////////////////////////////////////
 // Name:        include/wx/msw/uxtheme.h
 // Purpose:     wxUxThemeEngine class: support for XP themes
-// Author:      
+// Author:
 // Modified by:
 // Created:     2003
 // RCS-ID:      $Id$
-// Copyright:   (c) 2003 wxWindows Dev-Team
-// License:     wxWindows license
+// Copyright:   (c) 2003 wxWidgets Dev-Team
+// License:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 #ifndef _WX_UXTHEME_H_
 #define _WX_UXTHEME_H_
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
   #pragma interface "uxtheme.h"
 #endif
 
@@ -58,17 +58,17 @@ typedef struct _WXUOSVERSIONINFOEXA {
 
 typedef void* WXHTHEME;
 typedef long WXUHRESULT;
-typedef WXHTHEME (__stdcall *PFNWXUOPENTHEMEDATA)(WXHWND, const wchar_t *); 
+typedef WXHTHEME (__stdcall *PFNWXUOPENTHEMEDATA)(WXHWND, const wchar_t *);
 typedef WXUHRESULT (__stdcall *PFNWXUCLOSETHEMEDATA)(WXHTHEME);
-typedef WXUHRESULT (__stdcall *PFNWXUDRAWTHEMEBACKGROUND)(WXHTHEME, WXHDC, 
+typedef WXUHRESULT (__stdcall *PFNWXUDRAWTHEMEBACKGROUND)(WXHTHEME, WXHDC,
     int, int, const RECT *, const RECT *);
 #define WXU_DTT_GRAYED 0x1
-typedef WXUHRESULT (__stdcall *PFNWXUDRAWTHEMETEXT)(WXHTHEME, WXHDC, int, 
-    int, const wchar_t *, int, DWORD, 
+typedef WXUHRESULT (__stdcall *PFNWXUDRAWTHEMETEXT)(WXHTHEME, WXHDC, int,
+    int, const wchar_t *, int, DWORD,
     DWORD, const RECT *);
-typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEBACKGROUNDCONTENTRECT)(WXHTHEME, WXHDC, 
+typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEBACKGROUNDCONTENTRECT)(WXHTHEME, WXHDC,
     int, int, const RECT *, RECT *);
-typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEBACKGROUNDEXTENT)(WXHTHEME, WXHDC, int, int, 
+typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEBACKGROUNDEXTENT)(WXHTHEME, WXHDC, int, int,
     const RECT *, RECT *);
 
 enum WXUTHEMESIZE
@@ -108,9 +108,9 @@ typedef struct tagWXUTEXTMETRIC
     unsigned char tmCharSet;
 } WXUTEXTMETRIC;
 
-typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEPARTSIZE)(WXHTHEME, WXHDC, int, int, const RECT *, 
+typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEPARTSIZE)(WXHTHEME, WXHDC, int, int, const RECT *,
     enum WXUTHEMESIZE, WXUSIZE *);
-typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMETEXTEXTENT)(WXHTHEME, WXHDC, int, int, const wchar_t *, 
+typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMETEXTEXTENT)(WXHTHEME, WXHDC, int, int, const wchar_t *,
     int, WXDWORD, const RECT *, RECT *);
 typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMETEXTMETRICS)(WXHTHEME, WXHDC,
     int, int, WXUTEXTMETRIC*);
@@ -188,7 +188,7 @@ typedef struct _WXUINTLIST
     int iValues[WXU_MAX_INTLIST_COUNT];
 } WXUINTLIST, *PWXUINTLIST;
 typedef WXUHRESULT (__stdcall *PFNWXUGETTHEMEINTLIST)(WXHTHEME, int,
-       int, int, WXUINTLIST*);
+    int, int, WXUINTLIST*);
 
 enum WXUPROPERTYORIGIN
 {
@@ -228,7 +228,7 @@ typedef BOOL (__stdcall *PFNWXUISTHEMEDIALOGTEXTUREENABLED)(WXHWND);
 
 typedef WXDWORD (__stdcall *PFNWXUGETTHEMEAPPPROPERTIES)();
 typedef void (__stdcall *PFNWXUSETTHEMEAPPPROPERTIES)(WXDWORD);
-typedef WXUHRESULT (__stdcall *PFNWXUGETCURRENTTHEMENAME)(wchar_t *, int, 
+typedef WXUHRESULT (__stdcall *PFNWXUGETCURRENTTHEMENAME)(wchar_t *, int,
     wchar_t *, int, wchar_t *, int);
 
 #define WXU_SZ_THDOCPROP_DISPLAYNAME                L"DisplayName"
@@ -261,6 +261,10 @@ public:
     // get the theme engine or NULL if themes are not available
     static wxUxThemeEngine *Get();
 
+    // get the theme enging or NULL if themes are not available or not used for
+    // this application
+    static wxUxThemeEngine *GetIfActive();
+
     // all uxtheme.dll functions
     wxUX_THEME_DECLARE(PFNWXUOPENTHEMEDATA, OpenThemeData)
     wxUX_THEME_DECLARE(PFNWXUCLOSETHEMEDATA, CloseThemeData)
@@ -310,10 +314,6 @@ public:
     wxUX_THEME_DECLARE(PFNWXUDRAWTHEMEPARENTBACKGROUND, DrawThemeParentBackground)
     wxUX_THEME_DECLARE(PFNWXUENABLETHEMING, EnableTheming)
 
-    // This calls IsAppThemed but also checks the commctrl.dll version
-    // for a more reliable answer.
-    bool IsAppThemedEx() ;
-
 private:
     // construcor is private as only Get() can create us and is also trivial as
     // everything really happens in Initialize()
@@ -333,7 +333,7 @@ private:
     // uxtheme.dll
     wxDynamicLibrary m_dllUxTheme;
 
-    
+
     // the one and only theme engine, initially NULL
     static wxUxThemeEngine *ms_themeEngine;
 
@@ -344,17 +344,32 @@ private:
     friend class wxUxThemeModule;
 #endif // wxUSE_UXTHEME
 
-    DECLARE_NO_COPY_CLASS(wxUxThemeEngine);
+    DECLARE_NO_COPY_CLASS(wxUxThemeEngine)
 };
 
-#if !wxUSE_UXTHEME
+#if wxUSE_UXTHEME
+
+/* static */ inline wxUxThemeEngine *wxUxThemeEngine::GetIfActive()
+{
+    wxUxThemeEngine *engine = Get();
+    return engine && engine->IsAppThemed() && engine->IsThemeActive()
+                ? engine
+                : NULL;
+}
+
+#else // !wxUSE_UXTHEME
 
 /* static */ inline wxUxThemeEngine *wxUxThemeEngine::Get()
 {
     return NULL;
 }
 
-#endif // !wxUSE_UXTHEME
+/* static */ inline wxUxThemeEngine *wxUxThemeEngine::GetIfActive()
+{
+    return NULL;
+}
+
+#endif // wxUSE_UXTHEME/!wxUSE_UXTHEME
 
 // ----------------------------------------------------------------------------
 // wxUxThemeHandle: encapsulates ::Open/CloseThemeData()
@@ -367,7 +382,7 @@ public:
     {
         wxUxThemeEngine *engine = wxUxThemeEngine::Get();
 
-        m_hTheme = 
+        m_hTheme =
             engine ? (WXHTHEME)engine->OpenThemeData(win->GetHWND(), classes)
                    : NULL;
     }