Preserve original menu label for later retrieval

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48029 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
2007-08-11 22:09:20 +00:00
parent f06a1f33f1
commit 94f6d685cb

View File

@@ -67,6 +67,8 @@ public:
void SetLabel(const wxString& text) void SetLabel(const wxString& text)
{ {
m_originalLabel = text;
// remember the accel char (may be -1 if none) // remember the accel char (may be -1 if none)
m_indexAccel = wxControl::FindAccelIndex(text, &m_label); m_indexAccel = wxControl::FindAccelIndex(text, &m_label);
@@ -79,6 +81,7 @@ public:
// accessors // accessors
const wxString& GetLabel() const { return m_label; } const wxString& GetLabel() const { return m_label; }
const wxString& GetOriginalLabel() const { return m_originalLabel; }
bool IsEnabled() const { return m_isEnabled; } bool IsEnabled() const { return m_isEnabled; }
wxCoord GetWidth(wxMenuBar *menubar) const wxCoord GetWidth(wxMenuBar *menubar) const
{ {
@@ -105,6 +108,7 @@ private:
} }
wxString m_label; wxString m_label;
wxString m_originalLabel;
wxCoord m_width; wxCoord m_width;
int m_indexAccel; int m_indexAccel;
bool m_isEnabled; bool m_isEnabled;
@@ -615,7 +619,7 @@ void wxPopupMenuWindow::DoDraw(wxControlRenderer *renderer)
dc, dc,
y, y,
gi, gi,
item->GetLabel(), item->GetItemLabelText(),
item->GetAccelString(), item->GetAccelString(),
bmp, bmp,
flags, flags,
@@ -988,7 +992,7 @@ bool wxPopupMenuWindow::ProcessKeyDown(int key)
int idxAccel = item->GetAccelIndex(); int idxAccel = item->GetAccelIndex();
if ( idxAccel != -1 && if ( idxAccel != -1 &&
(wxChar)wxTolower(item->GetLabel()[(size_t)idxAccel]) (wxChar)wxTolower(item->GetItemLabelText()[(size_t)idxAccel])
== chAccel ) == chAccel )
{ {
// ok, found an item with this accel // ok, found an item with this accel
@@ -1824,7 +1828,7 @@ void wxMenuBar::SetMenuLabel(size_t pos, const wxString& label)
{ {
wxCHECK_RET( pos < GetCount(), _T("invalid index in SetMenuLabel") ); wxCHECK_RET( pos < GetCount(), _T("invalid index in SetMenuLabel") );
if ( label != m_menuInfos[pos].GetLabel() ) if ( label != m_menuInfos[pos].GetOriginalLabel() )
{ {
m_menuInfos[pos].SetLabel(label); m_menuInfos[pos].SetLabel(label);
@@ -1837,7 +1841,7 @@ wxString wxMenuBar::GetMenuLabel(size_t pos) const
{ {
wxCHECK_MSG( pos < GetCount(), wxEmptyString, _T("invalid index in GetMenuLabel") ); wxCHECK_MSG( pos < GetCount(), wxEmptyString, _T("invalid index in GetMenuLabel") );
return m_menuInfos[pos].GetLabel(); return m_menuInfos[pos].GetOriginalLabel();
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------