diff options
author | Zher Huei Lee <lee.zh.92@gmail.com> | 2016-11-19 21:48:39 +0800 |
---|---|---|
committer | Zher Huei Lee <lee.zh.92@gmail.com> | 2016-11-19 21:48:39 +0800 |
commit | 4b7443aeea13bd007329adba418e60e36dead2ec (patch) | |
tree | 883d1eec48cf6917768f68bb1ded1328666a2916 /scene | |
parent | 959683c3d8f7aaa7469d5758c7698e0da108b406 (diff) |
Flat button support in ButtonArray. Fixes #7153
Diffstat (limited to 'scene')
-rw-r--r-- | scene/gui/button_array.cpp | 20 | ||||
-rw-r--r-- | scene/gui/button_array.h | 4 |
2 files changed, 22 insertions, 2 deletions
diff --git a/scene/gui/button_array.cpp b/scene/gui/button_array.cpp index df1872380d..4acac1d48e 100644 --- a/scene/gui/button_array.cpp +++ b/scene/gui/button_array.cpp @@ -267,9 +267,9 @@ void ButtonArray::_notification(int p_what) { } else { if (hover==i) draw_style_box(style_hover,r); - else + else if (!flat) draw_style_box(style_normal,r); - sbsize=style_selected->get_minimum_size(); + sbsize=style_normal->get_minimum_size(); sbofs=style_normal->get_offset(); f=font_normal; c=color_normal; @@ -388,6 +388,17 @@ ButtonArray::Align ButtonArray::get_align() const { return align; } +void ButtonArray::set_flat(bool p_flat) { + + flat=p_flat; + update(); +} + +bool ButtonArray::is_flat() const { + + return flat; +} + void ButtonArray::add_button(const String& p_text,const String& p_tooltip) { @@ -525,6 +536,8 @@ void ButtonArray::_bind_methods() { ObjectTypeDB::bind_method(_MD("get_button_tooltip","button_idx"),&ButtonArray::get_button_tooltip); ObjectTypeDB::bind_method(_MD("get_button_icon:Texture","button_idx"),&ButtonArray::get_button_icon); ObjectTypeDB::bind_method(_MD("get_button_count"),&ButtonArray::get_button_count); + ObjectTypeDB::bind_method(_MD("set_flat","enabled"),&ButtonArray::set_flat); + ObjectTypeDB::bind_method(_MD("is_flat"),&ButtonArray::is_flat); ObjectTypeDB::bind_method(_MD("get_selected"),&ButtonArray::get_selected); ObjectTypeDB::bind_method(_MD("get_hovered"),&ButtonArray::get_hovered); ObjectTypeDB::bind_method(_MD("set_selected","button_idx"),&ButtonArray::set_selected); @@ -539,6 +552,8 @@ void ButtonArray::_bind_methods() { BIND_CONSTANT( ALIGN_FILL ); BIND_CONSTANT( ALIGN_EXPAND_FILL ); + ADD_PROPERTY( PropertyInfo( Variant::BOOL, "flat" ), _SCS("set_flat"),_SCS("is_flat") ); + ADD_SIGNAL( MethodInfo("button_selected",PropertyInfo(Variant::INT,"button_idx"))); } @@ -549,5 +564,6 @@ ButtonArray::ButtonArray(Orientation p_orientation) { selected=-1; set_focus_mode(FOCUS_ALL); hover=-1; + flat=false; min_button_size = -1; } diff --git a/scene/gui/button_array.h b/scene/gui/button_array.h index 62997a8e36..81be3e41c3 100644 --- a/scene/gui/button_array.h +++ b/scene/gui/button_array.h @@ -59,6 +59,7 @@ private: int selected; int hover; + bool flat; double min_button_size; Vector<Button> buttons; @@ -79,6 +80,9 @@ public: void set_align(Align p_align); Align get_align() const; + void set_flat(bool p_flat); + bool is_flat() const; + void add_button(const String& p_button,const String& p_tooltip=""); void add_icon_button(const Ref<Texture>& p_icon,const String& p_button="",const String& p_tooltip=""); |