Merge pull request #88145 from Ratamacue9112/tweak-option-button-property-order

Tweak property order in the inspector for OptionButton
This commit is contained in:
Rémi Verschelde 2024-02-17 18:31:47 +01:00
commit 02f4a66c1f
No known key found for this signature in database
GPG key ID: C3336907360768E1
2 changed files with 17 additions and 3 deletions

View file

@ -336,6 +336,13 @@ void OptionButton::set_item_count(int p_count) {
} }
} }
if (!initialized) {
if (queued_current != current) {
current = queued_current;
}
initialized = true;
}
_refresh_size_cache(); _refresh_size_cache();
notify_property_list_changed(); notify_property_list_changed();
} }
@ -432,7 +439,13 @@ void OptionButton::_select(int p_which, bool p_emit) {
} }
void OptionButton::_select_int(int p_which) { void OptionButton::_select_int(int p_which) {
if (p_which < NONE_SELECTED || p_which >= popup->get_item_count()) { if (p_which < NONE_SELECTED) {
return;
}
if (p_which >= popup->get_item_count()) {
if (!initialized) {
queued_current = p_which;
}
return; return;
} }
_select(p_which, false); _select(p_which, false);
@ -571,11 +584,10 @@ void OptionButton::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_allow_reselect"), &OptionButton::get_allow_reselect); ClassDB::bind_method(D_METHOD("get_allow_reselect"), &OptionButton::get_allow_reselect);
ClassDB::bind_method(D_METHOD("set_disable_shortcuts", "disabled"), &OptionButton::set_disable_shortcuts); ClassDB::bind_method(D_METHOD("set_disable_shortcuts", "disabled"), &OptionButton::set_disable_shortcuts);
// "selected" property must come after "item_count", otherwise GH-10213 occurs.
ADD_ARRAY_COUNT("Items", "item_count", "set_item_count", "get_item_count", "popup/item_");
ADD_PROPERTY(PropertyInfo(Variant::INT, "selected"), "_select_int", "get_selected"); ADD_PROPERTY(PropertyInfo(Variant::INT, "selected"), "_select_int", "get_selected");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "fit_to_longest_item"), "set_fit_to_longest_item", "is_fit_to_longest_item"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "fit_to_longest_item"), "set_fit_to_longest_item", "is_fit_to_longest_item");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "allow_reselect"), "set_allow_reselect", "get_allow_reselect"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "allow_reselect"), "set_allow_reselect", "get_allow_reselect");
ADD_ARRAY_COUNT("Items", "item_count", "set_item_count", "get_item_count", "popup/item_");
ADD_SIGNAL(MethodInfo("item_selected", PropertyInfo(Variant::INT, "index"))); ADD_SIGNAL(MethodInfo("item_selected", PropertyInfo(Variant::INT, "index")));
ADD_SIGNAL(MethodInfo("item_focused", PropertyInfo(Variant::INT, "index"))); ADD_SIGNAL(MethodInfo("item_focused", PropertyInfo(Variant::INT, "index")));

View file

@ -44,6 +44,8 @@ class OptionButton : public Button {
Vector2 _cached_size; Vector2 _cached_size;
bool cache_refresh_pending = false; bool cache_refresh_pending = false;
bool allow_reselect = false; bool allow_reselect = false;
bool initialized = false;
int queued_current = -1;
struct ThemeCache { struct ThemeCache {
Ref<StyleBox> normal; Ref<StyleBox> normal;