feat: modules moved and engine moved to submodule
This commit is contained in:
parent
dfb5e645cd
commit
c33d2130cc
5136 changed files with 225275 additions and 64485 deletions
|
|
@ -45,7 +45,7 @@ void ItemList::_shape_text(int p_idx) {
|
|||
}
|
||||
item.text_buf->add_string(item.xl_text, theme_cache.font, theme_cache.font_size, item.language);
|
||||
if (icon_mode == ICON_MODE_TOP && max_text_lines > 0) {
|
||||
item.text_buf->set_break_flags(TextServer::BREAK_MANDATORY | TextServer::BREAK_WORD_BOUND | TextServer::BREAK_GRAPHEME_BOUND | TextServer::BREAK_TRIM_EDGE_SPACES);
|
||||
item.text_buf->set_break_flags(TextServer::BREAK_MANDATORY | TextServer::BREAK_WORD_BOUND | TextServer::BREAK_GRAPHEME_BOUND | TextServer::BREAK_TRIM_START_EDGE_SPACES | TextServer::BREAK_TRIM_END_EDGE_SPACES);
|
||||
} else {
|
||||
item.text_buf->set_break_flags(TextServer::BREAK_NONE);
|
||||
}
|
||||
|
|
@ -64,6 +64,7 @@ int ItemList::add_item(const String &p_item, const Ref<Texture2D> &p_texture, bo
|
|||
items.write[item_id].xl_text = _atr(item_id, p_item);
|
||||
_shape_text(item_id);
|
||||
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
shape_changed = true;
|
||||
notify_property_list_changed();
|
||||
|
|
@ -77,6 +78,7 @@ int ItemList::add_icon_item(const Ref<Texture2D> &p_item, bool p_selectable) {
|
|||
items.push_back(item);
|
||||
int item_id = items.size() - 1;
|
||||
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
shape_changed = true;
|
||||
notify_property_list_changed();
|
||||
|
|
@ -96,6 +98,7 @@ void ItemList::set_item_text(int p_idx, const String &p_text) {
|
|||
items.write[p_idx].text = p_text;
|
||||
items.write[p_idx].xl_text = _atr(p_idx, p_text);
|
||||
_shape_text(p_idx);
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
shape_changed = true;
|
||||
}
|
||||
|
|
@ -114,6 +117,7 @@ void ItemList::set_item_text_direction(int p_idx, Control::TextDirection p_text_
|
|||
if (items[p_idx].text_direction != p_text_direction) {
|
||||
items.write[p_idx].text_direction = p_text_direction;
|
||||
_shape_text(p_idx);
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
}
|
||||
}
|
||||
|
|
@ -131,6 +135,7 @@ void ItemList::set_item_language(int p_idx, const String &p_language) {
|
|||
if (items[p_idx].language != p_language) {
|
||||
items.write[p_idx].language = p_language;
|
||||
_shape_text(p_idx);
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
}
|
||||
}
|
||||
|
|
@ -149,6 +154,7 @@ void ItemList::set_item_auto_translate_mode(int p_idx, AutoTranslateMode p_mode)
|
|||
items.write[p_idx].auto_translate_mode = p_mode;
|
||||
items.write[p_idx].xl_text = _atr(p_idx, items[p_idx].text);
|
||||
_shape_text(p_idx);
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
}
|
||||
}
|
||||
|
|
@ -163,7 +169,11 @@ void ItemList::set_item_tooltip_enabled(int p_idx, const bool p_enabled) {
|
|||
p_idx += get_item_count();
|
||||
}
|
||||
ERR_FAIL_INDEX(p_idx, items.size());
|
||||
items.write[p_idx].tooltip_enabled = p_enabled;
|
||||
if (items[p_idx].tooltip_enabled != p_enabled) {
|
||||
items.write[p_idx].tooltip_enabled = p_enabled;
|
||||
items.write[p_idx].accessibility_item_dirty = true;
|
||||
queue_accessibility_update();
|
||||
}
|
||||
}
|
||||
|
||||
bool ItemList::is_item_tooltip_enabled(int p_idx) const {
|
||||
|
|
@ -182,6 +192,7 @@ void ItemList::set_item_tooltip(int p_idx, const String &p_tooltip) {
|
|||
}
|
||||
|
||||
items.write[p_idx].tooltip = p_tooltip;
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
shape_changed = true;
|
||||
}
|
||||
|
|
@ -348,6 +359,8 @@ void ItemList::set_item_selectable(int p_idx, bool p_selectable) {
|
|||
ERR_FAIL_INDEX(p_idx, items.size());
|
||||
|
||||
items.write[p_idx].selectable = p_selectable;
|
||||
items.write[p_idx].accessibility_item_dirty = true;
|
||||
queue_accessibility_update();
|
||||
}
|
||||
|
||||
bool ItemList::is_item_selectable(int p_idx) const {
|
||||
|
|
@ -366,6 +379,8 @@ void ItemList::set_item_disabled(int p_idx, bool p_disabled) {
|
|||
}
|
||||
|
||||
items.write[p_idx].disabled = p_disabled;
|
||||
items.write[p_idx].accessibility_item_dirty = true;
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
}
|
||||
|
||||
|
|
@ -403,7 +418,10 @@ void ItemList::select(int p_idx, bool p_single) {
|
|||
}
|
||||
|
||||
for (int i = 0; i < items.size(); i++) {
|
||||
items.write[i].selected = p_idx == i;
|
||||
if (items.write[i].selected != (p_idx == i)) {
|
||||
items.write[i].selected = (p_idx == i);
|
||||
items.write[i].accessibility_item_dirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
current = p_idx;
|
||||
|
|
@ -411,8 +429,10 @@ void ItemList::select(int p_idx, bool p_single) {
|
|||
} else {
|
||||
if (items[p_idx].selectable && !items[p_idx].disabled) {
|
||||
items.write[p_idx].selected = true;
|
||||
items.write[p_idx].accessibility_item_dirty = true;
|
||||
}
|
||||
}
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
}
|
||||
|
||||
|
|
@ -425,18 +445,24 @@ void ItemList::deselect(int p_idx) {
|
|||
} else {
|
||||
items.write[p_idx].selected = false;
|
||||
}
|
||||
items.write[p_idx].accessibility_item_dirty = true;
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
}
|
||||
|
||||
void ItemList::deselect_all() {
|
||||
if (items.size() < 1) {
|
||||
if (items.is_empty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0; i < items.size(); i++) {
|
||||
items.write[i].selected = false;
|
||||
if (items.write[i].selected) {
|
||||
items.write[i].selected = false;
|
||||
items.write[i].accessibility_item_dirty = true;
|
||||
}
|
||||
}
|
||||
current = -1;
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
}
|
||||
|
||||
|
|
@ -457,6 +483,7 @@ void ItemList::set_current(int p_current) {
|
|||
select(p_current, true);
|
||||
} else {
|
||||
current = p_current;
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
}
|
||||
}
|
||||
|
|
@ -477,6 +504,7 @@ void ItemList::move_item(int p_from_idx, int p_to_idx) {
|
|||
items.remove_at(p_from_idx);
|
||||
items.insert(p_to_idx, item);
|
||||
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
shape_changed = true;
|
||||
notify_property_list_changed();
|
||||
|
|
@ -489,7 +517,17 @@ void ItemList::set_item_count(int p_count) {
|
|||
return;
|
||||
}
|
||||
|
||||
if (items.size() > p_count) {
|
||||
for (int i = p_count; i < items.size(); i++) {
|
||||
if (items[i].accessibility_item_element.is_valid()) {
|
||||
DisplayServer::get_singleton()->accessibility_free_element(items.write[i].accessibility_item_element);
|
||||
items.write[i].accessibility_item_element = RID();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
items.resize(p_count);
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
shape_changed = true;
|
||||
notify_property_list_changed();
|
||||
|
|
@ -502,10 +540,15 @@ int ItemList::get_item_count() const {
|
|||
void ItemList::remove_item(int p_idx) {
|
||||
ERR_FAIL_INDEX(p_idx, items.size());
|
||||
|
||||
if (items[p_idx].accessibility_item_element.is_valid()) {
|
||||
DisplayServer::get_singleton()->accessibility_free_element(items.write[p_idx].accessibility_item_element);
|
||||
items.write[p_idx].accessibility_item_element = RID();
|
||||
}
|
||||
items.remove_at(p_idx);
|
||||
if (current == p_idx) {
|
||||
current = -1;
|
||||
}
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
shape_changed = true;
|
||||
defer_select_single = -1;
|
||||
|
|
@ -513,9 +556,16 @@ void ItemList::remove_item(int p_idx) {
|
|||
}
|
||||
|
||||
void ItemList::clear() {
|
||||
for (int i = 0; i < items.size(); i++) {
|
||||
if (items[i].accessibility_item_element.is_valid()) {
|
||||
DisplayServer::get_singleton()->accessibility_free_element(items.write[i].accessibility_item_element);
|
||||
items.write[i].accessibility_item_element = RID();
|
||||
}
|
||||
}
|
||||
items.clear();
|
||||
current = -1;
|
||||
ensure_selected_visible = false;
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
shape_changed = true;
|
||||
defer_select_single = -1;
|
||||
|
|
@ -558,13 +608,14 @@ void ItemList::set_max_text_lines(int p_lines) {
|
|||
max_text_lines = p_lines;
|
||||
for (int i = 0; i < items.size(); i++) {
|
||||
if (icon_mode == ICON_MODE_TOP && max_text_lines > 0) {
|
||||
items.write[i].text_buf->set_break_flags(TextServer::BREAK_MANDATORY | TextServer::BREAK_WORD_BOUND | TextServer::BREAK_GRAPHEME_BOUND | TextServer::BREAK_TRIM_EDGE_SPACES);
|
||||
items.write[i].text_buf->set_break_flags(TextServer::BREAK_MANDATORY | TextServer::BREAK_WORD_BOUND | TextServer::BREAK_GRAPHEME_BOUND | TextServer::BREAK_TRIM_START_EDGE_SPACES | TextServer::BREAK_TRIM_END_EDGE_SPACES);
|
||||
items.write[i].text_buf->set_max_lines_visible(p_lines);
|
||||
} else {
|
||||
items.write[i].text_buf->set_break_flags(TextServer::BREAK_NONE);
|
||||
}
|
||||
}
|
||||
shape_changed = true;
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
}
|
||||
}
|
||||
|
|
@ -581,6 +632,7 @@ void ItemList::set_max_columns(int p_amount) {
|
|||
}
|
||||
|
||||
max_columns = p_amount;
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
shape_changed = true;
|
||||
}
|
||||
|
|
@ -595,6 +647,7 @@ void ItemList::set_select_mode(SelectMode p_mode) {
|
|||
}
|
||||
|
||||
select_mode = p_mode;
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
}
|
||||
|
||||
|
|
@ -608,7 +661,7 @@ void ItemList::set_icon_mode(IconMode p_mode) {
|
|||
icon_mode = p_mode;
|
||||
for (int i = 0; i < items.size(); i++) {
|
||||
if (icon_mode == ICON_MODE_TOP && max_text_lines > 0) {
|
||||
items.write[i].text_buf->set_break_flags(TextServer::BREAK_MANDATORY | TextServer::BREAK_WORD_BOUND | TextServer::BREAK_GRAPHEME_BOUND | TextServer::BREAK_TRIM_EDGE_SPACES);
|
||||
items.write[i].text_buf->set_break_flags(TextServer::BREAK_MANDATORY | TextServer::BREAK_WORD_BOUND | TextServer::BREAK_GRAPHEME_BOUND | TextServer::BREAK_TRIM_START_EDGE_SPACES | TextServer::BREAK_TRIM_END_EDGE_SPACES);
|
||||
} else {
|
||||
items.write[i].text_buf->set_break_flags(TextServer::BREAK_NONE);
|
||||
}
|
||||
|
|
@ -694,7 +747,9 @@ void ItemList::gui_input(const Ref<InputEvent> &p_event) {
|
|||
if (mm.is_valid()) {
|
||||
int closest = get_item_at_position(mm->get_position(), true);
|
||||
if (closest != hovered) {
|
||||
prev_hovered = hovered;
|
||||
hovered = closest;
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
}
|
||||
}
|
||||
|
|
@ -834,6 +889,21 @@ void ItemList::gui_input(const Ref<InputEvent> &p_event) {
|
|||
}
|
||||
|
||||
if (p_event->is_pressed() && items.size() > 0) {
|
||||
if (p_event->is_action("ui_menu", true)) {
|
||||
if (current != -1 && allow_rmb_select) {
|
||||
int i = current;
|
||||
|
||||
if (items[i].disabled) {
|
||||
// Don't emit any signal or do any action with clicked item when disabled.
|
||||
return;
|
||||
}
|
||||
|
||||
emit_signal(SNAME("item_clicked"), i, get_item_rect(i).position, MouseButton::RIGHT);
|
||||
|
||||
accept_event();
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (p_event->is_action("ui_up", true)) {
|
||||
if (!search_string.is_empty()) {
|
||||
uint64_t now = OS::get_singleton()->get_ticks_msec();
|
||||
|
|
@ -1076,8 +1146,131 @@ static Rect2 _adjust_to_max_size(Size2 p_size, Size2 p_max_size) {
|
|||
return Rect2(ofs_x, ofs_y, tex_width, tex_height);
|
||||
}
|
||||
|
||||
RID ItemList::get_focused_accessibility_element() const {
|
||||
if (current == -1) {
|
||||
return get_accessibility_element();
|
||||
} else {
|
||||
const Item &item = items[current];
|
||||
return item.accessibility_item_element;
|
||||
}
|
||||
}
|
||||
|
||||
void ItemList::_accessibility_action_scroll_set(const Variant &p_data) {
|
||||
const Point2 &pos = p_data;
|
||||
scroll_bar_h->set_value(pos.x);
|
||||
scroll_bar_v->set_value(pos.y);
|
||||
}
|
||||
|
||||
void ItemList::_accessibility_action_scroll_up(const Variant &p_data) {
|
||||
scroll_bar_v->set_value(scroll_bar_v->get_value() - scroll_bar_v->get_page() / 4);
|
||||
}
|
||||
|
||||
void ItemList::_accessibility_action_scroll_down(const Variant &p_data) {
|
||||
scroll_bar_v->set_value(scroll_bar_v->get_value() + scroll_bar_v->get_page() / 4);
|
||||
}
|
||||
|
||||
void ItemList::_accessibility_action_scroll_left(const Variant &p_data) {
|
||||
scroll_bar_h->set_value(scroll_bar_h->get_value() - scroll_bar_h->get_page() / 4);
|
||||
}
|
||||
|
||||
void ItemList::_accessibility_action_scroll_right(const Variant &p_data) {
|
||||
scroll_bar_h->set_value(scroll_bar_h->get_value() + scroll_bar_h->get_page() / 4);
|
||||
}
|
||||
|
||||
void ItemList::_accessibility_action_scroll_into_view(const Variant &p_data, int p_index) {
|
||||
ERR_FAIL_INDEX(p_index, items.size());
|
||||
|
||||
Rect2 r = items[p_index].rect_cache;
|
||||
int from_v = scroll_bar_v->get_value();
|
||||
int to_v = from_v + scroll_bar_v->get_page();
|
||||
int from_h = scroll_bar_h->get_value();
|
||||
int to_h = from_h + scroll_bar_h->get_page();
|
||||
|
||||
if (r.position.y < from_v) {
|
||||
scroll_bar_v->set_value(r.position.y);
|
||||
} else if (r.position.y + r.size.y > to_v) {
|
||||
scroll_bar_v->set_value(r.position.y + r.size.y - (to_v - from_v));
|
||||
}
|
||||
if (r.position.x < from_h) {
|
||||
scroll_bar_h->set_value(r.position.x);
|
||||
} else if (r.position.x + r.size.x > to_h) {
|
||||
scroll_bar_h->set_value(r.position.x + r.size.x - (to_h - from_h));
|
||||
}
|
||||
}
|
||||
|
||||
void ItemList::_accessibility_action_focus(const Variant &p_data, int p_index) {
|
||||
select(p_index);
|
||||
}
|
||||
|
||||
void ItemList::_accessibility_action_blur(const Variant &p_data, int p_index) {
|
||||
deselect(p_index);
|
||||
}
|
||||
|
||||
void ItemList::_notification(int p_what) {
|
||||
switch (p_what) {
|
||||
case NOTIFICATION_EXIT_TREE:
|
||||
case NOTIFICATION_ACCESSIBILITY_INVALIDATE: {
|
||||
for (int i = 0; i < items.size(); i++) {
|
||||
items.write[i].accessibility_item_element = RID();
|
||||
}
|
||||
accessibility_scroll_element = RID();
|
||||
} break;
|
||||
|
||||
case NOTIFICATION_ACCESSIBILITY_UPDATE: {
|
||||
RID ae = get_accessibility_element();
|
||||
ERR_FAIL_COND(ae.is_null());
|
||||
|
||||
force_update_list_size();
|
||||
|
||||
DisplayServer::get_singleton()->accessibility_update_set_role(ae, DisplayServer::AccessibilityRole::ROLE_LIST_BOX);
|
||||
DisplayServer::get_singleton()->accessibility_update_set_list_item_count(ae, items.size());
|
||||
DisplayServer::get_singleton()->accessibility_update_set_flag(ae, DisplayServer::AccessibilityFlags::FLAG_MULTISELECTABLE, select_mode == SELECT_MULTI);
|
||||
DisplayServer::get_singleton()->accessibility_update_add_action(ae, DisplayServer::AccessibilityAction::ACTION_SCROLL_DOWN, callable_mp(this, &ItemList::_accessibility_action_scroll_down));
|
||||
DisplayServer::get_singleton()->accessibility_update_add_action(ae, DisplayServer::AccessibilityAction::ACTION_SCROLL_UP, callable_mp(this, &ItemList::_accessibility_action_scroll_up));
|
||||
DisplayServer::get_singleton()->accessibility_update_add_action(ae, DisplayServer::AccessibilityAction::ACTION_SCROLL_LEFT, callable_mp(this, &ItemList::_accessibility_action_scroll_left));
|
||||
DisplayServer::get_singleton()->accessibility_update_add_action(ae, DisplayServer::AccessibilityAction::ACTION_SCROLL_RIGHT, callable_mp(this, &ItemList::_accessibility_action_scroll_right));
|
||||
DisplayServer::get_singleton()->accessibility_update_add_action(ae, DisplayServer::AccessibilityAction::ACTION_SET_SCROLL_OFFSET, callable_mp(this, &ItemList::_accessibility_action_scroll_set));
|
||||
|
||||
if (accessibility_scroll_element.is_null()) {
|
||||
accessibility_scroll_element = DisplayServer::get_singleton()->accessibility_create_sub_element(ae, DisplayServer::AccessibilityRole::ROLE_CONTAINER);
|
||||
}
|
||||
|
||||
Transform2D scroll_xform;
|
||||
scroll_xform.set_origin(Vector2i(-scroll_bar_h->get_value(), -scroll_bar_v->get_value()));
|
||||
DisplayServer::get_singleton()->accessibility_update_set_transform(accessibility_scroll_element, scroll_xform);
|
||||
DisplayServer::get_singleton()->accessibility_update_set_bounds(accessibility_scroll_element, Rect2(0, 0, scroll_bar_h->get_max(), scroll_bar_v->get_max()));
|
||||
|
||||
for (int i = 0; i < items.size(); i++) {
|
||||
const Item &item = items.write[i];
|
||||
|
||||
if (item.accessibility_item_element.is_null()) {
|
||||
item.accessibility_item_element = DisplayServer::get_singleton()->accessibility_create_sub_element(accessibility_scroll_element, DisplayServer::AccessibilityRole::ROLE_LIST_BOX_OPTION);
|
||||
item.accessibility_item_dirty = true;
|
||||
}
|
||||
if (item.accessibility_item_dirty || i == hovered || i == prev_hovered) {
|
||||
DisplayServer::get_singleton()->accessibility_update_add_action(item.accessibility_item_element, DisplayServer::AccessibilityAction::ACTION_SCROLL_INTO_VIEW, callable_mp(this, &ItemList::_accessibility_action_scroll_into_view).bind(i));
|
||||
DisplayServer::get_singleton()->accessibility_update_add_action(item.accessibility_item_element, DisplayServer::AccessibilityAction::ACTION_FOCUS, callable_mp(this, &ItemList::_accessibility_action_focus).bind(i));
|
||||
DisplayServer::get_singleton()->accessibility_update_add_action(item.accessibility_item_element, DisplayServer::AccessibilityAction::ACTION_BLUR, callable_mp(this, &ItemList::_accessibility_action_blur).bind(i));
|
||||
|
||||
DisplayServer::get_singleton()->accessibility_update_set_list_item_index(item.accessibility_item_element, i);
|
||||
DisplayServer::get_singleton()->accessibility_update_set_list_item_level(item.accessibility_item_element, 0);
|
||||
DisplayServer::get_singleton()->accessibility_update_set_list_item_selected(item.accessibility_item_element, item.selected);
|
||||
DisplayServer::get_singleton()->accessibility_update_set_name(item.accessibility_item_element, item.xl_text);
|
||||
DisplayServer::get_singleton()->accessibility_update_set_flag(item.accessibility_item_element, DisplayServer::AccessibilityFlags::FLAG_DISABLED, item.disabled);
|
||||
if (item.tooltip_enabled) {
|
||||
DisplayServer::get_singleton()->accessibility_update_set_tooltip(item.accessibility_item_element, item.tooltip);
|
||||
}
|
||||
|
||||
Rect2 r = get_item_rect(i);
|
||||
DisplayServer::get_singleton()->accessibility_update_set_bounds(item.accessibility_item_element, Rect2(r.position, r.size));
|
||||
|
||||
item.accessibility_item_dirty = false;
|
||||
}
|
||||
}
|
||||
prev_hovered = -1;
|
||||
|
||||
} break;
|
||||
|
||||
case NOTIFICATION_RESIZED: {
|
||||
shape_changed = true;
|
||||
queue_redraw();
|
||||
|
|
@ -1089,6 +1282,7 @@ void ItemList::_notification(int p_what) {
|
|||
_shape_text(i);
|
||||
}
|
||||
shape_changed = true;
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
} break;
|
||||
case NOTIFICATION_TRANSLATION_CHANGED: {
|
||||
|
|
@ -1097,6 +1291,7 @@ void ItemList::_notification(int p_what) {
|
|||
_shape_text(i);
|
||||
}
|
||||
shape_changed = true;
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
} break;
|
||||
|
||||
|
|
@ -1537,6 +1732,8 @@ void ItemList::force_update_list_size() {
|
|||
|
||||
items.write[i].rect_cache.size = minsize;
|
||||
items.write[i].min_rect_cache.size = minsize;
|
||||
|
||||
items.write[i].accessibility_item_dirty = true;
|
||||
}
|
||||
|
||||
int fit_size = size.x - theme_cache.panel_style->get_minimum_size().width;
|
||||
|
|
@ -1661,7 +1858,9 @@ void ItemList::_scroll_changed(double) {
|
|||
|
||||
void ItemList::_mouse_exited() {
|
||||
if (hovered > -1) {
|
||||
prev_hovered = hovered;
|
||||
hovered = -1;
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
}
|
||||
}
|
||||
|
|
@ -1763,6 +1962,7 @@ String ItemList::get_tooltip(const Point2 &p_pos) const {
|
|||
|
||||
void ItemList::sort_items_by_text() {
|
||||
items.sort();
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
shape_changed = true;
|
||||
|
||||
|
|
@ -1872,6 +2072,7 @@ void ItemList::set_auto_width(bool p_enable) {
|
|||
|
||||
auto_width = p_enable;
|
||||
shape_changed = true;
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
}
|
||||
|
||||
|
|
@ -1886,6 +2087,7 @@ void ItemList::set_auto_height(bool p_enable) {
|
|||
|
||||
auto_height = p_enable;
|
||||
shape_changed = true;
|
||||
queue_accessibility_update();
|
||||
queue_redraw();
|
||||
}
|
||||
|
||||
|
|
@ -2078,7 +2280,7 @@ void ItemList::_bind_methods() {
|
|||
ADD_PROPERTY(PropertyInfo(Variant::INT, "max_text_lines", PROPERTY_HINT_RANGE, "1,10,1,or_greater"), "set_max_text_lines", "get_max_text_lines");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "auto_width"), "set_auto_width", "has_auto_width");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "auto_height"), "set_auto_height", "has_auto_height");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "text_overrun_behavior", PROPERTY_HINT_ENUM, "Trim Nothing,Trim Characters,Trim Words,Ellipsis,Word Ellipsis"), "set_text_overrun_behavior", "get_text_overrun_behavior");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "text_overrun_behavior", PROPERTY_HINT_ENUM, "Trim Nothing,Trim Characters,Trim Words,Ellipsis (6+ Characters),Word Ellipsis (6+ Characters),Ellipsis (Always),Word Ellipsis (Always)"), "set_text_overrun_behavior", "get_text_overrun_behavior");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "wraparound_items"), "set_wraparound_items", "has_wraparound_items");
|
||||
ADD_ARRAY_COUNT("Items", "item_count", "set_item_count", "get_item_count", "item_");
|
||||
ADD_GROUP("Columns", "");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue