]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/artprov.cpp
use C++ wrappers around DirectFB API for easier use
[wxWidgets.git] / src / common / artprov.cpp
index d7497a45ff31274818684c1bc9e0073770f1c2a2..7661612429045978443a42f530c3ccf6638f6257 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        artprov.cpp
+// Name:        src/common/artprov.cpp
 // Purpose:     wxArtProvider class
 // Author:      Vaclav Slavik
 // Modified by:
     #pragma hdrstop
 #endif
 
+#include "wx/artprov.h"
+
 #ifndef WX_PRECOMP
-    #include "wx/log.h"
     #include "wx/list.h"
-#endif
-
-#include "wx/artprov.h"
-#include "wx/hashmap.h"
-#include "wx/module.h"
-#if wxUSE_IMAGE
-#include "wx/image.h"
+    #include "wx/log.h"
+    #include "wx/hashmap.h"
+    #include "wx/image.h"
+    #include "wx/module.h"
 #endif
 
 // ===========================================================================
@@ -101,7 +99,7 @@ IMPLEMENT_ABSTRACT_CLASS(wxArtProvider, wxObject)
 wxArtProvidersList *wxArtProvider::sm_providers = NULL;
 wxArtProviderCache *wxArtProvider::sm_cache = NULL;
 
-/*static*/ void wxArtProvider::PushProvider(wxArtProvider *provider)
+/*static*/ void wxArtProvider::CommonAddingProvider()
 {
     if ( !sm_providers )
     {
@@ -109,10 +107,21 @@ wxArtProviderCache *wxArtProvider::sm_cache = NULL;
         sm_cache = new wxArtProviderCache;
     }
 
-    sm_providers->Insert(provider);
     sm_cache->Clear();
 }
 
+/*static*/ void wxArtProvider::PushProvider(wxArtProvider *provider)
+{
+    CommonAddingProvider();
+    sm_providers->Insert(provider);
+}
+
+/*static*/ void wxArtProvider::InsertProvider(wxArtProvider *provider)
+{
+    CommonAddingProvider();
+    sm_providers->Append(provider);
+}
+
 /*static*/ bool wxArtProvider::PopProvider()
 {
     wxCHECK_MSG( sm_providers, false, _T("no wxArtProvider exists") );
@@ -165,7 +174,7 @@ wxArtProviderCache *wxArtProvider::sm_cache = NULL;
             bmp = node->GetData()->CreateBitmap(id, client, size);
             if ( bmp.Ok() )
             {
-#if wxUSE_IMAGE
+#if wxUSE_IMAGE && (!defined(__WXMSW__) || wxUSE_WXDIB)
                 if ( size != wxDefaultSize &&
                      (bmp.GetWidth() != size.x || bmp.GetHeight() != size.y) )
                 {
@@ -240,7 +249,7 @@ wxArtProviderCache *wxArtProvider::sm_cache = NULL;
     else if (client == wxART_BUTTON)
         return wxSize(16, 15);
     else // wxART_OTHER or perhaps a user's client, no specified size
-        return wxDefaultSize;      
+        return wxDefaultSize;
 #endif // GTK+ 2/else
 }