-----------------------
+2023-09-29 Jürgen Spitzmüller <spitz@lyx.org>
+ * Format incremented to 620: Add InsetBox "default" framecolor ("foreground"
+ rather than "black" in GUI). This aligns better with dark mode.
+
2023-09-06 Richard Kimberly Heck <rikiheck@lyx.org>
* Format incremented to 619: New document header \use_formatted_ref
for workarea display purposes only.
del document.header[i]
+def revert_box_fcolor(document):
+ i = 0
+ while True:
+ i = find_token(document.body, '\\begin_inset Box Boxed', i+1)
+ if i == -1:
+ break
+ j = find_end_of_inset(document.body, i)
+ if j == -1:
+ document.warning("Malformed LyX document: Can't find end of framed box inset at line %d" % i)
+ continue
+ k = find_token(document.body, 'framecolor "default"', i, j)
+ if k != -1:
+ document.body[k] = 'framecolor "black"'
+
+
##
# Conversion hub
#
[616, [convert_empty_macro]],
[617, [convert_cov_options]],
[618, []],
- [619, []]
+ [619, []],
+ [620, []]
]
-revert = [[618, [revert_formatted_refs]],
+revert = [[619, [revert_box_fcolor]],
+ [618, [revert_formatted_refs]],
[617, [revert_hequotes]],
[616, [revert_expreambles,revert_exarg2,revert_linggloss2,revert_cov_options]],
[615, [revert_empty_macro]],
connect(shadowsizeED, SIGNAL(textChanged(QString)), this, SIGNAL(changed()));
connect(shadowsizeUnitsLC, SIGNAL(selectionChanged(lyx::Length::UNIT)),
this, SIGNAL(changed()));
+ connect(frameColorCO, SIGNAL(currentIndexChanged(int)),
+ this, SIGNAL(changed()));
connect(backgroundColorCO, SIGNAL(currentIndexChanged(int)),
this, SIGNAL(changed()));
}
-void GuiBox::fillComboColor(QComboBox * combo, bool const is_none)
+void GuiBox::fillComboColor(QComboBox * combo, bool const is_background)
{
combo->clear();
QPixmap coloritem(32, 32);
QColor color;
- // frameColorCO cannot be uncolored
- if (is_none)
+ // condition on the two possible types
+ if (is_background)
combo->addItem(toqstr(translateIfPossible(lcolor.getGUIName(Color_none))),
toqstr(lcolor.getLaTeXName(Color_none)));
+ else
+ combo->addItem(qt_("Default"), toqstr("default"));
QList<ColorCode>::const_iterator cit = color_codes_.begin();
for (; cit != color_codes_.end(); ++cit) {
QString const latexname = toqstr(lcolor.getLaTeXName(*cit));
widthCB->setChecked(itype != "none");
pagebreakCB->setChecked(false);
}
- // assure that the frame color is black for frameless boxes to
- // provide the color "none"
- int const b = frameColorCO->findData("black");
- if (frameless && frameColorCO->currentIndex() != b)
- frameColorCO->setCurrentIndex(b);
- changed();
-}
-
-
-void GuiBox::on_frameColorCO_currentIndexChanged(int index)
-{
- // if there is a non-black frame color the background cannot be uncolored
- // therefore remove the entry "none" in this case
- int const n = backgroundColorCO->findData("none");
- if (index != frameColorCO->findData("black")) {
- if (n != -1) {
- if (backgroundColorCO->currentIndex() == n)
- backgroundColorCO->setCurrentIndex(
- backgroundColorCO->findData("white"));
- backgroundColorCO->removeItem(n);
- }
- } else {
- if (n == -1)
- backgroundColorCO->insertItem(0, toqstr(translateIfPossible((lcolor.getGUIName(Color_none)))),
- toqstr(lcolor.getLaTeXName(Color_none)));
- }
changed();
}
params.framecolor =
fromqstr(frameColorCO->itemData(frameColorCO->currentIndex()).toString());
else
- params.framecolor = "black";
+ params.framecolor = "foreground";
if (backgroundColorCO->isEnabled())
params.backgroundcolor =
fromqstr(backgroundColorCO->itemData(backgroundColorCO->currentIndex()).toString());
private Q_SLOTS:
void on_innerBoxCO_activated(int);
void on_typeCO_activated(int);
- void on_frameColorCO_currentIndexChanged(int);
void initDialog();
void on_widthCB_stateChanged(int state);
void on_heightCB_stateChanged(int state);
//@}
/// Fill the color combos
- void fillComboColor(QComboBox * combo, bool const is_none);
+ void fillComboColor(QComboBox * combo, bool const is_background);
/// add and remove special lengths
void setSpecial(bool ibox);
/// only show valid inner box items
// set the frame color for the inset if the type is Boxed
if (btype == Boxed)
- setFrameColor(lcolor.getFromLaTeXName(params_.framecolor));
+ setFrameColor(lcolor.getFromLaTeXName(getFrameColor(true)));
else
setFrameColor(Color_collapsibleframe);
}
if (separation_string != defaultSep && thickness_string == defaultThick)
os << "{\\fboxsep " << from_ascii(separation_string);
if (!params_.inner_box && !width_string.empty()) {
- if (params_.framecolor != "black" || params_.backgroundcolor != "none") {
- os << maybeBeginL << "\\fcolorbox{" << params_.framecolor << "}{" << params_.backgroundcolor << "}{";
+ if (params_.framecolor != "default" || params_.backgroundcolor != "none") {
+ os << maybeBeginL << "\\fcolorbox{" << getFrameColor() << "}{" << getBackgroundColor() << "}{";
os << "\\makebox";
needEndL = !maybeBeginL.empty();
} else
if (params_.hor_pos != 'c')
os << "[" << params_.hor_pos << "]";
} else {
- if (params_.framecolor != "black" || params_.backgroundcolor != "none") {
- os << maybeBeginL << "\\fcolorbox{" << params_.framecolor << "}{" << params_.backgroundcolor << "}";
+ if (params_.framecolor != "default" || params_.backgroundcolor != "none") {
+ os << maybeBeginL << "\\fcolorbox{" << getFrameColor() << "}{" << getBackgroundColor() << "}";
needEndL = !maybeBeginL.empty();
} else {
if (!cprotect.empty() && contains(runparams.active_chars, '^')) {
case Boxed:
os << "}";
if (!params_.inner_box && !width_string.empty()
- && (params_.framecolor != "black" || params_.backgroundcolor != "none"))
+ && (params_.framecolor != "default" || params_.backgroundcolor != "none"))
os << "}";
if (separation_string != defaultSep || thickness_string != defaultThick)
os << "}";
break;
case Boxed:
features.require("calc");
- if (params_.framecolor != "black" || params_.backgroundcolor != "none")
+ if (getFrameColor() != "black" || getBackgroundColor() != "white")
features.require("xcolor");
break;
case ovalbox:
}
+string const InsetBox::getFrameColor(bool const gui) const
+{
+ if (params_.framecolor == "default")
+ return gui ? "foreground" : "black";
+ return params_.framecolor;
+}
+
+
+string const InsetBox::getBackgroundColor() const
+{
+ if (params_.backgroundcolor == "none")
+ return "white";
+ return params_.backgroundcolor;
+}
+
+
/////////////////////////////////////////////////////////////////////////
//
// InsetBoxParams
thickness(Length(defaultThick)),
separation(Length(defaultSep)),
shadowsize(Length(defaultShadow)),
- framecolor("black"),
+ framecolor("default"),
backgroundcolor("none")
{}
private:
/// used by the constructors
void init();
+ ///
+ std::string const getFrameColor(bool const gui = false) const;
+ ///
+ std::string const getBackgroundColor() const;
///
friend class InsetBoxParams;
// Do not remove the comment below, so we get merge conflict in
// independent branches. Instead add your own.
-#define LYX_FORMAT_LYX 619 // rikiheck: formatted ref
-#define LYX_FORMAT_TEX2LYX 619
+#define LYX_FORMAT_LYX 620 // spitz: default box frame color
+#define LYX_FORMAT_TEX2LYX 620
#if LYX_FORMAT_TEX2LYX != LYX_FORMAT_LYX
#ifndef _MSC_VER