[LyX/master] Indicate change of content in label of collapsed collapsible

Juergen Spitzmueller spitz at lyx.org
Sun Dec 29 08:36:22 UTC 2019


commit b321bb1aed0e554feef628602eb833e26ad0efb0
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sun Dec 29 09:45:06 2019 +0100

    Indicate change of content in label of collapsed collapsible
    
    Fixes #8645
---
 src/insets/InsetCollapsible.cpp |   14 +++++++++++---
 src/insets/InsetText.cpp        |    7 +++++--
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/insets/InsetCollapsible.cpp b/src/insets/InsetCollapsible.cpp
index 755bb6c..fab5d34 100644
--- a/src/insets/InsetCollapsible.cpp
+++ b/src/insets/InsetCollapsible.cpp
@@ -445,9 +445,13 @@ docstring const InsetCollapsible::getNewLabel(docstring const & l) const
 	pos_type const n = min(max_length, p_siz);
 	pos_type i = 0;
 	pos_type j = 0;
+	bool changed_content = false;
 	for (; i < n && j < p_siz; ++j) {
-		if (paragraphs().begin()->isDeleted(j))
-			continue;
+		if (paragraphs().begin()->isChanged(j)) {
+			changed_content = true;
+			if (paragraphs().begin()->isDeleted(j))
+				continue;
+		}
 		if (paragraphs().begin()->isInset(j)) {
 			if (!paragraphs().begin()->getInset(j)->isChar())
 				continue;
@@ -459,7 +463,11 @@ docstring const InsetCollapsible::getNewLabel(docstring const & l) const
 	if (paragraphs().size() > 1 || (i > 0 && j < p_siz)) {
 		label << "...";
 	}
-	docstring const lbl = label.str();
+	docstring lbl;
+	// indicate changed content in label (#8645)
+	if (changed_content)
+		lbl = char_type(0x270E);// ✎ U+270E LOWER RIGHT PENCIL
+	lbl += label.str();
 	return lbl.empty() ? l : lbl;
 }
 
diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp
index 2126fb1..c37c1c2 100644
--- a/src/insets/InsetText.cpp
+++ b/src/insets/InsetText.cpp
@@ -1077,6 +1077,7 @@ docstring InsetText::toolTipText(docstring prefix, size_t const len) const
 	ParagraphList::const_iterator end = paragraphs().end();
 	ParagraphList::const_iterator it = beg;
 	bool ref_printed = false;
+	bool changed_content = false;
 
 	for (; it != end; ++it) {
 		if (it != beg)
@@ -1084,12 +1085,14 @@ docstring InsetText::toolTipText(docstring prefix, size_t const len) const
 		if ((*it).isRTL(buffer().params()))
 			oss << "<div dir=\"rtl\">";
 		writePlaintextParagraph(buffer(), *it, oss, rp, ref_printed, len);
-		if ((*it).isRTL(buffer().params()))
-			oss << "</div>";
+		if ((*it).isChanged(0, (*it).size()))
+			changed_content = true;
 		if (oss.tellp() >= 0 && size_t(oss.tellp()) > len)
 			break;
 	}
 	docstring str = oss.str();
+	if (changed_content)
+		str += from_ascii("\n\n") + _("[contains tracked changes]");
 	support::truncateWithEllipsis(str, len);
 	return str;
 }


More information about the lyx-cvs mailing list