Am 03.04.2013 15:00, schrieb Jean-Marc Lasgouttes:
As I already mentionned (I think)
I missed that.
, there is support for empty length (look for Length::empty() method) and nothing prevents you from using it. It is already used in several places in the code. What is the problem exactly?
I can use an empty length (see attached patch) but this results in "0pt" as length when the length is read. But "0pt" is a valid length. I can change from 99.9col% to 0pt as length for the case that no length is given if you like. But is this a better solution than mine? The problem I see is that "0pt" is used as length if you want to have a box with the height of its contents but not width, this is a case that I would not allow anymore if I would handle 0pt as no length.
But maybe I only make a mistake and there is a way to prevent that an empty length is read as 0pt? thanks and regards Uwe
src/frontends/qt4/GuiBox.cpp | 8 ++++---- src/insets/InsetBox.cpp | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/frontends/qt4/GuiBox.cpp b/src/frontends/qt4/GuiBox.cpp index 657896a..da7aa49 100644 --- a/src/frontends/qt4/GuiBox.cpp +++ b/src/frontends/qt4/GuiBox.cpp @@ -305,8 +305,8 @@ void GuiBox::paramsToDialog(Inset const * inset) // the width can only be selected for makebox or framebox widthCB->setEnabled(inner_type == "makebox" || (type == "Boxed" && !ibox && !pagebreakCB->isChecked())); - // "-999col%" is the code for no width - if ((params.width).asString() == "-999col%") + // an empty length is the code for no width + if ((params.width).asString().empty()) widthCB->setCheckState(Qt::Unchecked); else { if (widthCB->isEnabled()) @@ -378,9 +378,9 @@ docstring GuiBox::dialogToParams() const } } else { if (widthCB->isEnabled()) { - // use the code "-999col%" for the case that no width was selected + // use an empty length for the case that no width was selected params.special = "none"; - params.width = Length("-999col%"); + params.width = Length(); } } diff --git a/src/insets/InsetBox.cpp b/src/insets/InsetBox.cpp index f610263..9d8cc72 100644 --- a/src/insets/InsetBox.cpp +++ b/src/insets/InsetBox.cpp @@ -162,7 +162,7 @@ void InsetBox::setButtonLabel() bool InsetBox::hasFixedWidth() const { - return from_ascii(params_.width.asLatexString()) != "-9.99\\columnwidth"; + return from_ascii(params_.width.asLatexString()) != ""; } @@ -316,8 +316,8 @@ void InsetBox::latex(otexstream & os, OutputParams const & runparams) const os << "\\begin{framed}%\n"; break; case Boxed: - // "-999col%" is the code for no width - if (from_ascii(width_string) != "-9.99\\columnwidth") { + // an empty length is the code for no width + if (from_ascii(width_string) != "") { os << "\\framebox"; if (!params_.inner_box) { // Special widths, see usrguide §3.5 @@ -358,8 +358,8 @@ void InsetBox::latex(otexstream & os, OutputParams const & runparams) const if (params_.use_parbox) os << "\\parbox"; else if (params_.use_makebox) { - // "-999col%" is the code for no width - if (from_ascii(width_string) != "-9.99\\columnwidth") { + // an empty length is the code for no width + if (from_ascii(width_string) != "") { os << "\\makebox"; // FIXME UNICODE // output the width and horizontal position