Fix problem in Widget::getPreferredSize() introduced in commit 01c811e7266cbd5abc8f452b3529007a59dac271.

Min/max sizes are taken into account when getPreferredSize() calls a customized onPreferredSize() method.
This commit is contained in:
David Capello 2010-08-10 23:43:19 -03:00
parent 88305ec84c
commit 58a3447698

View File

@ -1325,7 +1325,11 @@ Size Widget::getPreferredSize()
else {
PreferredSizeEvent ev(this, Size(0, 0));
onPreferredSize(ev);
return ev.getPreferredSize();
Size sz(ev.getPreferredSize());
sz.w = MID(this->min_w, sz.w, this->max_w);
sz.h = MID(this->min_h, sz.h, this->max_h);
return sz;
}
}
@ -1351,7 +1355,11 @@ Size Widget::getPreferredSize(const Size& fitIn)
else {
PreferredSizeEvent ev(this, fitIn);
onPreferredSize(ev);
return ev.getPreferredSize();
Size sz(ev.getPreferredSize());
sz.w = MID(this->min_w, sz.w, this->max_w);
sz.h = MID(this->min_h, sz.h, this->max_h);
return sz;
}
}
@ -1585,8 +1593,6 @@ void Widget::onPreferredSize(PreferredSizeEvent& ev)
JMessage msg = jmessage_new(JM_REQSIZE);
jwidget_send_message(this, msg);
Size sz(msg->reqsize.w, msg->reqsize.h);
sz.w = MID(this->min_w, sz.w, this->max_w);
sz.h = MID(this->min_h, sz.h, this->max_h);
jmessage_free(msg);
ev.setPreferredSize(sz);