diff options
| author | Zher Huei Lee | 2016-10-12 22:54:04 +0100 |
|---|---|---|
| committer | Rémi Verschelde | 2016-10-17 20:48:25 +0200 |
| commit | a8502ae6f6077d36fd4e9423d83dd5a7430ccb77 (patch) | |
| tree | 644e25aafe43f155286e152d2ef8cfde9fe4f616 /scene/gui/button_array.cpp | |
| parent | 04255541a0dcd4fdeb7028707ab5907785ea249d (diff) | |
| download | godot-a8502ae6f6077d36fd4e9423d83dd5a7430ccb77.tar.gz godot-a8502ae6f6077d36fd4e9423d83dd5a7430ccb77.tar.zst godot-a8502ae6f6077d36fd4e9423d83dd5a7430ccb77.zip | |
Fixes for ButtonArray
Fixed hover sometimes not resetting when mouse leaves widget.
Fixed text position not taking into account stylebox's content margins.
(cherry picked from commit f5830e0973f2d868661ccbf78f4eedaec4e36cc0)
Diffstat (limited to 'scene/gui/button_array.cpp')
| -rw-r--r-- | scene/gui/button_array.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/scene/gui/button_array.cpp b/scene/gui/button_array.cpp index be4829611..a83a0cd2a 100644 --- a/scene/gui/button_array.cpp +++ b/scene/gui/button_array.cpp @@ -168,8 +168,12 @@ Size2 ButtonArray::get_minimum_size() const { void ButtonArray::_notification(int p_what) { switch(p_what) { + case NOTIFICATION_MOUSE_EXIT:{ + hover=-1; + update(); + }break; case NOTIFICATION_READY:{ - MethodInfo mi; + MethodInfo mi; mi.name="mouse_sub_enter"; add_user_signal(mi); @@ -245,8 +249,12 @@ void ButtonArray::_notification(int p_what) { Ref<Font> f; Color c; + Point2 sbsize; + Point2 sbofs; if (i==selected) { draw_style_box(style_selected,r); + sbsize=style_selected->get_minimum_size(); + sbofs=style_selected->get_offset(); f=font_selected; c=color_selected; if (has_focus()) @@ -256,6 +264,8 @@ void ButtonArray::_notification(int p_what) { draw_style_box(style_hover,r); else draw_style_box(style_normal,r); + sbsize=style_selected->get_minimum_size(); + sbofs=style_normal->get_offset(); f=font_normal; c=color_normal; } @@ -265,7 +275,7 @@ void ButtonArray::_notification(int p_what) { 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()) { draw_texture(buttons[i].icon,r.pos+Point2(text_ofs.x,Math::floor((r.size.height-buttons[i].icon->get_height())/2.0))); |
