From dfa536091649144c61c9a59b8a088295d5d7d11e Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Mon, 9 Feb 2004 16:02:28 +0000 Subject: [PATCH] Added no-remap system option so colourful toolbar buttons aren't mangled Toolbar buttons are now centred if the bitmap size is smaller than the specified default size git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25684 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 4 ++++ src/msw/tbar95.cpp | 32 +++++++++++++++++++++++++++----- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index df860b7234..b58f442fc0 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -157,6 +157,10 @@ wxMSW: - background colour of a wxComboBox may now be set - fixed wxListCtrl::GetItemText/BackgroundColour() - Esc can now be used to close menus in the dialogs (Hartmut Honisch) +- Added no-remap system option so colourful toolbar buttons + aren't mangled +- Toolbar buttons are now centred if the bitmap size is smaller + than the specified default size wxGTK: diff --git a/src/msw/tbar95.cpp b/src/msw/tbar95.cpp index 44bd62f13b..172db4547d 100644 --- a/src/msw/tbar95.cpp +++ b/src/msw/tbar95.cpp @@ -42,6 +42,7 @@ #if wxUSE_TOOLBAR && wxUSE_TOOLBAR_NATIVE && (!defined(_WIN32_WCE) || (_WIN32_WCE >= 400 && !wxUSE_POCKETPC_UI)) #include "wx/toolbar.h" +#include "wx/sysopt.h" #include "wx/msw/private.h" @@ -539,6 +540,22 @@ bool wxToolBar::Realize() MemoryHDC memoryDC2; #endif // USE_BITMAP_MASKS/!USE_BITMAP_MASKS + if (wxSystemOptions::GetOptionInt(wxT("no-remap")) == 1) + { +#if USE_BITMAP_MASKS + dcAllButtons.SelectObject(wxNullBitmap); +#endif + + // Even if we're not remapping the bitmap + // content, we still have to remap the background. + hBitmap = (HBITMAP)MapBitmap((WXHBITMAP) hBitmap, + totalBitmapWidth, totalBitmapHeight); + +#if USE_BITMAP_MASKS + dcAllButtons.SelectObject(bitmap); +#endif + } + // the button position wxCoord x = 0; @@ -553,13 +570,15 @@ bool wxToolBar::Realize() const wxBitmap& bmp = tool->GetNormalBitmap(); if ( bmp.Ok() ) { + int xOffset = wxMax(0, (m_defaultWidth - bmp.GetWidth())/2); + int yOffset = wxMax(0, (m_defaultHeight - bmp.GetHeight())/2); #if USE_BITMAP_MASKS // notice the last parameter: do use mask - dcAllButtons.DrawBitmap(bmp, x, 0, TRUE); + dcAllButtons.DrawBitmap(bmp, x+xOffset, yOffset, TRUE); #else // !USE_BITMAP_MASKS SelectInHDC hdcSelector2(memoryDC2, GetHbitmapOf(bmp)); if ( !BitBlt(memoryDC, - x, 0, m_defaultWidth, m_defaultHeight, + x+xOffset, yOffset, m_defaultWidth, m_defaultHeight, memoryDC2, 0, 0, SRCCOPY) ) { @@ -587,9 +606,12 @@ bool wxToolBar::Realize() bitmap.SetHBITMAP(0); #endif // USE_BITMAP_MASKS/!USE_BITMAP_MASKS - // Map to system colours - hBitmap = (HBITMAP)MapBitmap((WXHBITMAP) hBitmap, - totalBitmapWidth, totalBitmapHeight); + if (!wxSystemOptions::HasOption(wxT("no-remap")) || wxSystemOptions::GetOptionInt(wxT("no-remap")) == 0) + { + // Map to system colours + hBitmap = (HBITMAP)MapBitmap((WXHBITMAP) hBitmap, + totalBitmapWidth, totalBitmapHeight); + } bool addBitmap = TRUE;