commit 0c77174406230fd1c664634bd05e82c6511aa0bc
Author: Juergen Spitzmueller <[email protected]>
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)
(cherry picked from commit 4ed822925f03f197afa738e6e0ee07aa7b303986)
---
src/BufferView.cpp | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/BufferView.cpp b/src/BufferView.cpp
index 8d208e4f33..6f339e51e1 100644
--- a/src/BufferView.cpp
+++ b/src/BufferView.cpp
@@ -1284,7 +1284,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;
}
@@ -1649,13 +1649,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
@@ -1670,7 +1675,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));
--
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs