Override puaComboBox recalc_bbox, ignore the popup-menu
This commit is contained in:
parent
59a22860ff
commit
2c175f57ae
4 changed files with 38 additions and 2 deletions
|
@ -818,6 +818,7 @@ void ScrolledWaypointList::setScrollPercent(float v)
|
|||
void ScrolledWaypointList::setSize(int w, int h)
|
||||
{
|
||||
updateWantsScroll(w, h);
|
||||
puGroup::setSize(w, h);
|
||||
}
|
||||
|
||||
void ScrolledWaypointList::updateWantsScroll(int w, int h)
|
||||
|
|
|
@ -1376,4 +1376,36 @@ int fgComboBox::checkHit(int b, int up, int x, int y)
|
|||
return r;
|
||||
}
|
||||
|
||||
void fgComboBox::setSize(int w, int h)
|
||||
{
|
||||
puaComboBox::setSize(w, h);
|
||||
recalc_bbox();
|
||||
}
|
||||
|
||||
void fgComboBox::recalc_bbox()
|
||||
{
|
||||
// bug-fix for issue #192
|
||||
// http://code.google.com/p/flightgear-bugs/issues/detail?id=192
|
||||
// puaComboBox is including the height of its popupMenu in the height
|
||||
// computation, which breaks layout computations.
|
||||
// this implementation skips popup-menus
|
||||
|
||||
puBox contents;
|
||||
contents.empty();
|
||||
|
||||
for (puObject *bo = dlist; bo != NULL; bo = bo -> getNextObject()) {
|
||||
if (bo->getType() & PUCLASS_POPUPMENU) {
|
||||
continue;
|
||||
}
|
||||
|
||||
contents.extend (bo -> getBBox()) ;
|
||||
}
|
||||
|
||||
abox.max[0] = abox.min[0] + contents.max[0] ;
|
||||
abox.max[1] = abox.min[1] + contents.max[1] ;
|
||||
|
||||
puObject::recalc_bbox () ;
|
||||
|
||||
}
|
||||
|
||||
// end of dialog.cxx
|
||||
|
|
|
@ -266,8 +266,11 @@ public:
|
|||
|
||||
void update();
|
||||
|
||||
virtual void setSize(int w, int h);
|
||||
|
||||
virtual int checkHit(int b, int up, int x, int y);
|
||||
|
||||
|
||||
virtual void recalc_bbox();
|
||||
private:
|
||||
bool _inHit;
|
||||
};
|
||||
|
|
|
@ -80,7 +80,7 @@ void LayoutWidget::calcPrefSize(int* w, int* h)
|
|||
if(getBool("vertical")) *w = 4*UNIT;
|
||||
else *h = 4*UNIT;
|
||||
} else if (isType("list") || isType("airport-list")
|
||||
|| isType("property-list") || isType("dial")) {
|
||||
|| isType("property-list") || isType("dial") || isType("waypointlist")) {
|
||||
*w = *h = 12*UNIT;
|
||||
} else if (isType("hrule")) {
|
||||
*h = 1;
|
||||
|
|
Loading…
Reference in a new issue