From 7459f3ad6ac5ef9fd327b6c87d5125def4ef0c19 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Fri, 29 Dec 2006 11:52:01 +0000 Subject: [PATCH] * insetcollapsable.C (hasFixedWidth): new virtual method, returns false by default. (metrics): do not set to openinlined if hasFixedWidth is true. * insetbox.C (hasFixedWidth): returns true if the box has a fixed width. (metrics): use hasFixedWidth. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16426 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/insets/insetbox.C | 8 +++++++- src/insets/insetbox.h | 2 ++ src/insets/insetcollapsable.C | 3 ++- src/insets/insetcollapsable.h | 2 ++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/insets/insetbox.C b/src/insets/insetbox.C index 5dd54a2618..2af61d15e5 100644 --- a/src/insets/insetbox.C +++ b/src/insets/insetbox.C @@ -168,10 +168,16 @@ void InsetBox::setButtonLabel() } +bool InsetBox::hasFixedWidth() const +{ + return params_.inner_box || params_.special != "width"; +} + + bool InsetBox::metrics(MetricsInfo & m, Dimension & dim) const { MetricsInfo mi = m; - if (params_.inner_box || params_.special != "width") + if (hasFixedWidth()) mi.base.textwidth = params_.width.inPixels(m.base.textwidth); InsetCollapsable::metrics(mi, dim); bool const changed = dim_ != dim; diff --git a/src/insets/insetbox.h b/src/insets/insetbox.h index 55ad9237dc..8786c1c649 100644 --- a/src/insets/insetbox.h +++ b/src/insets/insetbox.h @@ -108,6 +108,8 @@ public: protected: InsetBox(InsetBox const &); virtual void doDispatch(LCursor & cur, FuncRequest & cmd); + /// Is the width forced to some value? + virtual bool hasFixedWidth() const; private: friend class InsetBoxParams; diff --git a/src/insets/insetcollapsable.C b/src/insets/insetcollapsable.C index ecbc58f9bb..98788b49e1 100644 --- a/src/insets/insetcollapsable.C +++ b/src/insets/insetcollapsable.C @@ -161,7 +161,8 @@ bool InsetCollapsable::metrics(MetricsInfo & mi, Dimension & dim) const if (status() == Open) { InsetText::metrics(mi, textdim_); // This expression should not contain mi.base.texwidth - openinlined_ = textdim_.wid < 0.5 * mi.base.bv->workWidth(); + openinlined_ = !hasFixedWidth() + && textdim_.wid < 0.5 * mi.base.bv->workWidth(); if (openinlined_) { // Correct for button width, and re-fit mi.base.textwidth -= dim.wid; diff --git a/src/insets/insetcollapsable.h b/src/insets/insetcollapsable.h index 226083870e..4a4f2fec19 100644 --- a/src/insets/insetcollapsable.h +++ b/src/insets/insetcollapsable.h @@ -98,6 +98,8 @@ protected: InsetBase * editXY(LCursor & cur, int x, int y); /// void setInlined() { status_ = Inlined; } + /// Is the width forced to some value? + virtual bool hasFixedWidth() const { return false; } /// docstring floatName(std::string const & type, BufferParams const &); -- 2.39.2