Dimension dim;
FontInfo labelfont(getLabelfont());
labelfont.realize(sane_font);
+ int const offset = Inset::textOffset(&bv);
theFontMetrics(labelfont).buttonText(
- buttonLabel(bv), Inset::textOffset(&bv), dim.wid, dim.asc, dim.des);
+ buttonLabel(bv), offset, dim.wid, dim.asc, dim.des);
+ // remove spacing on the right for left buttons; we also do it for
+ // TopButton (although it is not useful per se), because
+ // openinlined_ is not always set properly at this point.
+ Geometry const geom = geometry(bv);
+ if (geom == LeftButton || geom == TopButton)
+ // this form makes a difference if offset is even
+ dim.wid -= offset - offset / 2;
return dim;
}
{
view_[mi.base.bv].auto_open_ = mi.base.bv->cursor().isInside(this);
- FontInfo tmpfont = mi.base.font;
- mi.base.font = getFont();
- mi.base.font.realize(tmpfont);
-
BufferView const & bv = *mi.base.bv;
switch (geometry(bv)) {
InsetText::metrics(mi, textdim);
view_[&bv].openinlined_ = (textdim.wid + dim.wid) < mi.base.textwidth;
if (view_[&bv].openinlined_) {
- // Correct for button width.
- dim.wid += textdim.wid;
+ // Correct for button width but remove spacing before frame
+ dim.wid += textdim.wid - leftOffset(mi.base.bv) / 2;
dim.des = max(dim.des - textdim.asc + dim.asc, textdim.des);
dim.asc = textdim.asc;
} else {
}
break;
}
-
- mi.base.font = tmpfont;
}
case LeftButton:
case TopButton: {
if (g == LeftButton) {
- textx = x + dimc.width();
+ // correct for spacing added before the frame in
+ // InsetText::draw. We want the button to touch the frame.
+ textx = x + dimc.width() - leftOffset(pi.base.bv) / 2;
texty = baseline;
} else {
textx = x;
switch (geometry(bv)) {
case LeftButton:
- x += dimensionCollapsed(bv).wid;
+ x += dimensionCollapsed(bv).wid - leftOffset(&bv) / 2;
break;
case TopButton: {
y += dimensionCollapsed(bv).des + textdim.asc;
}
-FontInfo InsetCollapsible::getFont() const
-{
- return getLayout().font();
-}
-
-
-FontInfo InsetCollapsible::getLabelfont() const
-{
- return getLayout().labelfont();
-}
-
-
string InsetCollapsible::contextMenu(BufferView const & bv, int x,
int y) const
{