X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3b59cdbfaf7df79499424c92ff6177736429ff8a..5d35dca95fed224817455e65e70f9f52ca3e293c:/src/msw/menuitem.cpp diff --git a/src/msw/menuitem.cpp b/src/msw/menuitem.cpp index 1c0fa7137a..cc38055c1f 100644 --- a/src/msw/menuitem.cpp +++ b/src/msw/menuitem.cpp @@ -28,6 +28,8 @@ #pragma hdrstop #endif +#if wxUSE_MENUS + #ifndef WX_PRECOMP #include "wx/font.h" #include "wx/bitmap.h" @@ -70,11 +72,7 @@ // dynamic classes implementation // ---------------------------------------------------------------------------- - #if wxUSE_OWNER_DRAWN - IMPLEMENT_DYNAMIC_CLASS2(wxMenuItem, wxMenuItemBase, wxOwnerDrawn) - #else //!USE_OWNER_DRAWN - IMPLEMENT_DYNAMIC_CLASS(wxMenuItem, wxMenuItemBase) - #endif //USE_OWNER_DRAWN +IMPLEMENT_DYNAMIC_CLASS(wxMenuItem, wxObject) // ---------------------------------------------------------------------------- // wxMenuItem @@ -87,35 +85,30 @@ wxMenuItem::wxMenuItem(wxMenu *pParentMenu, int id, const wxString& text, const wxString& strHelp, - bool bCheckable, + wxItemKind kind, wxMenu *pSubMenu) + : wxMenuItemBase(pParentMenu, id, text, strHelp, kind, pSubMenu) #if wxUSE_OWNER_DRAWN - : wxOwnerDrawn(text, bCheckable) + , wxOwnerDrawn(GetLabelFromText(text), kind == wxItem_Check) #endif // owner drawn { wxASSERT_MSG( pParentMenu != NULL, wxT("a menu item should have a parent") ); #if wxUSE_OWNER_DRAWN // set default menu colors - #define SYS_COLOR(c) (wxSystemSettings::GetSystemColour(wxSYS_COLOUR_##c)) + #define SYS_COLOR(c) (wxSystemSettings::GetColour(wxSYS_COLOUR_##c)) SetTextColour(SYS_COLOR(MENUTEXT)); SetBackgroundColour(SYS_COLOR(MENU)); + #undef SYS_COLOR + // we don't want normal items be owner-drawn ResetOwnerDrawn(); - #undef SYS_COLOR + // tell the owner drawing code to to show the accel string as well + SetAccelString(text.AfterFirst(_T('\t'))); #endif // wxUSE_OWNER_DRAWN - - m_parentMenu = pParentMenu; - m_subMenu = pSubMenu; - m_isEnabled = TRUE; - m_isChecked = FALSE; - m_id = id; - m_text = text; - m_isCheckable = bCheckable; - m_help = strHelp; } wxMenuItem::~wxMenuItem() @@ -144,21 +137,9 @@ bool wxMenuItem::IsChecked() const /* static */ wxString wxMenuItemBase::GetLabelFromText(const wxString& text) { - return wxStripMenuCodes(m_text); -} - -// accelerators -// ------------ - -#if wxUSE_ACCEL - -wxAcceleratorEntry *wxMenuItem::GetAccel() const -{ - return wxGetAccelFromString(GetText()); + return wxStripMenuCodes(text); } -#endif // wxUSE_ACCEL - // change item state // ----------------- @@ -173,7 +154,7 @@ void wxMenuItem::Enable(bool enable) (enable ? MF_ENABLED : MF_GRAYED)); if ( rc == -1 ) { - wxLogLastError("EnableMenuItem"); + wxLogLastError(wxT("EnableMenuItem")); } wxMenuItemBase::Enable(enable); @@ -181,7 +162,7 @@ void wxMenuItem::Enable(bool enable) void wxMenuItem::Check(bool check) { - wxCHECK_RET( m_isCheckable, wxT("only checkable items may be checked") ); + wxCHECK_RET( IsCheckable(), wxT("only checkable items may be checked") ); if ( m_isChecked == check ) return; @@ -192,7 +173,7 @@ void wxMenuItem::Check(bool check) (check ? MF_CHECKED : MF_UNCHECKED)); if ( rc == -1 ) { - wxLogLastError("CheckMenuItem"); + wxLogLastError(wxT("CheckMenuItem")); } wxMenuItemBase::Check(check); @@ -218,7 +199,7 @@ void wxMenuItem::SetText(const wxString& text) UINT flagsOld = ::GetMenuState(hMenu, id, MF_BYCOMMAND); if ( flagsOld == 0xFFFFFFFF ) { - wxLogLastError("GetMenuState"); + wxLogLastError(wxT("GetMenuState")); } else { @@ -267,8 +248,10 @@ wxMenuItem *wxMenuItemBase::New(wxMenu *parentMenu, int id, const wxString& name, const wxString& help, - bool isCheckable, + wxItemKind kind, wxMenu *subMenu) { - return new wxMenuItem(parentMenu, id, name, help, isCheckable, subMenu); + return new wxMenuItem(parentMenu, id, name, help, kind, subMenu); } + +#endif // wxUSE_MENUS