From 04e8526460fb26c933fc6e40ea37b96a8f17f1ee Mon Sep 17 00:00:00 2001 From: Richard Heck Date: Thu, 22 Feb 2018 15:24:28 -0500 Subject: [PATCH] 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 e23883cd06..7788f76d3d 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 66e7ba7aa4..ffc8254b6e 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 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 008d2d556d..4d85c0315a 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 8571a28643..ca96d1d56b 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 3e5e3baa35..957488cd80 100644 --- a/src/insets/InsetCitation.h +++ b/src/insets/InsetCitation.h @@ -88,6 +88,8 @@ public: std::vector const & valid_styles) const; /// std::map 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 e548e7dc12..d72f1bb6f1 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.