int LyXText::workWidth(BufferView * bview) const
{
if (inset_owner) {
-#if 1
- return inset_owner->getMaxWidth(bview->painter(), inset_owner);
-#else
- LyXFont font(LyXFont::ALL_SANE);
- return inset_owner->width(bview->painter(), font);
-#endif
+ return inset_owner->textWidth(bview->painter());
}
return bview->workWidth();
}
void LyXText::draw(BufferView * bview, Row const * row,
LyXParagraph::size_type & vpos,
- int offset, float & x)
+ int offset, float & x, bool cleared)
{
Painter & pain = bview->painter();
} else if (c == LyXParagraph::META_INSET) {
Inset const * tmpinset = row->par()->GetInset(pos);
if (tmpinset) {
- tmpinset->draw(bview, font, offset+row->baseline(), x);
+ tmpinset->draw(bview, font, offset+row->baseline(), x,
+ cleared);
}
++vpos;
// clear the area where we want to paint/print
int ww;
- if (inset_owner)
- ww = inset_owner->width(bview->painter(), font) - 1;
- else
- ww = bview->workWidth();
+ ww = bview->workWidth();
bool clear_area = true;
{
clear_area = row_ptr->par()->GetInset(row_ptr->pos())->doClearArea();
}
- if (clear_area)
- pain.fillRectangle(x_offset, y_offset, ww, row_ptr->height());
+ if (clear_area) {
+ int w;
+ if (inset_owner)
+ w = inset_owner->width(bview->painter(), font);
+ else
+ w = ww;
+ pain.fillRectangle(x_offset, y_offset, w, row_ptr->height());
+ }
if (selection) {
/* selection code */
- row_ptr->par()->bibkey->width(bview->painter(), font);
row_ptr->par()->bibkey->draw(bview, font,
y_offset + row_ptr->baseline(),
- tmpx);
+ tmpx, clear_area);
}
}
row_ptr->par(), pos);
++vpos;
} else
- draw(bview, row_ptr, vpos, y_offset, x);
+ draw(bview, row_ptr, vpos, y_offset, x, clear_area);
}
/* do not forget the very last cell. This has no NEWLINE so
x += fill_separator;
++vpos;
} else
- draw(bview, row_ptr, vpos, y_offset, x);
+ draw(bview, row_ptr, vpos, y_offset, x, clear_area);
}
#ifndef NEW_TABULAR
}