Fixes for ButtonArray
Fixed hover sometimes not resetting when mouse leaves widget. Fixed text position not taking into account stylebox's content margins.
This commit is contained in:
parent
12843167ca
commit
f5830e0973
1 changed files with 12 additions and 2 deletions
|
@ -168,8 +168,12 @@ Size2 ButtonArray::get_minimum_size() const {
|
||||||
void ButtonArray::_notification(int p_what) {
|
void ButtonArray::_notification(int p_what) {
|
||||||
|
|
||||||
switch(p_what) {
|
switch(p_what) {
|
||||||
|
case NOTIFICATION_MOUSE_EXIT:{
|
||||||
|
hover=-1;
|
||||||
|
update();
|
||||||
|
}break;
|
||||||
case NOTIFICATION_READY:{
|
case NOTIFICATION_READY:{
|
||||||
MethodInfo mi;
|
MethodInfo mi;
|
||||||
mi.name="mouse_sub_enter";
|
mi.name="mouse_sub_enter";
|
||||||
|
|
||||||
add_user_signal(mi);
|
add_user_signal(mi);
|
||||||
|
@ -245,8 +249,12 @@ void ButtonArray::_notification(int p_what) {
|
||||||
|
|
||||||
Ref<Font> f;
|
Ref<Font> f;
|
||||||
Color c;
|
Color c;
|
||||||
|
Point2 sbsize;
|
||||||
|
Point2 sbofs;
|
||||||
if (i==selected) {
|
if (i==selected) {
|
||||||
draw_style_box(style_selected,r);
|
draw_style_box(style_selected,r);
|
||||||
|
sbsize=style_selected->get_minimum_size();
|
||||||
|
sbofs=style_selected->get_offset();
|
||||||
f=font_selected;
|
f=font_selected;
|
||||||
c=color_selected;
|
c=color_selected;
|
||||||
if (has_focus())
|
if (has_focus())
|
||||||
|
@ -256,6 +264,8 @@ void ButtonArray::_notification(int p_what) {
|
||||||
draw_style_box(style_hover,r);
|
draw_style_box(style_hover,r);
|
||||||
else
|
else
|
||||||
draw_style_box(style_normal,r);
|
draw_style_box(style_normal,r);
|
||||||
|
sbsize=style_selected->get_minimum_size();
|
||||||
|
sbofs=style_normal->get_offset();
|
||||||
f=font_normal;
|
f=font_normal;
|
||||||
c=color_normal;
|
c=color_normal;
|
||||||
}
|
}
|
||||||
|
@ -265,7 +275,7 @@ void ButtonArray::_notification(int p_what) {
|
||||||
|
|
||||||
ssize.x+=buttons[i].icon->get_width();
|
ssize.x+=buttons[i].icon->get_width();
|
||||||
}
|
}
|
||||||
Point2 text_ofs=((r.size-ssize)/2.0+Point2(0,f->get_ascent())).floor();
|
Point2 text_ofs=((r.size-ssize-sbsize)/2.0+Point2(0,f->get_ascent())).floor()+sbofs;
|
||||||
if (buttons[i].icon.is_valid()) {
|
if (buttons[i].icon.is_valid()) {
|
||||||
|
|
||||||
draw_texture(buttons[i].icon,r.pos+Point2(text_ofs.x,Math::floor((r.size.height-buttons[i].icon->get_height())/2.0)));
|
draw_texture(buttons[i].icon,r.pos+Point2(text_ofs.x,Math::floor((r.size.height-buttons[i].icon->get_height())/2.0)));
|
||||||
|
|
Loading…
Reference in a new issue