summaryrefslogtreecommitdiff
path: root/scene
diff options
context:
space:
mode:
authorZher Huei Lee <lee.zh.92@gmail.com>2016-11-19 21:48:39 +0800
committerZher Huei Lee <lee.zh.92@gmail.com>2016-11-19 21:48:39 +0800
commit4b7443aeea13bd007329adba418e60e36dead2ec (patch)
tree883d1eec48cf6917768f68bb1ded1328666a2916 /scene
parent959683c3d8f7aaa7469d5758c7698e0da108b406 (diff)
Flat button support in ButtonArray. Fixes #7153
Diffstat (limited to 'scene')
-rw-r--r--scene/gui/button_array.cpp20
-rw-r--r--scene/gui/button_array.h4
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="");