diff --git a/src/insets/insetcollapsable.C b/src/insets/insetcollapsable.C index 15a29a5981..1c9da8cc52 100644 --- a/src/insets/insetcollapsable.C +++ b/src/insets/insetcollapsable.C @@ -140,6 +140,9 @@ void InsetCollapsable::metrics(MetricsInfo & mi, Dimension & dim) const InsetText::metrics(mi, textdim_); openinlined_ = textdim_.wid + 2 * dim.wid <= mi.base.textwidth; if (openinlined_) { + // Correct for button width, and re-fit + mi.base.textwidth -= dim.wid; + InsetText::metrics(mi, textdim_); dim.wid += textdim_.wid; dim.des = max(dim.des - textdim_.asc + dim.asc, textdim_.des); dim.asc = textdim_.asc; diff --git a/src/insets/insettext.C b/src/insets/insettext.C index 950e191a73..8bcc58ef48 100644 --- a/src/insets/insettext.C +++ b/src/insets/insettext.C @@ -207,13 +207,8 @@ void InsetText::draw(PainterInfo & pi, int x, int y) const int const w = text_.width() + 2 * border_; int const a = text_.ascent() + border_; int const h = a + text_.descent() + border_; - int const ww = pi.base.bv->workWidth(); - if (w > ww - 40 || Wide()) { - pi.pain.line(0, y - a, ww, y - a, frameColor()); - pi.pain.line(0, y - a + h, ww, y - a + h, frameColor()); - } else { - pi.pain.rectangle(x, y - a, w, h, frameColor()); - } + pi.pain.rectangle(x, y - a, (Wide() ? text_.maxwidth_ : w), h, + frameColor()); } } @@ -223,13 +218,8 @@ void InsetText::drawSelection(PainterInfo & pi, int x, int y) const int const w = text_.width() + 2 * border_; int const a = text_.ascent() + border_; int const h = a + text_.descent() + border_; - int const ww = pi.base.bv->workWidth(); - if (Wide()) - pi.pain.fillRectangle(0, y - a, ww, h, - backgroundColor()); - else - pi.pain.fillRectangle(x, y - a, w, h, - backgroundColor()); + pi.pain.fillRectangle(x, y - a, (Wide() ? text_.maxwidth_ : w), h, + backgroundColor()); text_.drawSelection(pi, x, y); } @@ -258,12 +248,6 @@ InsetBase * InsetText::editXY(LCursor & cur, int x, int y) } -bool const InsetText::Tall() const -{ - return text_.ascent() + text_.descent() > 2 * defaultRowHeight(); -} - - void InsetText::forceParagraphsToDefault(LCursor & cur) { BufferParams const & bp = cur.buffer().params(); diff --git a/src/insets/insettext.h b/src/insets/insettext.h index c98102b08b..ecf7e0d431 100644 --- a/src/insets/insettext.h +++ b/src/insets/insettext.h @@ -142,8 +142,6 @@ public: /// bool & Wide() const { return wide_inset_; } /// - bool const Tall() const; - /// void forceParagraphsToDefault(LCursor & cur); protected: diff --git a/src/rowpainter.C b/src/rowpainter.C index a82f7fa3bc..e9340dce93 100644 --- a/src/rowpainter.C +++ b/src/rowpainter.C @@ -819,8 +819,7 @@ void paintPar if (in) { InsetText const * const t = in->asTextInset(); if (t) - t->Wide() = in_inset_alone_on_row && - t->Tall(); + t->Wide() = in_inset_alone_on_row; } } @@ -838,8 +837,8 @@ void paintPar // (if paragraph background was not cleared) if (!repaintAll && (!in_inset_alone_on_row || row_has_changed)) { - pi.pain.fillRectangle(( rowno ? 0 : x - 10 ), y - rit->ascent(), - pi.base.bv->workWidth(), rit->height(), + pi.pain.fillRectangle(x, y - rit->ascent(), + text.maxwidth_, rit->height(), text.backgroundColor()); // If outer row has changed, force nested // insets to repaint completely