Use explicit menu item background if it's given under MSW.

An explicit item background colour specified in user code should override the
default theme background.

Closes #12652.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66015 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2010-11-04 10:57:19 +00:00
parent b146648622
commit e801524514
2 changed files with 7 additions and 1 deletions

View File

@ -465,6 +465,8 @@ MyFrame::MyFrame()
#if USE_LOG_WINDOW
wxMenuItem *item = new wxMenuItem(fileMenu, Menu_File_ClearLog,
wxT("Clear &log\tCtrl-L"));
item->SetBackgroundColour(*wxBLACK);
item->SetTextColour(*wxRED);
#if wxUSE_OWNER_DRAWN || defined(__WXGTK__)
item->SetBitmap(copy_xpm);
#endif

View File

@ -959,7 +959,11 @@ bool wxMenuItem::OnDrawItem(wxDC& dc, const wxRect& rc,
rcText.top--;
#if wxUSE_UXTHEME
wxUxThemeEngine* theme = MenuDrawData::GetUxThemeEngine();
// If a custom background colour is explicitly specified, we should use
// it instead of the default theme background.
wxUxThemeEngine* const theme = GetBackgroundColour().IsOk()
? NULL
: MenuDrawData::GetUxThemeEngine();
if ( theme )
{
POPUPITEMSTATES state;