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:
@@ -17,7 +17,8 @@
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#if wxUSE_OWNER_DRAWN
|
||||
#include "wx/ownerdrw.h" // base class
|
||||
#include "wx/ownerdrw.h"
|
||||
#include "wx/bitmap.h"
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -41,7 +42,6 @@ public:
|
||||
|
||||
// override base class virtuals
|
||||
virtual void SetItemLabel(const wxString& strName);
|
||||
virtual void SetCheckable(bool checkable);
|
||||
|
||||
virtual void Enable(bool bDoEnable = true);
|
||||
virtual void Check(bool bDoCheck = true);
|
||||
@@ -76,6 +76,48 @@ public:
|
||||
);
|
||||
#endif
|
||||
|
||||
#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:
|
||||
// common part of all ctors
|
||||
void Init();
|
||||
@@ -93,6 +135,18 @@ private:
|
||||
// does this item start a radio group?
|
||||
bool m_isRadioGroupStart;
|
||||
|
||||
#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;
|
||||
|
||||
// static variables for cache some system settings
|
||||
static wxFont ms_systemMenuFont;
|
||||
static size_t ms_systemMenuHeight;
|
||||
static bool ms_alwaysShowCues;
|
||||
#endif // wxUSE_OWNER_DRAWN
|
||||
|
||||
DECLARE_DYNAMIC_CLASS_NO_COPY(wxMenuItem)
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user