Refactor owner-drawing code.
Only keep common code in the base class and extract all menu/listbox-specific stuff into derived classes. This makes the code cleaner and more maintainable but introduces some problems in wxCheckListBox appearance which will be fixed by the next patch. Closes #10635. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63220 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -23,7 +23,8 @@
|
||||
// headers - only because ownerdrw.h is not always included and I don't want
|
||||
// to write #ifdef's everywhere...
|
||||
#if wxUSE_OWNER_DRAWN
|
||||
#include "wx/ownerdrw.h"
|
||||
#include "wx/ownerdrw.h"
|
||||
#include "wx/bitmap.h"
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -66,7 +67,6 @@ public:
|
||||
// Override base class virtuals
|
||||
//
|
||||
virtual void SetItemLabel(const wxString& rStrName);
|
||||
virtual void SetCheckable(bool bCheckable);
|
||||
|
||||
virtual void Enable(bool bDoEnable = true);
|
||||
virtual void Check(bool bDoCheck = true);
|
||||
@@ -97,6 +97,48 @@ public:
|
||||
//
|
||||
MENUITEM m_vMenuData;
|
||||
|
||||
#if wxUSE_OWNER_DRAWN
|
||||
|
||||
void SetBitmaps(const wxBitmap& bmpChecked,
|
||||
const wxBitmap& bmpUnchecked = wxNullBitmap)
|
||||
{
|
||||
m_bmpChecked = bmpChecked;
|
||||
m_bmpUnchecked = bmpUnchecked;
|
||||
SetOwnerDrawn(true);
|
||||
}
|
||||
|
||||
void SetBitmap(const wxBitmap& bmp, bool bChecked = true)
|
||||
{
|
||||
if ( bChecked )
|
||||
m_bmpChecked = bmp;
|
||||
else
|
||||
m_bmpUnchecked = bmp;
|
||||
SetOwnerDrawn(true);
|
||||
}
|
||||
|
||||
void SetDisabledBitmap(const wxBitmap& bmpDisabled)
|
||||
{
|
||||
m_bmpDisabled = bmpDisabled;
|
||||
SetOwnerDrawn(true);
|
||||
}
|
||||
|
||||
const wxBitmap& GetBitmap(bool bChecked = true) const
|
||||
{ return (bChecked ? m_bmpChecked : m_bmpUnchecked); }
|
||||
|
||||
const wxBitmap& GetDisabledBitmap() const
|
||||
{ return m_bmpDisabled; }
|
||||
|
||||
|
||||
// override wxOwnerDrawn base class virtuals
|
||||
virtual wxString GetName() const;
|
||||
virtual bool OnMeasureItem(size_t *pwidth, size_t *pheight);
|
||||
virtual bool OnDrawItem(wxDC& dc, const wxRect& rc, wxODAction act, wxODStatus stat);
|
||||
|
||||
protected:
|
||||
virtual void GetFontToUse(wxFont& font) const;
|
||||
|
||||
#endif // wxUSE_OWNER_DRAWN
|
||||
|
||||
private:
|
||||
void Init();
|
||||
|
||||
@@ -117,6 +159,13 @@ private:
|
||||
//
|
||||
bool m_bIsRadioGroupStart;
|
||||
|
||||
#if wxUSE_OWNER_DRAWN
|
||||
// item bitmaps
|
||||
wxBitmap m_bmpChecked, // bitmap to put near the item
|
||||
m_bmpUnchecked, // (checked is used also for 'uncheckable' items)
|
||||
m_bmpDisabled;
|
||||
#endif // wxUSE_OWNER_DRAWN
|
||||
|
||||
DECLARE_DYNAMIC_CLASS(wxMenuItem)
|
||||
}; // end of CLASS wxMenuItem
|
||||
|
||||
|
Reference in New Issue
Block a user