commit 343a9749abe4f32e67ef9aae9554ee4bd8dae1b4
Author: Juergen Spitzmueller <[email protected]>
Date:   Sun Oct 1 10:12:52 2023 +0200

    No need to use \fcolorbox with explicit black frame and no background
    
    White background, however, is always treated explicit (think non-white
    page background)
---
 src/insets/InsetBox.cpp |   30 +++++++++++++++++++++---------
 src/insets/InsetBox.h   |    2 ++
 2 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/src/insets/InsetBox.cpp b/src/insets/InsetBox.cpp
index c15ae86..8adf0f7 100644
--- a/src/insets/InsetBox.cpp
+++ b/src/insets/InsetBox.cpp
@@ -430,9 +430,11 @@ void InsetBox::latex(otexstream & os, OutputParams const & 
runparams) const
                if (separation_string != defaultSep && thickness_string == 
defaultThick)
                        os << "{\\fboxsep " << from_ascii(separation_string);
                if (!params_.inner_box && !width_string.empty()) {
-                       if (params_.framecolor != "default" || 
params_.backgroundcolor != "none") {
-                               os << maybeBeginL << "\\fcolorbox{" << 
getFrameColor() << "}{" << getBackgroundColor() << "}{";
-                               os << "\\makebox";
+                       if (useFColorBox()) {
+                               os << maybeBeginL
+                                  << "\\fcolorbox{" << getFrameColor()
+                                  << "}{" << getBackgroundColor()
+                                  << "}{" << "\\makebox";
                                needEndL = !maybeBeginL.empty();
                        } else
                                os << "\\framebox";
@@ -449,8 +451,10 @@ void InsetBox::latex(otexstream & os, OutputParams const & 
runparams) const
                        if (params_.hor_pos != 'c')
                                os << "[" << params_.hor_pos << "]";
                } else {
-                       if (params_.framecolor != "default" || 
params_.backgroundcolor != "none") {
-                               os << maybeBeginL << "\\fcolorbox{" << 
getFrameColor() << "}{" << getBackgroundColor() << "}";
+                       if (useFColorBox()) {
+                               os << maybeBeginL
+                                  << "\\fcolorbox{" << getFrameColor()
+                                  << "}{" << getBackgroundColor() << "}";
                                needEndL = !maybeBeginL.empty();
                        } else {
                                if (!cprotect.empty() && 
contains(runparams.active_chars, '^')) {
@@ -616,8 +620,7 @@ void InsetBox::latex(otexstream & os, OutputParams const & 
runparams) const
                break;
        case Boxed:
                os << "}";
-               if (!params_.inner_box && !width_string.empty()
-                       && (params_.framecolor != "default" || 
params_.backgroundcolor != "none"))
+               if (!params_.inner_box && !width_string.empty() && 
useFColorBox())
                        os << "}";
                if (separation_string != defaultSep || thickness_string != 
defaultThick)
                        os << "}";
@@ -810,8 +813,8 @@ void InsetBox::validate(LaTeXFeatures & features) const
                break;
        case Boxed:
                features.require("calc");
-               if (params_.framecolor != "default" || params_.backgroundcolor 
!= "none")
-                       // \fcolorbox, which is part of (x)color, is used
+               if (useFColorBox())
+                       // \fcolorbox is provided by [x]color
                        features.require("xcolor");
                break;
        case ovalbox:
@@ -892,6 +895,15 @@ string const InsetBox::getBackgroundColor() const
 }
 
 
+bool InsetBox::useFColorBox() const
+{
+       // we only need an \fcolorbox if the framecolor is something else
+       // than black in the output or if the backgroundcolor is not none
+       // (also needed with white, consider non-white page coloring)
+       return getFrameColor() != "black" || params_.backgroundcolor != "none";
+}
+
+
 /////////////////////////////////////////////////////////////////////////
 //
 // InsetBoxParams
diff --git a/src/insets/InsetBox.h b/src/insets/InsetBox.h
index 97c2a27..f4a7436 100644
--- a/src/insets/InsetBox.h
+++ b/src/insets/InsetBox.h
@@ -167,6 +167,8 @@ private:
        std::string const getFrameColor(bool const gui = false) const;
        ///
        std::string const getBackgroundColor() const;
+       ///
+       bool useFColorBox() const;
 
        ///
        friend class InsetBoxParams;
-- 
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to