From a6712ab9926f0d08ba43a28134d25ceb0e5c3a7b Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 7 Sep 2009 23:00:29 +0000 Subject: [PATCH] Always use 32bpp image lists. Using 32bpp image lists (ILC_COLOR32) is required as we need to be able to put 32bpp bitmaps in them and results in better (albeit still broken, see #9050) display when the display depth is < 32. This change was tested under Windows 2000, 2003 and Vista in 8 (Win2k-only), 16 and 32bpp display depth modes. Closes #11031. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61853 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/msw/imaglist.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/msw/imaglist.cpp b/src/msw/imaglist.cpp index b499da63b5..4820d044b6 100644 --- a/src/msw/imaglist.cpp +++ b/src/msw/imaglist.cpp @@ -76,17 +76,15 @@ bool wxImageList::Create(int width, int height, bool mask, int initial) { UINT flags = 0; - // set appropriate color depth + // as we want to be able to use 32bpp bitmaps in the image lists, we always + // use ILC_COLOR32, even if the display resolution is less -- the system + // will make the best effort to show the bitmap if we do this resulting in + // quite acceptable display while using a lower depth ILC_COLOR constant + // (e.g. ILC_COLOR16) shows completely broken bitmaps #ifdef __WXWINCE__ flags |= ILC_COLOR; #else - int dd = wxDisplayDepth(); - - if (dd <= 4) flags |= ILC_COLOR; // 16 color - else if (dd <= 8) flags |= ILC_COLOR8; // 256 color - else if (dd <= 16) flags |= ILC_COLOR16; // 64k hi-color - else if (dd <= 24) flags |= ILC_COLOR24; // 16m truecolor - else if (dd <= 32) flags |= ILC_COLOR32; // 16m truecolor + flags |= ILC_COLOR32; #endif if ( mask ) -- 2.45.2