From 5869f93fc86fa34c0dcdf59afbd9a036232e1334 Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Tue, 18 Jun 2002 15:57:39 +0000 Subject: [PATCH] Moved flicker-removal to GTK+ code git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15878 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/cmdproc.cpp | 25 ++++++++----------------- src/gtk/menu.cpp | 8 ++++++++ src/gtk1/menu.cpp | 8 ++++++++ 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/src/common/cmdproc.cpp b/src/common/cmdproc.cpp index 4326cda809..7945642565 100644 --- a/src/common/cmdproc.cpp +++ b/src/common/cmdproc.cpp @@ -220,17 +220,9 @@ void wxCommandProcessor::Initialize() SetMenuStrings(); } -// This reduces flicker in wxGTK+ -static void wxSetMenuLabelOptimally(wxMenu* menu, int id, const wxString& label) +static void wxSetMenuLabel(wxMenu* menu, int id, const wxString& label) { - wxString oldLabel = menu->GetLabel(id); - oldLabel = wxStripMenuCodes(oldLabel.BeforeFirst('\t')); -#ifdef __WXGTK__ - oldLabel.Replace(wxT("_"), wxT("")); // GTK+ only -#endif - wxString label1 = wxStripMenuCodes(label.BeforeFirst('\t')); - if (oldLabel != label1) - menu->SetLabel(id, label); + menu->SetLabel(id, label); } void wxCommandProcessor::SetMenuStrings() @@ -250,8 +242,7 @@ void wxCommandProcessor::SetMenuStrings() else buf = wxString(_("Can't &Undo ")) + commandName + m_undoAccelerator; - //m_commandEditMenu->SetLabel(wxID_UNDO, buf); - wxSetMenuLabelOptimally(m_commandEditMenu, wxID_UNDO, buf); + wxSetMenuLabel(m_commandEditMenu, wxID_UNDO, buf); m_commandEditMenu->Enable(wxID_UNDO, canUndo); @@ -262,23 +253,23 @@ void wxCommandProcessor::SetMenuStrings() wxString redoCommandName(redoCommand->GetName()); if (redoCommandName == wxT("")) redoCommandName = _("Unnamed command"); buf = wxString(_("&Redo ")) + redoCommandName + m_redoAccelerator; - wxSetMenuLabelOptimally(m_commandEditMenu, wxID_REDO, buf); + wxSetMenuLabel(m_commandEditMenu, wxID_REDO, buf); m_commandEditMenu->Enable(wxID_REDO, TRUE); } else { - wxSetMenuLabelOptimally(m_commandEditMenu, wxID_REDO, _("&Redo") + m_redoAccelerator); + wxSetMenuLabel(m_commandEditMenu, wxID_REDO, _("&Redo") + m_redoAccelerator); m_commandEditMenu->Enable(wxID_REDO, FALSE); } } else { - wxSetMenuLabelOptimally(m_commandEditMenu, wxID_UNDO, _("&Undo") + m_undoAccelerator); + wxSetMenuLabel(m_commandEditMenu, wxID_UNDO, _("&Undo") + m_undoAccelerator); m_commandEditMenu->Enable(wxID_UNDO, FALSE); if (m_commands.Number() == 0) { - wxSetMenuLabelOptimally(m_commandEditMenu, wxID_REDO, _("&Redo") + m_redoAccelerator); + wxSetMenuLabel(m_commandEditMenu, wxID_REDO, _("&Redo") + m_redoAccelerator); m_commandEditMenu->Enable(wxID_REDO, FALSE); } else @@ -289,7 +280,7 @@ void wxCommandProcessor::SetMenuStrings() wxString redoCommandName(redoCommand->GetName()); if (redoCommandName == wxT("")) redoCommandName = _("Unnamed command"); buf = wxString(_("&Redo ")) + redoCommandName + m_redoAccelerator; - wxSetMenuLabelOptimally(m_commandEditMenu, wxID_REDO, buf); + wxSetMenuLabel(m_commandEditMenu, wxID_REDO, buf); m_commandEditMenu->Enable(wxID_REDO, TRUE); } } diff --git a/src/gtk/menu.cpp b/src/gtk/menu.cpp index 277353786d..586b2ea034 100644 --- a/src/gtk/menu.cpp +++ b/src/gtk/menu.cpp @@ -775,6 +775,14 @@ wxString wxMenuItemBase::GetLabelFromText(const wxString& text) void wxMenuItem::SetText( const wxString& str ) { + // Some optimization to avoid flicker + wxString oldLabel = m_text; + oldLabel = wxStripMenuCodes(oldLabel.BeforeFirst('\t')); + oldLabel.Replace(wxT("_"), wxT("")); + wxString label1 = wxStripMenuCodes(str.BeforeFirst('\t')); + if (oldLabel == label1) + return; + DoSetText(str); if (m_menuItem) diff --git a/src/gtk1/menu.cpp b/src/gtk1/menu.cpp index 277353786d..586b2ea034 100644 --- a/src/gtk1/menu.cpp +++ b/src/gtk1/menu.cpp @@ -775,6 +775,14 @@ wxString wxMenuItemBase::GetLabelFromText(const wxString& text) void wxMenuItem::SetText( const wxString& str ) { + // Some optimization to avoid flicker + wxString oldLabel = m_text; + oldLabel = wxStripMenuCodes(oldLabel.BeforeFirst('\t')); + oldLabel.Replace(wxT("_"), wxT("")); + wxString label1 = wxStripMenuCodes(str.BeforeFirst('\t')); + if (oldLabel == label1) + return; + DoSetText(str); if (m_menuItem) -- 2.45.2