[LyX/2.4.x] NeedCProtect -1 also for InsetLayouts

Juergen Spitzmueller spitz at lyx.org
Mon Jun 10 19:23:59 UTC 2024


commit 176ecba6308c47c7674c0b7c2c2b0f264b9d6b84
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Tue May 14 13:37:29 2024 +0200

    NeedCProtect -1 also for InsetLayouts
    
    (cherry picked from commit a716fb96b534475759799b195a7edaeb049fbcf6)
---
 lib/layouts/beamer.layout  |  7 +++++++
 src/insets/InsetLayout.cpp | 12 ++++++++++--
 src/insets/InsetLayout.h   |  4 ++++
 src/insets/InsetText.cpp   |  2 ++
 4 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/lib/layouts/beamer.layout b/lib/layouts/beamer.layout
index 58caf67c7d..8b9f1b2f69 100644
--- a/lib/layouts/beamer.layout
+++ b/lib/layouts/beamer.layout
@@ -1576,6 +1576,7 @@ InsetLayout Flex:Only
   EndArgument
   ResetsFont       true
   CustomPars       false
+  NeedCProtect     -1
 End
 
 InsetLayout Flex:Uncover
@@ -1597,6 +1598,7 @@ InsetLayout Flex:Uncover
   EndArgument
   ResetsFont       true
   CustomPars       false
+  NeedCProtect     -1
 End
 
 InsetLayout Flex:Visible
@@ -1618,6 +1620,7 @@ InsetLayout Flex:Visible
   EndArgument
   ResetsFont       true
   CustomPars       false
+  NeedCProtect     -1
 End
 
 InsetLayout Flex:Invisible
@@ -1639,6 +1642,7 @@ InsetLayout Flex:Invisible
   EndArgument
   ResetsFont       true
   CustomPars       false
+  NeedCProtect     -1
 End
 
 InsetLayout Flex:Alternative
@@ -1666,6 +1670,7 @@ InsetLayout Flex:Alternative
   EndArgument
   ResetsFont       true
   CustomPars       false
+  NeedCProtect     -1
 End
 
 InsetLayout Flex:Beamer_Note
@@ -1701,6 +1706,7 @@ InsetLayout Flex:ArticleMode
    LabelString     Article
    MultiPar        true
    ResetsFont      true
+   NeedCProtect    -1
 End
 
 InsetLayout Flex:PresentationMode
@@ -1712,6 +1718,7 @@ InsetLayout Flex:PresentationMode
    LabelString     Presentation
    MultiPar        true
    ResetsFont      true
+   NeedCProtect    -1
 End
 
 
diff --git a/src/insets/InsetLayout.cpp b/src/insets/InsetLayout.cpp
index 8e5ed651cf..b4c7dc4eee 100644
--- a/src/insets/InsetLayout.cpp
+++ b/src/insets/InsetLayout.cpp
@@ -400,9 +400,17 @@ bool InsetLayout::read(Lexer & lex, TextClass const & tclass,
 		case IL_NEEDPROTECT:
 			lex >> needprotect_;
 			break;
-		case IL_NEEDCPROTECT:
-			lex >> needcprotect_;
+		case IL_NEEDCPROTECT: {
+			string val;
+			lex >> val;
+			nocprotect_ = false;
+			needcprotect_ = false;
+			if (val == "-1")
+				nocprotect_ = true;
+			else if (val == "1" || val == "true")
+				needcprotect_ = true;
 			break;
+		}
 		case IL_NEEDMBOXPROTECT:
 			lex >> needmboxprotect_;
 			break;
diff --git a/src/insets/InsetLayout.h b/src/insets/InsetLayout.h
index 6700100252..ee5d4afefa 100644
--- a/src/insets/InsetLayout.h
+++ b/src/insets/InsetLayout.h
@@ -221,6 +221,8 @@ public:
 	bool isNeedProtect() const { return needprotect_; }
 	///
 	bool needsCProtect() const { return needcprotect_; }
+	///
+	bool noCProtect() const { return nocprotect_; }
 	/// Protection of some elements such as \ref and \cite
 	/// in \mbox (needed by commands building on soul or ulem)
 	bool isNeedMBoxProtect() const { return needmboxprotect_; }
@@ -415,6 +417,8 @@ private:
 	///
 	bool needcprotect_ = false;
 	///
+	bool nocprotect_ = false;
+	///
 	bool needmboxprotect_ = false;
 	/// should the contents be written to TOC strings?
 	bool intoc_ = false;
diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp
index 9a60f4d855..5552d479be 100644
--- a/src/insets/InsetText.cpp
+++ b/src/insets/InsetText.cpp
@@ -549,6 +549,8 @@ void InsetText::latex(otexstream & os, OutputParams const & runparams) const
 		++rp.inulemcmd;
 	if (!il.passThruChars().empty())
 		rp.pass_thru_chars += il.passThruChars();
+	if (il.noCProtect())
+		rp.no_cprotect = true;
 	if (!il.newlineCmd().empty())
 		rp.newlinecmd = il.newlineCmd();
 	rp.par_begin = 0;


More information about the lyx-cvs mailing list