From: Julian Smart Date: Sun, 8 Feb 2004 12:38:31 +0000 (+0000) Subject: Applied patch [ 892543 ] wxUniversal: Bitmaps in disabled menu items X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/dba6b4f88072126c4c3f2684fad18286e5596645 Applied patch [ 892543 ] wxUniversal: Bitmaps in disabled menu items Christian Sturmlechner git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25618 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/univ/menuitem.h b/include/wx/univ/menuitem.h index 9f8e533067..c0554556a0 100644 --- a/include/wx/univ/menuitem.h +++ b/include/wx/univ/menuitem.h @@ -48,6 +48,11 @@ public: const wxBitmap& GetBitmap(bool checked = TRUE) const { return checked ? m_bmpChecked : m_bmpUnchecked; } + void SetDisabledBitmap( const wxBitmap& bmpDisabled ) + { m_bmpDisabled = bmpDisabled; } + const wxBitmap& GetDisabledBitmap() const + { return m_bmpDisabled; } + // mark item as belonging to the given radio group void SetAsRadioGroupStart(); void SetRadioGroupStart(int start); @@ -92,7 +97,8 @@ protected: // the bitmaps (may be invalid, then they're not used) wxBitmap m_bmpChecked, - m_bmpUnchecked; + m_bmpUnchecked, + m_bmpDisabled; // the positions of the first and last items of the radio group this item // belongs to or -1: start is the radio group start and is valid for all diff --git a/src/univ/menu.cpp b/src/univ/menu.cpp index bce164c644..0ebba81d19 100644 --- a/src/univ/menu.cpp +++ b/src/univ/menu.cpp @@ -585,6 +585,21 @@ void wxPopupMenuWindow::DoDraw(wxControlRenderer *renderer) if ( item == GetCurrentItem() ) flags |= wxCONTROL_SELECTED; + wxBitmap bmp; + + if ( !item->IsEnabled() ) + { + bmp = item->GetDisabledBitmap(); + } + + if ( !bmp.Ok() ) + { + // strangely enough, for unchecked item we use the + // "checked" bitmap because this is the default one - this + // explains this strange boolean expression + bmp = item->GetBitmap(!item->IsCheckable() || item->IsChecked()); + } + rend->DrawMenuItem ( dc, @@ -592,10 +607,7 @@ void wxPopupMenuWindow::DoDraw(wxControlRenderer *renderer) gi, item->GetLabel(), item->GetAccelString(), - // strangely enough, for unchecked item we use the - // "checked" bitmap because this is the default one - this - // explains this strange boolean expression - item->GetBitmap(!item->IsCheckable() || item->IsChecked()), + bmp, flags, item->GetAccelIndex() ); @@ -1487,6 +1499,8 @@ wxMenuItem::wxMenuItem(wxMenu *parentMenu, m_radioGroup.start = -1; m_isRadioGroupStart = FALSE; + m_bmpDisabled = wxNullBitmap; + UpdateAccelInfo(); }