From 369f14fa8eaf65df9dfd87d71ea520d7889c104f Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=BCrgen=20Spitzm=C3=BCller?= Date: Fri, 8 Feb 2008 16:43:02 +0000 Subject: [PATCH] * GuiSymbols.{cpp,h}: - cache symbols list (speedup). git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22866 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/frontends/qt4/GuiSymbols.cpp | 15 ++++++++------- src/frontends/qt4/GuiSymbols.h | 5 +++++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/frontends/qt4/GuiSymbols.cpp b/src/frontends/qt4/GuiSymbols.cpp index 82c88b101f..87ebbaea4b 100644 --- a/src/frontends/qt4/GuiSymbols.cpp +++ b/src/frontends/qt4/GuiSymbols.cpp @@ -287,9 +287,10 @@ void GuiSymbols::updateSymbolList(bool update_combo) } bool const show_all = categoryFilterCB->isChecked(); - typedef set SymbolsList; - Encoding enc = *(encodings.getFromLyXName(encoding_)); - SymbolsList symbols = enc.getSymbolsList(); + if (symbols_.empty() || update_combo) { + Encoding enc = *(encodings.getFromLyXName(encoding_)); + symbols_ = enc.getSymbolsList(); + } if (!show_all) { for (int i = 0 ; i < no_blocks; ++i) @@ -300,9 +301,11 @@ void GuiSymbols::updateSymbolList(bool update_combo) } } - SymbolsList::const_iterator const end = symbols.end(); - for (SymbolsList::const_iterator it = symbols.begin(); it != end; ++it) { + SymbolsList::const_iterator const end = symbols_.end(); + for (SymbolsList::const_iterator it = symbols_.begin(); it != end; ++it) { char_type c = *it; + if (!update_combo && !show_all && (c <= range_start || c >= range_end)) + continue; #if QT_VERSION >= 0x040300 QChar::Category const cat = QChar::category(uint(c)); #else @@ -312,8 +315,6 @@ void GuiSymbols::updateSymbolList(bool update_combo) // we do not want control or space characters if (cat == QChar::Other_Control || cat == QChar::Separator_Space) continue; - if (!update_combo && !show_all && (c <= range_start || c >= range_end)) - continue; QListWidgetItem * lwi = new QListWidgetItem(toqstr(c)); if (show_all || c >= range_start && c <= range_end) { lwi->setTextAlignment(Qt::AlignCenter); diff --git a/src/frontends/qt4/GuiSymbols.h b/src/frontends/qt4/GuiSymbols.h index 55c99c74a2..ba35527420 100644 --- a/src/frontends/qt4/GuiSymbols.h +++ b/src/frontends/qt4/GuiSymbols.h @@ -16,6 +16,7 @@ #include "ui_SymbolsUi.h" #include +#include class QListWidgetItem; @@ -63,6 +64,10 @@ private: typedef std::map UsedBlocks; /// UsedBlocks used_blocks; + /// list of all symbols + typedef std::set SymbolsList; + /// + SymbolsList symbols_; }; } // namespace frontend -- 2.39.2