commit 04e8526460fb26c933fc6e40ea37b96a8f17f1ee
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.
    
    (cherry picked from commit f8e8877f839dcd0d133e6982d107b7d167c524c3)
---
 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 ++
 status.23x                        |    3 +++
 6 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/src/BufferView.cpp b/src/BufferView.cpp
index e23883c..7788f76 100644
--- a/src/BufferView.cpp
+++ b/src/BufferView.cpp
@@ -2022,6 +2022,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 66e7ba7..ffc8254 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 8571a28..ca96d1d 100644
--- a/src/insets/InsetCitation.cpp
+++ b/src/insets/InsetCitation.cpp
@@ -62,6 +62,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 */)
 {
        // standard cite does only take one argument, but biblatex, jurabib
diff --git a/src/insets/InsetCitation.h b/src/insets/InsetCitation.h
index 3e5e3ba..957488c 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
diff --git a/status.23x b/status.23x
index e548e7d..d72f1bb 100644
--- a/status.23x
+++ b/status.23x
@@ -33,6 +33,9 @@ What's new
 - Handle properly top/bottom of inset with mac-like cursor movement
   (bug 10701).
 
+- Respect the last setting of the 'literal' checkbox when adding citations
+  via the LyX server (e.g., from JabRef).
+
 - Allow unification of graphic groups inside marked block via context
   menu.
 

Reply via email to