[LyX/master] fixup REFERENCE_TO_PARAGRAPH:
Juergen Spitzmueller
spitz at lyx.org
Tue Jul 30 10:41:11 UTC 2024
commit 4ed822925f03f197afa738e6e0ee07aa7b303986
Author: Juergen Spitzmueller <spitz at lyx.org>
Date: Tue Jul 30 09:24:19 2024 +0200
fixup REFERENCE_TO_PARAGRAPH:
* par id actually can be 0
* properly move on in the buffer list if paragraph is not found
in the current buffer
* use dit to get label (as this might be in a different buffer)
---
src/BufferView.cpp | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/BufferView.cpp b/src/BufferView.cpp
index f3267d75d3..19f98554fe 100644
--- a/src/BufferView.cpp
+++ b/src/BufferView.cpp
@@ -1294,7 +1294,7 @@ bool BufferView::getStatus(FuncRequest const & cmd, FuncStatus & flag)
case LFUN_REFERENCE_TO_PARAGRAPH: {
int const id = convert<int>(cmd.getArg(0));
- flag.setEnabled(id > 0);
+ flag.setEnabled(id >= 0);
break;
}
@@ -1659,13 +1659,18 @@ void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
case LFUN_REFERENCE_TO_PARAGRAPH: {
int const id = convert<int>(cmd.getArg(0));
- if (id < 1)
+ if (id < 0)
break;
string const type = cmd.getArg(1);
int i = 0;
for (Buffer * b = &buffer_; i == 0 || b != &buffer_;
b = theBufferList().next(b)) {
DocIterator const dit = b->getParFromID(id);
+ if (dit.empty()) {
+ LYXERR(Debug::INFO, "No matching paragraph found! [" << id << "].");
+ ++i;
+ continue;
+ }
string const label = dit.innerParagraph().getLabelForXRef();
if (!label.empty()) {
// if the paragraph has a label, we refer to this
@@ -1680,7 +1685,7 @@ void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
// we do not want to open the dialog, hence we
// do not employ LFUN_LABEL_INSERT
InsetCommandParams p(LABEL_CODE);
- docstring const label = cur.getPossibleLabel();
+ docstring const label = dit.getPossibleLabel();
p["name"] = label;
string const data = InsetCommand::params2string(p);
lyx::dispatch(FuncRequest(LFUN_INSET_INSERT, data));
More information about the lyx-cvs
mailing list