commit f8e8877f839dcd0d133e6982d107b7d167c524c3
Author: Richard Heck <rgh...@lyx.org>
Date:   Thu Feb 22 15:24:28 2018 -0500

    Respect "literal" setting when entering citation via LyX server.
    
    This requires moving the bool that tracks this somewhere that it
    is visible from BufferView. It seemed to make sense to put it as
    a static member of InsetCitation.
---
 src/BufferView.cpp                |    2 ++
 src/frontends/qt4/GuiCitation.cpp |   12 +++++++-----
 src/frontends/qt4/GuiCitation.h   |    3 ---
 src/insets/InsetCitation.cpp      |    6 ++++++
 src/insets/InsetCitation.h        |    2 ++
 5 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/src/BufferView.cpp b/src/BufferView.cpp
index 7d7dc7f..f421d91 100644
--- a/src/BufferView.cpp
+++ b/src/BufferView.cpp
@@ -2049,6 +2049,8 @@ void BufferView::dispatch(FuncRequest const & cmd, 
DispatchResult & dr)
                icp["key"] = from_utf8(arg);
                if (!opt1.empty())
                        icp["before"] = from_utf8(opt1);
+               icp["literal"] = 
+                       from_ascii(InsetCitation::last_literal ? "true" : 
"false");
                string icstr = InsetCommand::params2string(icp);
                FuncRequest fr(LFUN_INSET_INSERT, icstr);
                lyx::dispatch(fr);
diff --git a/src/frontends/qt4/GuiCitation.cpp 
b/src/frontends/qt4/GuiCitation.cpp
index 7428221..d7d225b 100644
--- a/src/frontends/qt4/GuiCitation.cpp
+++ b/src/frontends/qt4/GuiCitation.cpp
@@ -27,6 +27,7 @@
 #include "TextClass.h"
 #include "FuncRequest.h"
 
+#include "insets/InsetCitation.h"
 #include "insets/InsetCommand.h"
 
 #include "support/debug.h"
@@ -92,7 +93,7 @@ static vector<lyx::docstring> to_docstring_vector(QStringList 
const & qlist)
 
 GuiCitation::GuiCitation(GuiView & lv)
        : DialogView(lv, "citation", qt_("Citation")),
-         style_(QString()), literal_(false), params_(insetCode("citation"))
+         style_(QString()), params_(insetCode("citation"))
 {
        setupUi(this);
 
@@ -237,7 +238,7 @@ void GuiCitation::on_restorePB_clicked()
 
 void GuiCitation::on_literalCB_clicked()
 {
-       literal_ = literalCB->isChecked();
+       InsetCitation::last_literal = literalCB->isChecked();
        changed();
 }
 
@@ -768,7 +769,7 @@ void GuiCitation::init()
        // if this is a new citation, we set the literal checkbox
        // to its last set value.
        if (cited_keys_.isEmpty())
-               literalCB->setChecked(literal_);
+               literalCB->setChecked(InsetCitation::last_literal);
        else
                literalCB->setChecked(params_["literal"] == "true");
 
@@ -1061,7 +1062,7 @@ void GuiCitation::saveSession(QSettings & settings) const
        settings.setValue(
                sessionKey() + "/citestyle", style_);
        settings.setValue(
-               sessionKey() + "/literal", literal_);
+               sessionKey() + "/literal", InsetCitation::last_literal);
 }
 
 
@@ -1073,7 +1074,8 @@ void GuiCitation::restoreSession()
        casesense_->setChecked(settings.value(sessionKey() + 
"/casesensitive").toBool());
        instant_->setChecked(settings.value(sessionKey() + "/autofind", 
true).toBool());
        style_ = settings.value(sessionKey() + "/citestyle").toString();
-       literal_ = settings.value(sessionKey() + "/literal", false).toBool();
+       InsetCitation::last_literal = 
+               settings.value(sessionKey() + "/literal", false).toBool();
        updateFilterHint();
 }
 
diff --git a/src/frontends/qt4/GuiCitation.h b/src/frontends/qt4/GuiCitation.h
index 008d2d5..4d85c03 100644
--- a/src/frontends/qt4/GuiCitation.h
+++ b/src/frontends/qt4/GuiCitation.h
@@ -183,9 +183,6 @@ private:
 
        /// last used citation style
        QString style_;
-       /// last set value for literal
-       /// this is used only for new citations
-       bool literal_;
        ///
        GuiSelectionManager * selectionManager;
        /// available keys.
diff --git a/src/insets/InsetCitation.cpp b/src/insets/InsetCitation.cpp
index e52e87a..e1f40ea 100644
--- a/src/insets/InsetCitation.cpp
+++ b/src/insets/InsetCitation.cpp
@@ -59,6 +59,12 @@ InsetCitation::~InsetCitation()
 }
 
 
+// May well be over-ridden when session settings are loaded
+// in GuiCitation. Unfortunately, that will not happen until
+// such a dialog is created.
+bool InsetCitation::last_literal = true;
+
+
 ParamInfo const & InsetCitation::findInfo(string const & /* cmdName */)
 {
        static ParamInfo param_info_;
diff --git a/src/insets/InsetCitation.h b/src/insets/InsetCitation.h
index 2974ad4..a8e9e18 100644
--- a/src/insets/InsetCitation.h
+++ b/src/insets/InsetCitation.h
@@ -88,6 +88,8 @@ public:
                                       std::vector<CitationStyle> const & 
valid_styles) const;
        ///
        std::map<docstring, docstring> getQualifiedLists(docstring const p) 
const;
+       ///
+       static bool last_literal;
 
 private:
        /// tries to make a pretty label and makes a basic one if not

Reply via email to