diff options
author | Sebastian Geerken <devnull@localhost> | 2015-02-02 14:37:53 +0100 |
---|---|---|
committer | Sebastian Geerken <devnull@localhost> | 2015-02-02 14:37:53 +0100 |
commit | cdc7bebac4c0fa7fe198c4b72c62948ffeb12815 (patch) | |
tree | dc68963df5308584ef9a920ff253fa07eb03f32f /dw/oofposrelmgr.cc | |
parent | 76ef5d3794d67fed2e6ff65d48781674d335309b (diff) |
Fixed too large widget reference space for relatively positioned elements.
Diffstat (limited to 'dw/oofposrelmgr.cc')
-rw-r--r-- | dw/oofposrelmgr.cc | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/dw/oofposrelmgr.cc b/dw/oofposrelmgr.cc index f1bae6d8..8980e079 100644 --- a/dw/oofposrelmgr.cc +++ b/dw/oofposrelmgr.cc @@ -56,7 +56,20 @@ void OOFPosRelMgr::markExtremesChange (int ref) void OOFPosRelMgr::calcWidgetRefSize (Widget *widget, Requisition *size) { DBG_OBJ_ENTER ("resize.oofm", 0, "calcWidgetRefSize", "%p", widget); + widget->sizeRequest (size); + + // In some cases, the widget has been enlarged for widgets out of + // flow. Partly, this is done by adding "extra space"; however, at + // this point, the extra space is not relevant here. See + // "oofawarewidget.cc" for a calculation of RequisitionWithoutOOF. + // (Notice also that Widget::sizeRequest has to be called in all + // cases.) + + if (widget->instanceOf (OOFAwareWidget::CLASS_ID)) + *size = *((OOFAwareWidget*)widget)->getRequisitionWithoutOOF (); + + DBG_OBJ_LEAVE_VAL ("%d * (%d + %d)", size->width, size->ascent, size->descent); } |