summaryrefslogtreecommitdiff
path: root/scene/gui
diff options
context:
space:
mode:
authorMichael Alexsander <michaelalexsander@protonmail.com>2019-12-28 12:03:04 -0300
committerMichael Alexsander <michaelalexsander@protonmail.com>2019-12-28 12:03:04 -0300
commitc4cd2c44c8072ae4619592db487972f6b8baf57f (patch)
treeb926b4143a9b91a6fda9c847cf05faaa0617a41e /scene/gui
parent318c69351624f7794c51b5385d252af397c0404a (diff)
Make OptionButton itself take into account the arrow margin instead of relying on the theme
Diffstat (limited to 'scene/gui')
-rw-r--r--scene/gui/option_button.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/scene/gui/option_button.cpp b/scene/gui/option_button.cpp
index de8df4215d..f9214c3b1e 100644
--- a/scene/gui/option_button.cpp
+++ b/scene/gui/option_button.cpp
@@ -35,8 +35,9 @@ Size2 OptionButton::get_minimum_size() const {
Size2 minsize = Button::get_minimum_size();
- if (has_icon("arrow"))
+ if (has_icon("arrow")) {
minsize.width += Control::get_icon("arrow")->get_width() + get_constant("hseparation");
+ }
return minsize;
}
@@ -73,6 +74,12 @@ void OptionButton::_notification(int p_what) {
Point2 ofs(size.width - arrow->get_width() - get_constant("arrow_margin"), int(Math::abs((size.height - arrow->get_height()) / 2)));
arrow->draw(ci, ofs, clr);
} break;
+ case NOTIFICATION_THEME_CHANGED: {
+
+ if (has_icon("arrow")) {
+ _set_internal_margin(MARGIN_RIGHT, Control::get_icon("arrow")->get_width());
+ }
+ } break;
case NOTIFICATION_VISIBILITY_CHANGED: {
if (!is_visible_in_tree()) {
@@ -327,7 +334,7 @@ void OptionButton::_bind_methods() {
ClassDB::bind_method(D_METHOD("_get_items"), &OptionButton::_get_items);
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "items", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_items", "_get_items");
- // "selected" property must come after "items", otherwise GH-10213 occurs
+ // "selected" property must come after "items", otherwise GH-10213 occurs.
ADD_PROPERTY(PropertyInfo(Variant::INT, "selected"), "_select_int", "get_selected");
ADD_SIGNAL(MethodInfo("item_selected", PropertyInfo(Variant::INT, "id")));
ADD_SIGNAL(MethodInfo("item_focused", PropertyInfo(Variant::INT, "id")));
@@ -339,6 +346,9 @@ OptionButton::OptionButton() {
set_toggle_mode(true);
set_text_align(ALIGN_LEFT);
set_action_mode(ACTION_MODE_BUTTON_PRESS);
+ if (has_icon("arrow")) {
+ _set_internal_margin(MARGIN_RIGHT, Control::get_icon("arrow")->get_width());
+ }
popup = memnew(PopupMenu);
popup->hide();