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;
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());
}
}
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);
}
}
-bool const InsetText::Tall() const
-{
- return text_.ascent() + text_.descent() > 2 * defaultRowHeight();
-}
-
-
void InsetText::forceParagraphsToDefault(LCursor & cur)
{
BufferParams const & bp = cur.buffer().params();
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;
}
}
// (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