projects
/
wxWidgets.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Partially applied patch [ 763900 ] fix for vertical toolbar
[wxWidgets.git]
/
src
/
common
/
artprov.cpp
diff --git
a/src/common/artprov.cpp
b/src/common/artprov.cpp
index 1c18b538ca93d0e1beac7fc89548bd302c612c65..194219d32d980d4372d229f572d7329bf01c7b56 100644
(file)
--- a/
src/common/artprov.cpp
+++ b/
src/common/artprov.cpp
@@
-32,6
+32,7
@@
#include "wx/artprov.h"
#include "wx/hashmap.h"
#include "wx/module.h"
#include "wx/artprov.h"
#include "wx/hashmap.h"
#include "wx/module.h"
+#include "wx/image.h"
// For the purposes of forcing this module to link
extern char g_ArtProviderModule;
// For the purposes of forcing this module to link
extern char g_ArtProviderModule;
@@
-48,7
+49,7
@@
WX_DEFINE_LIST(wxArtProvidersList);
// Cache class - stores already requested bitmaps
// ----------------------------------------------------------------------------
// Cache class - stores already requested bitmaps
// ----------------------------------------------------------------------------
-WX_DECLARE_STRING_HASH_MAP(wxBitmap, wxArtProviderBitmapsHash);
+WX_DECLARE_
EXPORTED_
STRING_HASH_MAP(wxBitmap, wxArtProviderBitmapsHash);
class WXDLLEXPORT wxArtProviderCache
{
class WXDLLEXPORT wxArtProviderCache
{
@@
-58,7
+59,7
@@
public:
{ m_bitmapsHash[full_id] = bmp; }
void Clear();
{ m_bitmapsHash[full_id] = bmp; }
void Clear();
-
+
static wxString ConstructHashID(const wxArtID& id,
const wxArtClient& client,
const wxSize& size);
static wxString ConstructHashID(const wxArtID& id,
const wxArtClient& client,
const wxSize& size);
@@
-118,6
+119,7
@@
wxArtProviderCache *wxArtProvider::sm_cache = NULL;
}
sm_providers->Insert(provider);
}
sm_providers->Insert(provider);
+ sm_cache->Clear();
}
/*static*/ bool wxArtProvider::PopProvider()
}
/*static*/ bool wxArtProvider::PopProvider()
@@
-139,7
+141,7
@@
wxArtProviderCache *wxArtProvider::sm_cache = NULL;
sm_cache->Clear();
return TRUE;
}
sm_cache->Clear();
return TRUE;
}
-
+
return FALSE;
}
return FALSE;
}
@@
-168,8
+170,18
@@
wxArtProviderCache *wxArtProvider::sm_cache = NULL;
{
bmp = node->GetData()->CreateBitmap(id, client, size);
if ( bmp.Ok() )
{
bmp = node->GetData()->CreateBitmap(id, client, size);
if ( bmp.Ok() )
+ {
+ if ( size != wxDefaultSize &&
+ (bmp.GetWidth() != size.x || bmp.GetHeight() != size.y) )
+ {
+ wxImage img = bmp.ConvertToImage();
+ img.Rescale(size.x, size.y);
+ bmp = wxBitmap(img);
+ }
break;
break;
+ }
}
}
+
sm_cache->PutBitmap(hashId, bmp);
}
sm_cache->PutBitmap(hashId, bmp);
}
@@
-183,25
+195,27
@@
wxArtProviderCache *wxArtProvider::sm_cache = NULL;
wxCHECK_MSG( sm_providers, wxNullIcon, _T("no wxArtProvider exists") );
wxBitmap bmp = GetBitmap(id, client, size);
wxCHECK_MSG( sm_providers, wxNullIcon, _T("no wxArtProvider exists") );
wxBitmap bmp = GetBitmap(id, client, size);
- if ( bmp.Ok() )
- {
- wxIcon icon;
- icon.CopyFromBitmap(bmp);
- return icon;
- }
- else
- {
+ if ( !bmp.Ok() )
return wxNullIcon;
return wxNullIcon;
- }
-}
+ wxIcon icon;
+ icon.CopyFromBitmap(bmp);
+ return icon;
+}
class wxArtProviderModule: public wxModule
{
public:
class wxArtProviderModule: public wxModule
{
public:
- bool OnInit() { return TRUE; }
- void OnExit() { wxArtProvider::CleanUpProviders(); }
+ bool OnInit()
+ {
+ wxArtProvider::InitStdProvider();
+ return TRUE;
+ }
+ void OnExit()
+ {
+ wxArtProvider::CleanUpProviders();
+ }
DECLARE_DYNAMIC_CLASS(wxArtProviderModule)
};
DECLARE_DYNAMIC_CLASS(wxArtProviderModule)
};