From f5830e0973f2d868661ccbf78f4eedaec4e36cc0 Mon Sep 17 00:00:00 2001 From: Zher Huei Lee Date: Wed, 12 Oct 2016 22:54:04 +0100 Subject: Fixes for ButtonArray Fixed hover sometimes not resetting when mouse leaves widget. Fixed text position not taking into account stylebox's content margins. --- scene/gui/button_array.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/scene/gui/button_array.cpp b/scene/gui/button_array.cpp index be48296110..a83a0cd2a0 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 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))); -- cgit v1.2.3