- maxAsc = max(maxAsc, dim.asc);
- maxDesc = max(maxDesc, dim.des);
+
+ // FIXME?: do we need a second metrics call
+ // to get the descent of the text in last par?
+ TextMetrics const & tm =
+ mi.base.bv->textMetrics(tabular.cellInset(cell)->getText(0));
+ int const backdes = tm.last().second->descent();
+
+ switch (tabular.getVAlignment(cell)) {
+ case Tabular::LYX_VALIGN_TOP:
+ tabular.cell_info[r][c].voffset = 0;
+ break;
+ case Tabular::LYX_VALIGN_MIDDLE:
+ tabular.cell_info[r][c].voffset = -(dim.des - backdes - TEXT_TO_INSET_OFFSET)/2;
+ break;
+ case Tabular::LYX_VALIGN_BOTTOM:
+ tabular.cell_info[r][c].voffset = -(dim.des - backdes - TEXT_TO_INSET_OFFSET);
+ break;
+ }
+ maxAsc = max(maxAsc, dim.asc - tabular.cell_info[r][c].voffset);
+ maxDesc = max(maxDesc, dim.des + tabular.cell_info[r][c].voffset);