From: Richard Heck Date: Sat, 7 Apr 2018 01:31:11 +0000 (-0400) Subject: Fix bug 11070. X-Git-Tag: 2.3.2~52 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=a05da2121c8e8acfbb9ce984e4211afb84a39bf6;p=features.git Fix bug 11070. Allows plural, caps, no prefix to be set via context menu. (cherry picked from commit 35afcfb6dd4fe9519cb132c55714c73be981b275) --- diff --git a/lib/ui/stdcontext.inc b/lib/ui/stdcontext.inc index 9acf334562..47cf349784 100644 --- a/lib/ui/stdcontext.inc +++ b/lib/ui/stdcontext.inc @@ -96,6 +96,10 @@ Menuset Item "Textual Reference|x" "inset-modify changetype nameref" Item "Label Only|L" "inset-modify changetype labelonly" Separator + OptItem "Plural|a" "inset-modify ref toggle-plural" + OptItem "Capitalize|C" "inset-modify ref toggle-caps" + Item "No Prefix" "inset-modify ref toggle-noprefix" + Separator Item "Settings...|S" "inset-settings" End diff --git a/src/insets/InsetRef.cpp b/src/insets/InsetRef.cpp index 44770e8052..124738daf7 100644 --- a/src/insets/InsetRef.cpp +++ b/src/insets/InsetRef.cpp @@ -15,6 +15,7 @@ #include "BufferParams.h" #include "Cursor.h" #include "DispatchResult.h" +#include "FuncStatus.h" #include "InsetLabel.h" #include "Language.h" #include "LaTeXFeatures.h" @@ -78,6 +79,60 @@ ParamInfo const & InsetRef::findInfo(string const & /* cmdName */) } +void InsetRef::doDispatch(Cursor & cur, FuncRequest & cmd) +{ + string const inset = cmd.getArg(0); + string const arg = cmd.getArg(1); + string pstring; + if (cmd.action() == LFUN_INSET_MODIFY && inset == "ref") { + if (arg == "toggle-plural") + pstring = "plural"; + else if (arg == "toggle-caps") + pstring = "caps"; + else if (arg == "toggle-noprefix") + pstring = "noprefix"; + } + // otherwise not for us + if (pstring.empty()) + return InsetCommand::doDispatch(cur, cmd); + + bool const isSet = (getParam(pstring) == "true"); + setParam(pstring, from_ascii(isSet ? "false" : "true")); +} + + +bool InsetRef::getStatus(Cursor & cur, FuncRequest const & cmd, + FuncStatus & status) const +{ + if (cmd.action() != LFUN_INSET_MODIFY) + return InsetCommand::getStatus(cur, cmd, status); + if (cmd.getArg(0) != "ref") + return InsetCommand::getStatus(cur, cmd, status); + + string const arg = cmd.getArg(1); + string pstring; + if (arg == "toggle-plural") + pstring = "plural"; + else if (arg == "toggle-caps") + pstring = "caps"; + if (!pstring.empty()) { + status.setEnabled(buffer().params().use_refstyle && + params().getCmdName() == "formatted"); + bool const isSet = (getParam(pstring) == "true"); + status.setOnOff(isSet); + return true; + } + if (arg == "toggle-noprefix") { + status.setEnabled(params().getCmdName() == "labelonly"); + bool const isSet = (getParam("noprefix") == "true"); + status.setOnOff(isSet); + return true; + } + // otherwise not for us + return InsetCommand::getStatus(cur, cmd, status); +} + + namespace { void capitalize(docstring & s) { diff --git a/src/insets/InsetRef.h b/src/insets/InsetRef.h index 066a596630..0f5a5b201d 100644 --- a/src/insets/InsetRef.h +++ b/src/insets/InsetRef.h @@ -40,6 +40,10 @@ public: /// \name Public functions inherited from Inset class //@{ /// + void doDispatch(Cursor & cur, FuncRequest & cmd); + /// + bool getStatus(Cursor & cur, FuncRequest const & cmd, FuncStatus & status) const; + /// bool isLabeled() const { return true; } /// docstring toolTip(BufferView const &, int, int) const diff --git a/status.23x b/status.23x index 979bdb8300..ff82428777 100644 --- a/status.23x +++ b/status.23x @@ -148,6 +148,9 @@ What's new - Avoid white space before math completion (bug 11283). +- View and change Plural, Capitalization, and No Prefix options for + cross-references from the context menu (bug 11070). + * INTERNALS