Author: tommaso Date: Mon May 9 01:51:44 2011 New Revision: 38647 URL: http://www.lyx.org/trac/changeset/38647
Log: Still addressing #6560: instead of cloning the BufferParams, which might cause a number of unforeseen issues (like the inheritance of the default master, as pointed out in http://www.mail-archive.com/[email protected]/msg168225.html), now we simply set the language into the search & replace buffers. Modified: lyx-devel/trunk/src/BufferParams.cpp lyx-devel/trunk/src/BufferParams.h lyx-devel/trunk/src/frontends/qt4/FindAndReplace.cpp Modified: lyx-devel/trunk/src/BufferParams.cpp ============================================================================== --- lyx-devel/trunk/src/BufferParams.cpp Sun May 8 23:09:38 2011 (r38646) +++ lyx-devel/trunk/src/BufferParams.cpp Mon May 9 01:51:44 2011 (r38647) @@ -2087,6 +2087,18 @@ } +bool BufferParams::setLanguage(string const & lang) +{ + Language const *new_language = languages.getLanguage(lang); + if (!new_language) { + // Language lang was not found + return false; + } + language = new_language; + return true; +} + + void BufferParams::readLanguage(Lexer & lex) { if (!lex.next()) return; @@ -2094,8 +2106,7 @@ string const tmptok = lex.getString(); // check if tmptok is part of tex_babel in tex-defs.h - language = languages.getLanguage(tmptok); - if (!language) { + if (!setLanguage(tmptok)) { // Language tmptok was not found language = default_language; lyxerr << "Warning: Setting language `" Modified: lyx-devel/trunk/src/BufferParams.h ============================================================================== --- lyx-devel/trunk/src/BufferParams.h Sun May 8 23:09:38 2011 (r38646) +++ lyx-devel/trunk/src/BufferParams.h Mon May 9 01:51:44 2011 (r38647) @@ -414,6 +414,10 @@ /// use refstyle? or prettyref? bool use_refstyle; + /// Return true if language could be set to lang, + /// otherwise return false and do not change language + bool setLanguage(std::string const & lang); + private: /// void readPreamble(Lexer &); Modified: lyx-devel/trunk/src/frontends/qt4/FindAndReplace.cpp ============================================================================== --- lyx-devel/trunk/src/frontends/qt4/FindAndReplace.cpp Sun May 8 23:09:38 2011 (r38646) +++ lyx-devel/trunk/src/frontends/qt4/FindAndReplace.cpp Mon May 9 01:51:44 2011 (r38647) @@ -45,20 +45,6 @@ namespace frontend { -/// Apply to buf the parameters supplied through bp -static void ApplyParams(Buffer &buf, BufferParams const & bp) { - ostringstream ss; - ss << "\\begin_header\n"; - bp.writeFile(ss); - ss << "\\end_header\n"; - istringstream iss(ss.str()); - Lexer lex; - lex.setStream(iss); - int unknown_tokens = buf.readHeader(lex); - LASSERT(unknown_tokens == 0, /* */); -} - - FindAndReplaceWidget::FindAndReplaceWidget(GuiView & view) : QTabWidget(&view), view_(view) { @@ -489,18 +475,17 @@ if (bv) { Buffer & doc_buf = bv->buffer(); BufferParams & doc_bp = doc_buf.params(); + string const & lang = doc_bp.language->lang(); Buffer & find_buf = find_work_area_->bufferView().buffer(); LYXERR(Debug::FIND, "Applying document params to find buffer"); - ApplyParams(find_buf, doc_bp); + find_buf.params().setLanguage(lang); Buffer & replace_buf = replace_work_area_->bufferView().buffer(); LYXERR(Debug::FIND, "Applying document params to replace buffer"); - ApplyParams(replace_buf, doc_bp); + replace_buf.params().setLanguage(lang); - string lang = doc_bp.language->lang(); LYXERR(Debug::FIND, "Setting current editing language to " << lang << endl); - FuncRequest cmd(LFUN_LANGUAGE, lang); - find_buf.text().dispatch(find_work_area_->bufferView().cursor(), cmd); - replace_buf.text().dispatch(replace_work_area_->bufferView().cursor(), cmd); + find_work_area_->bufferView().cursor().current_font.setLanguage(doc_bp.language); + replace_work_area_->bufferView().cursor().current_font.setLanguage(doc_bp.language); } find_work_area_->installEventFilter(this);
