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);

Reply via email to