- //lyxerr << "InsetCollapsable::metrics: width: " << mi.base.textwidth << endl;
- dimension_collapsed(dim);
- if (!collapsed_) {
- Dimension insetdim;
- inset.metrics(mi, insetdim);
- dim.des += insetdim.height() + TEXT_TO_BOTTOM_OFFSET;
- dim.wid = max(dim.wid, insetdim.wid);
+ autoOpen_ = mi.base.bv->cursor().isInside(this);
+ mi.base.textwidth -= 2 * TEXT_TO_INSET_OFFSET;
+
+ if (status() == Inlined) {
+ InsetText::metrics(mi, dim);
+ } else {
+ dim = dimensionCollapsed();
+ if (status() == Open) {
+ InsetText::metrics(mi, textdim_);
+ // This expression should not contain mi.base.texwidth
+ openinlined_ = !hasFixedWidth()
+ && textdim_.wid < 0.5 * mi.base.bv->workWidth();
+ 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;
+ } else {
+ dim.des += textdim_.height() + TEXT_TO_BOTTOM_OFFSET;
+ dim.wid = max(dim.wid, textdim_.wid);
+ }
+ }