Add some codes, returnes directly if the value is not changed.

Avoid executing the following value-changed logics if the value does not really change.
This commit is contained in:
风青山 2022-03-16 15:50:48 +08:00 committed by Rindbee
parent ba0421f3d9
commit e561c68256
33 changed files with 952 additions and 34 deletions

View file

@ -51,21 +51,33 @@ Size2 AspectRatioContainer::get_minimum_size() const {
} }
void AspectRatioContainer::set_ratio(float p_ratio) { void AspectRatioContainer::set_ratio(float p_ratio) {
if (ratio == p_ratio) {
return;
}
ratio = p_ratio; ratio = p_ratio;
queue_sort(); queue_sort();
} }
void AspectRatioContainer::set_stretch_mode(StretchMode p_mode) { void AspectRatioContainer::set_stretch_mode(StretchMode p_mode) {
if (stretch_mode == p_mode) {
return;
}
stretch_mode = p_mode; stretch_mode = p_mode;
queue_sort(); queue_sort();
} }
void AspectRatioContainer::set_alignment_horizontal(AlignmentMode p_alignment_horizontal) { void AspectRatioContainer::set_alignment_horizontal(AlignmentMode p_alignment_horizontal) {
if (alignment_horizontal == p_alignment_horizontal) {
return;
}
alignment_horizontal = p_alignment_horizontal; alignment_horizontal = p_alignment_horizontal;
queue_sort(); queue_sort();
} }
void AspectRatioContainer::set_alignment_vertical(AlignmentMode p_alignment_vertical) { void AspectRatioContainer::set_alignment_vertical(AlignmentMode p_alignment_vertical) {
if (alignment_vertical == p_alignment_vertical) {
return;
}
alignment_vertical = p_alignment_vertical; alignment_vertical = p_alignment_vertical;
queue_sort(); queue_sort();
} }

View file

@ -308,6 +308,9 @@ void BoxContainer::_notification(int p_what) {
} }
void BoxContainer::set_alignment(AlignmentMode p_alignment) { void BoxContainer::set_alignment(AlignmentMode p_alignment) {
if (alignment == p_alignment) {
return;
}
alignment = p_alignment; alignment = p_alignment;
_resort(); _resort();
} }

View file

@ -292,6 +292,9 @@ bool ColorPicker::is_displaying_old_color() const {
} }
void ColorPicker::set_edit_alpha(bool p_show) { void ColorPicker::set_edit_alpha(bool p_show) {
if (edit_alpha == p_show) {
return;
}
edit_alpha = p_show; edit_alpha = p_show;
_update_controls(); _update_controls();
@ -509,6 +512,9 @@ Color ColorPicker::get_pick_color() const {
void ColorPicker::set_picker_shape(PickerShapeType p_shape) { void ColorPicker::set_picker_shape(PickerShapeType p_shape) {
ERR_FAIL_INDEX(p_shape, SHAPE_MAX); ERR_FAIL_INDEX(p_shape, SHAPE_MAX);
if (current_shape == p_shape) {
return;
}
current_shape = p_shape; current_shape = p_shape;
_copy_color_to_hsv(); _copy_color_to_hsv();
@ -1131,6 +1137,9 @@ void ColorPicker::_html_focus_exit() {
} }
void ColorPicker::set_presets_enabled(bool p_enabled) { void ColorPicker::set_presets_enabled(bool p_enabled) {
if (presets_enabled == p_enabled) {
return;
}
presets_enabled = p_enabled; presets_enabled = p_enabled;
if (!p_enabled) { if (!p_enabled) {
btn_add_preset->set_disabled(true); btn_add_preset->set_disabled(true);
@ -1146,6 +1155,9 @@ bool ColorPicker::are_presets_enabled() const {
} }
void ColorPicker::set_presets_visible(bool p_visible) { void ColorPicker::set_presets_visible(bool p_visible) {
if (presets_visible == p_visible) {
return;
}
presets_visible = p_visible; presets_visible = p_visible;
preset_separator->set_visible(p_visible); preset_separator->set_visible(p_visible);
preset_container->set_visible(p_visible); preset_container->set_visible(p_visible);
@ -1419,6 +1431,9 @@ void ColorPickerButton::_notification(int p_what) {
} }
void ColorPickerButton::set_pick_color(const Color &p_color) { void ColorPickerButton::set_pick_color(const Color &p_color) {
if (color == p_color) {
return;
}
color = p_color; color = p_color;
if (picker) { if (picker) {
picker->set_pick_color(p_color); picker->set_pick_color(p_color);
@ -1432,6 +1447,9 @@ Color ColorPickerButton::get_pick_color() const {
} }
void ColorPickerButton::set_edit_alpha(bool p_show) { void ColorPickerButton::set_edit_alpha(bool p_show) {
if (edit_alpha == p_show) {
return;
}
edit_alpha = p_show; edit_alpha = p_show;
if (picker) { if (picker) {
picker->set_edit_alpha(p_show); picker->set_edit_alpha(p_show);

View file

@ -31,6 +31,9 @@
#include "color_rect.h" #include "color_rect.h"
void ColorRect::set_color(const Color &p_color) { void ColorRect::set_color(const Color &p_color) {
if (color == p_color) {
return;
}
color = p_color; color = p_color;
update(); update();
} }

View file

@ -723,6 +723,9 @@ real_t Control::get_anchor(Side p_side) const {
void Control::set_offset(Side p_side, real_t p_value) { void Control::set_offset(Side p_side, real_t p_value) {
ERR_FAIL_INDEX((int)p_side, 4); ERR_FAIL_INDEX((int)p_side, 4);
if (data.offset[p_side] == p_value) {
return;
}
data.offset[p_side] = p_value; data.offset[p_side] = p_value;
_size_changed(); _size_changed();
@ -740,6 +743,10 @@ void Control::set_anchor_and_offset(Side p_side, real_t p_anchor, real_t p_pos,
} }
void Control::set_begin(const Size2 &p_point) { void Control::set_begin(const Size2 &p_point) {
if (data.offset[0] == p_point.x && data.offset[1] == p_point.y) {
return;
}
data.offset[0] = p_point.x; data.offset[0] = p_point.x;
data.offset[1] = p_point.y; data.offset[1] = p_point.y;
_size_changed(); _size_changed();
@ -750,6 +757,10 @@ Size2 Control::get_begin() const {
} }
void Control::set_end(const Size2 &p_point) { void Control::set_end(const Size2 &p_point) {
if (data.offset[2] == p_point.x && data.offset[3] == p_point.y) {
return;
}
data.offset[2] = p_point.x; data.offset[2] = p_point.x;
data.offset[3] = p_point.y; data.offset[3] = p_point.y;
_size_changed(); _size_changed();
@ -760,6 +771,10 @@ Size2 Control::get_end() const {
} }
void Control::set_h_grow_direction(GrowDirection p_direction) { void Control::set_h_grow_direction(GrowDirection p_direction) {
if (data.h_grow == p_direction) {
return;
}
ERR_FAIL_INDEX((int)p_direction, 3); ERR_FAIL_INDEX((int)p_direction, 3);
data.h_grow = p_direction; data.h_grow = p_direction;
@ -771,6 +786,10 @@ Control::GrowDirection Control::get_h_grow_direction() const {
} }
void Control::set_v_grow_direction(GrowDirection p_direction) { void Control::set_v_grow_direction(GrowDirection p_direction) {
if (data.v_grow == p_direction) {
return;
}
ERR_FAIL_INDEX((int)p_direction, 3); ERR_FAIL_INDEX((int)p_direction, 3);
data.v_grow = p_direction; data.v_grow = p_direction;
@ -1427,6 +1446,10 @@ Rect2 Control::get_anchorable_rect() const {
} }
void Control::set_scale(const Vector2 &p_scale) { void Control::set_scale(const Vector2 &p_scale) {
if (data.scale == p_scale) {
return;
}
data.scale = p_scale; data.scale = p_scale;
// Avoid having 0 scale values, can lead to errors in physics and rendering. // Avoid having 0 scale values, can lead to errors in physics and rendering.
if (data.scale.x == 0) { if (data.scale.x == 0) {
@ -1444,6 +1467,10 @@ Vector2 Control::get_scale() const {
} }
void Control::set_rotation(real_t p_radians) { void Control::set_rotation(real_t p_radians) {
if (data.rotation == p_radians) {
return;
}
data.rotation = p_radians; data.rotation = p_radians;
update(); update();
_notify_transform(); _notify_transform();
@ -1454,6 +1481,10 @@ real_t Control::get_rotation() const {
} }
void Control::set_pivot_offset(const Vector2 &p_pivot) { void Control::set_pivot_offset(const Vector2 &p_pivot) {
if (data.pivot_offset == p_pivot) {
return;
}
data.pivot_offset = p_pivot; data.pivot_offset = p_pivot;
update(); update();
_notify_transform(); _notify_transform();
@ -2204,6 +2235,9 @@ Control::CursorShape Control::get_cursor_shape(const Point2 &p_pos) const {
} }
void Control::set_disable_visibility_clip(bool p_ignore) { void Control::set_disable_visibility_clip(bool p_ignore) {
if (data.disable_visibility_clip == p_ignore) {
return;
}
data.disable_visibility_clip = p_ignore; data.disable_visibility_clip = p_ignore;
update(); update();
} }
@ -2213,6 +2247,9 @@ bool Control::is_visibility_clip_disabled() const {
} }
void Control::set_clip_contents(bool p_clip) { void Control::set_clip_contents(bool p_clip) {
if (data.clip_contents == p_clip) {
return;
}
data.clip_contents = p_clip; data.clip_contents = p_clip;
update(); update();
} }
@ -2331,6 +2368,9 @@ Ref<Theme> Control::get_theme() const {
} }
void Control::set_theme_type_variation(const StringName &p_theme_type) { void Control::set_theme_type_variation(const StringName &p_theme_type) {
if (data.theme_type_variation == p_theme_type) {
return;
}
data.theme_type_variation = p_theme_type; data.theme_type_variation = p_theme_type;
_propagate_theme_changed(this, data.theme_owner, data.theme_owner_window); _propagate_theme_changed(this, data.theme_owner, data.theme_owner_window);
} }
@ -2960,6 +3000,9 @@ TypedArray<Vector2i> Control::structured_text_parser(TextServer::StructuredTextP
} }
void Control::set_layout_direction(Control::LayoutDirection p_direction) { void Control::set_layout_direction(Control::LayoutDirection p_direction) {
if (data.layout_dir == p_direction) {
return;
}
ERR_FAIL_INDEX((int)p_direction, 4); ERR_FAIL_INDEX((int)p_direction, 4);
data.layout_dir = p_direction; data.layout_dir = p_direction;

View file

@ -130,6 +130,9 @@ String AcceptDialog::get_text() const {
} }
void AcceptDialog::set_text(String p_text) { void AcceptDialog::set_text(String p_text) {
if (label->get_text() == p_text) {
return;
}
label->set_text(p_text); label->set_text(p_text);
child_controls_changed(); child_controls_changed();
if (is_visible()) { if (is_visible()) {

View file

@ -685,6 +685,9 @@ void FileDialog::add_filter(const String &p_filter, const String &p_description)
} }
void FileDialog::set_filters(const Vector<String> &p_filters) { void FileDialog::set_filters(const Vector<String> &p_filters) {
if (filters == p_filters) {
return;
}
filters = p_filters; filters = p_filters;
update_filters(); update_filters();
invalidate(); invalidate();
@ -708,10 +711,14 @@ String FileDialog::get_current_path() const {
void FileDialog::set_current_dir(const String &p_dir) { void FileDialog::set_current_dir(const String &p_dir) {
_change_dir(p_dir); _change_dir(p_dir);
_push_history(); _push_history();
} }
void FileDialog::set_current_file(const String &p_file) { void FileDialog::set_current_file(const String &p_file) {
if (file->get_text() == p_file) {
return;
}
file->set_text(p_file); file->set_text(p_file);
update_dir(); update_dir();
invalidate(); invalidate();
@ -764,7 +771,9 @@ bool FileDialog::is_mode_overriding_title() const {
void FileDialog::set_file_mode(FileMode p_mode) { void FileDialog::set_file_mode(FileMode p_mode) {
ERR_FAIL_INDEX((int)p_mode, 5); ERR_FAIL_INDEX((int)p_mode, 5);
if (mode == p_mode) {
return;
}
mode = p_mode; mode = p_mode;
switch (mode) { switch (mode) {
case FILE_MODE_OPEN_FILE: case FILE_MODE_OPEN_FILE:
@ -977,6 +986,9 @@ void FileDialog::_bind_methods() {
} }
void FileDialog::set_show_hidden_files(bool p_show) { void FileDialog::set_show_hidden_files(bool p_show) {
if (show_hidden_files == p_show) {
return;
}
show_hidden_files = p_show; show_hidden_files = p_show;
invalidate(); invalidate();
} }

View file

@ -1640,6 +1640,9 @@ bool GraphEdit::is_valid_connection_type(int p_type, int p_with_type) const {
} }
void GraphEdit::set_use_snap(bool p_enable) { void GraphEdit::set_use_snap(bool p_enable) {
if (snap_button->is_pressed() == p_enable) {
return;
}
snap_button->set_pressed(p_enable); snap_button->set_pressed(p_enable);
update(); update();
} }
@ -1683,6 +1686,9 @@ Vector2 GraphEdit::get_minimap_size() const {
} }
void GraphEdit::set_minimap_opacity(float p_opacity) { void GraphEdit::set_minimap_opacity(float p_opacity) {
if (minimap->get_modulate().a == p_opacity) {
return;
}
minimap->set_modulate(Color(1, 1, 1, p_opacity)); minimap->set_modulate(Color(1, 1, 1, p_opacity));
minimap->update(); minimap->update();
} }
@ -1693,6 +1699,9 @@ float GraphEdit::get_minimap_opacity() const {
} }
void GraphEdit::set_minimap_enabled(bool p_enable) { void GraphEdit::set_minimap_enabled(bool p_enable) {
if (minimap_button->is_pressed() == p_enable) {
return;
}
minimap_button->set_pressed(p_enable); minimap_button->set_pressed(p_enable);
_minimap_toggled(); _minimap_toggled();
minimap->update(); minimap->update();
@ -1721,6 +1730,9 @@ float GraphEdit::get_connection_lines_curvature() const {
} }
void GraphEdit::set_connection_lines_thickness(float p_thickness) { void GraphEdit::set_connection_lines_thickness(float p_thickness) {
if (lines_thickness == p_thickness) {
return;
}
lines_thickness = p_thickness; lines_thickness = p_thickness;
update(); update();
} }
@ -1730,6 +1742,9 @@ float GraphEdit::get_connection_lines_thickness() const {
} }
void GraphEdit::set_connection_lines_antialiased(bool p_antialiased) { void GraphEdit::set_connection_lines_antialiased(bool p_antialiased) {
if (lines_antialiased == p_antialiased) {
return;
}
lines_antialiased = p_antialiased; lines_antialiased = p_antialiased;
update(); update();
} }

View file

@ -505,6 +505,10 @@ bool GraphNode::is_slot_enabled_left(int p_idx) const {
void GraphNode::set_slot_enabled_left(int p_idx, bool p_enable_left) { void GraphNode::set_slot_enabled_left(int p_idx, bool p_enable_left) {
ERR_FAIL_COND_MSG(p_idx < 0, vformat("Cannot set enable_left for the slot with p_idx (%d) lesser than zero.", p_idx)); ERR_FAIL_COND_MSG(p_idx < 0, vformat("Cannot set enable_left for the slot with p_idx (%d) lesser than zero.", p_idx));
if (slot_info[p_idx].enable_left == p_enable_left) {
return;
}
slot_info[p_idx].enable_left = p_enable_left; slot_info[p_idx].enable_left = p_enable_left;
update(); update();
connpos_dirty = true; connpos_dirty = true;
@ -515,6 +519,10 @@ void GraphNode::set_slot_enabled_left(int p_idx, bool p_enable_left) {
void GraphNode::set_slot_type_left(int p_idx, int p_type_left) { void GraphNode::set_slot_type_left(int p_idx, int p_type_left) {
ERR_FAIL_COND_MSG(!slot_info.has(p_idx), vformat("Cannot set type_left for the slot '%d' because it hasn't been enabled.", p_idx)); ERR_FAIL_COND_MSG(!slot_info.has(p_idx), vformat("Cannot set type_left for the slot '%d' because it hasn't been enabled.", p_idx));
if (slot_info[p_idx].type_left == p_type_left) {
return;
}
slot_info[p_idx].type_left = p_type_left; slot_info[p_idx].type_left = p_type_left;
update(); update();
connpos_dirty = true; connpos_dirty = true;
@ -532,6 +540,10 @@ int GraphNode::get_slot_type_left(int p_idx) const {
void GraphNode::set_slot_color_left(int p_idx, const Color &p_color_left) { void GraphNode::set_slot_color_left(int p_idx, const Color &p_color_left) {
ERR_FAIL_COND_MSG(!slot_info.has(p_idx), vformat("Cannot set color_left for the slot '%d' because it hasn't been enabled.", p_idx)); ERR_FAIL_COND_MSG(!slot_info.has(p_idx), vformat("Cannot set color_left for the slot '%d' because it hasn't been enabled.", p_idx));
if (slot_info[p_idx].color_left == p_color_left) {
return;
}
slot_info[p_idx].color_left = p_color_left; slot_info[p_idx].color_left = p_color_left;
update(); update();
connpos_dirty = true; connpos_dirty = true;
@ -556,6 +568,10 @@ bool GraphNode::is_slot_enabled_right(int p_idx) const {
void GraphNode::set_slot_enabled_right(int p_idx, bool p_enable_right) { void GraphNode::set_slot_enabled_right(int p_idx, bool p_enable_right) {
ERR_FAIL_COND_MSG(p_idx < 0, vformat("Cannot set enable_right for the slot with p_idx (%d) lesser than zero.", p_idx)); ERR_FAIL_COND_MSG(p_idx < 0, vformat("Cannot set enable_right for the slot with p_idx (%d) lesser than zero.", p_idx));
if (slot_info[p_idx].enable_right == p_enable_right) {
return;
}
slot_info[p_idx].enable_right = p_enable_right; slot_info[p_idx].enable_right = p_enable_right;
update(); update();
connpos_dirty = true; connpos_dirty = true;
@ -566,6 +582,10 @@ void GraphNode::set_slot_enabled_right(int p_idx, bool p_enable_right) {
void GraphNode::set_slot_type_right(int p_idx, int p_type_right) { void GraphNode::set_slot_type_right(int p_idx, int p_type_right) {
ERR_FAIL_COND_MSG(!slot_info.has(p_idx), vformat("Cannot set type_right for the slot '%d' because it hasn't been enabled.", p_idx)); ERR_FAIL_COND_MSG(!slot_info.has(p_idx), vformat("Cannot set type_right for the slot '%d' because it hasn't been enabled.", p_idx));
if (slot_info[p_idx].type_right == p_type_right) {
return;
}
slot_info[p_idx].type_right = p_type_right; slot_info[p_idx].type_right = p_type_right;
update(); update();
connpos_dirty = true; connpos_dirty = true;
@ -583,6 +603,10 @@ int GraphNode::get_slot_type_right(int p_idx) const {
void GraphNode::set_slot_color_right(int p_idx, const Color &p_color_right) { void GraphNode::set_slot_color_right(int p_idx, const Color &p_color_right) {
ERR_FAIL_COND_MSG(!slot_info.has(p_idx), vformat("Cannot set color_right for the slot '%d' because it hasn't been enabled.", p_idx)); ERR_FAIL_COND_MSG(!slot_info.has(p_idx), vformat("Cannot set color_right for the slot '%d' because it hasn't been enabled.", p_idx));
if (slot_info[p_idx].color_right == p_color_right) {
return;
}
slot_info[p_idx].color_right = p_color_right; slot_info[p_idx].color_right = p_color_right;
update(); update();
connpos_dirty = true; connpos_dirty = true;
@ -700,6 +724,10 @@ String GraphNode::get_language() const {
} }
void GraphNode::set_position_offset(const Vector2 &p_offset) { void GraphNode::set_position_offset(const Vector2 &p_offset) {
if (position_offset == p_offset) {
return;
}
position_offset = p_offset; position_offset = p_offset;
emit_signal(SNAME("position_offset_changed")); emit_signal(SNAME("position_offset_changed"));
update(); update();
@ -710,6 +738,10 @@ Vector2 GraphNode::get_position_offset() const {
} }
void GraphNode::set_selected(bool p_selected) { void GraphNode::set_selected(bool p_selected) {
if (selected == p_selected) {
return;
}
selected = p_selected; selected = p_selected;
update(); update();
} }
@ -731,6 +763,10 @@ Vector2 GraphNode::get_drag_from() {
} }
void GraphNode::set_show_close_button(bool p_enable) { void GraphNode::set_show_close_button(bool p_enable) {
if (show_close == p_enable) {
return;
}
show_close = p_enable; show_close = p_enable;
update(); update();
} }
@ -931,6 +967,10 @@ void GraphNode::gui_input(const Ref<InputEvent> &p_ev) {
} }
void GraphNode::set_overlay(Overlay p_overlay) { void GraphNode::set_overlay(Overlay p_overlay) {
if (overlay == p_overlay) {
return;
}
overlay = p_overlay; overlay = p_overlay;
update(); update();
} }
@ -940,6 +980,10 @@ GraphNode::Overlay GraphNode::get_overlay() const {
} }
void GraphNode::set_comment(bool p_enable) { void GraphNode::set_comment(bool p_enable) {
if (comment == p_enable) {
return;
}
comment = p_enable; comment = p_enable;
update(); update();
} }
@ -949,6 +993,10 @@ bool GraphNode::is_comment() const {
} }
void GraphNode::set_resizable(bool p_enable) { void GraphNode::set_resizable(bool p_enable) {
if (resizable == p_enable) {
return;
}
resizable = p_enable; resizable = p_enable;
update(); update();
} }

View file

@ -246,6 +246,11 @@ void GridContainer::_notification(int p_what) {
void GridContainer::set_columns(int p_columns) { void GridContainer::set_columns(int p_columns) {
ERR_FAIL_COND(p_columns < 1); ERR_FAIL_COND(p_columns < 1);
if (columns == p_columns) {
return;
}
columns = p_columns; columns = p_columns;
queue_sort(); queue_sort();
update_minimum_size(); update_minimum_size();

View file

@ -88,6 +88,10 @@ void ItemList::set_item_text(int p_idx, const String &p_text) {
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (items[p_idx].text == p_text) {
return;
}
items.write[p_idx].text = p_text; items.write[p_idx].text = p_text;
_shape(p_idx); _shape(p_idx);
update(); update();
@ -153,6 +157,10 @@ void ItemList::set_item_tooltip(int p_idx, const String &p_tooltip) {
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (items[p_idx].tooltip == p_tooltip) {
return;
}
items.write[p_idx].tooltip = p_tooltip; items.write[p_idx].tooltip = p_tooltip;
update(); update();
shape_changed = true; shape_changed = true;
@ -169,6 +177,10 @@ void ItemList::set_item_icon(int p_idx, const Ref<Texture2D> &p_icon) {
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (items[p_idx].icon == p_icon) {
return;
}
items.write[p_idx].icon = p_icon; items.write[p_idx].icon = p_icon;
update(); update();
shape_changed = true; shape_changed = true;
@ -186,6 +198,10 @@ void ItemList::set_item_icon_transposed(int p_idx, const bool p_transposed) {
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (items[p_idx].icon_transposed == p_transposed) {
return;
}
items.write[p_idx].icon_transposed = p_transposed; items.write[p_idx].icon_transposed = p_transposed;
update(); update();
shape_changed = true; shape_changed = true;
@ -203,6 +219,10 @@ void ItemList::set_item_icon_region(int p_idx, const Rect2 &p_region) {
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (items[p_idx].icon_region == p_region) {
return;
}
items.write[p_idx].icon_region = p_region; items.write[p_idx].icon_region = p_region;
update(); update();
shape_changed = true; shape_changed = true;
@ -220,6 +240,10 @@ void ItemList::set_item_icon_modulate(int p_idx, const Color &p_modulate) {
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (items[p_idx].icon_modulate == p_modulate) {
return;
}
items.write[p_idx].icon_modulate = p_modulate; items.write[p_idx].icon_modulate = p_modulate;
update(); update();
} }
@ -236,6 +260,10 @@ void ItemList::set_item_custom_bg_color(int p_idx, const Color &p_custom_bg_colo
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (items[p_idx].custom_bg == p_custom_bg_color) {
return;
}
items.write[p_idx].custom_bg = p_custom_bg_color; items.write[p_idx].custom_bg = p_custom_bg_color;
update(); update();
} }
@ -252,6 +280,10 @@ void ItemList::set_item_custom_fg_color(int p_idx, const Color &p_custom_fg_colo
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (items[p_idx].custom_fg == p_custom_fg_color) {
return;
}
items.write[p_idx].custom_fg = p_custom_fg_color; items.write[p_idx].custom_fg = p_custom_fg_color;
update(); update();
} }
@ -268,6 +300,10 @@ void ItemList::set_item_tag_icon(int p_idx, const Ref<Texture2D> &p_tag_icon) {
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (items[p_idx].tag_icon == p_tag_icon) {
return;
}
items.write[p_idx].tag_icon = p_tag_icon; items.write[p_idx].tag_icon = p_tag_icon;
update(); update();
shape_changed = true; shape_changed = true;
@ -299,6 +335,10 @@ void ItemList::set_item_disabled(int p_idx, bool p_disabled) {
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (items[p_idx].disabled == p_disabled) {
return;
}
items.write[p_idx].disabled = p_disabled; items.write[p_idx].disabled = p_disabled;
update(); update();
} }
@ -314,6 +354,10 @@ void ItemList::set_item_metadata(int p_idx, const Variant &p_metadata) {
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (items[p_idx].metadata == p_metadata) {
return;
}
items.write[p_idx].metadata = p_metadata; items.write[p_idx].metadata = p_metadata;
update(); update();
shape_changed = true; shape_changed = true;
@ -379,6 +423,10 @@ bool ItemList::is_selected(int p_idx) const {
void ItemList::set_current(int p_current) { void ItemList::set_current(int p_current) {
ERR_FAIL_INDEX(p_current, items.size()); ERR_FAIL_INDEX(p_current, items.size());
if (current == p_current) {
return;
}
if (select_mode == SELECT_SINGLE) { if (select_mode == SELECT_SINGLE) {
select(p_current, true); select(p_current, true);
} else { } else {
@ -410,6 +458,11 @@ void ItemList::move_item(int p_from_idx, int p_to_idx) {
void ItemList::set_item_count(int p_count) { void ItemList::set_item_count(int p_count) {
ERR_FAIL_COND(p_count < 0); ERR_FAIL_COND(p_count < 0);
if (items.size() == p_count) {
return;
}
items.resize(p_count); items.resize(p_count);
update(); update();
shape_changed = true; shape_changed = true;
@ -445,6 +498,11 @@ void ItemList::clear() {
void ItemList::set_fixed_column_width(int p_size) { void ItemList::set_fixed_column_width(int p_size) {
ERR_FAIL_COND(p_size < 0); ERR_FAIL_COND(p_size < 0);
if (fixed_column_width == p_size) {
return;
}
fixed_column_width = p_size; fixed_column_width = p_size;
update(); update();
shape_changed = true; shape_changed = true;
@ -455,6 +513,10 @@ int ItemList::get_fixed_column_width() const {
} }
void ItemList::set_same_column_width(bool p_enable) { void ItemList::set_same_column_width(bool p_enable) {
if (same_column_width == p_enable) {
return;
}
same_column_width = p_enable; same_column_width = p_enable;
update(); update();
shape_changed = true; shape_changed = true;
@ -487,6 +549,11 @@ int ItemList::get_max_text_lines() const {
void ItemList::set_max_columns(int p_amount) { void ItemList::set_max_columns(int p_amount) {
ERR_FAIL_COND(p_amount < 0); ERR_FAIL_COND(p_amount < 0);
if (max_columns == p_amount) {
return;
}
max_columns = p_amount; max_columns = p_amount;
update(); update();
shape_changed = true; shape_changed = true;
@ -497,6 +564,10 @@ int ItemList::get_max_columns() const {
} }
void ItemList::set_select_mode(SelectMode p_mode) { void ItemList::set_select_mode(SelectMode p_mode) {
if (select_mode == p_mode) {
return;
}
select_mode = p_mode; select_mode = p_mode;
update(); update();
} }
@ -526,6 +597,10 @@ ItemList::IconMode ItemList::get_icon_mode() const {
} }
void ItemList::set_fixed_icon_size(const Size2 &p_size) { void ItemList::set_fixed_icon_size(const Size2 &p_size) {
if (fixed_icon_size == p_size) {
return;
}
fixed_icon_size = p_size; fixed_icon_size = p_size;
update(); update();
} }
@ -1512,6 +1587,10 @@ void ItemList::set_autoscroll_to_bottom(const bool p_enable) {
} }
void ItemList::set_auto_height(bool p_enable) { void ItemList::set_auto_height(bool p_enable) {
if (auto_height == p_enable) {
return;
}
auto_height = p_enable; auto_height = p_enable;
shape_changed = true; shape_changed = true;
update(); update();

View file

@ -38,10 +38,12 @@
#include "servers/text_server.h" #include "servers/text_server.h"
void Label::set_autowrap_mode(TextServer::AutowrapMode p_mode) { void Label::set_autowrap_mode(TextServer::AutowrapMode p_mode) {
if (autowrap_mode != p_mode) { if (autowrap_mode == p_mode) {
autowrap_mode = p_mode; return;
lines_dirty = true;
} }
autowrap_mode = p_mode;
lines_dirty = true;
update(); update();
if (clip || overrun_behavior != TextServer::OVERRUN_NO_TRIMMING) { if (clip || overrun_behavior != TextServer::OVERRUN_NO_TRIMMING) {
@ -54,6 +56,10 @@ TextServer::AutowrapMode Label::get_autowrap_mode() const {
} }
void Label::set_uppercase(bool p_uppercase) { void Label::set_uppercase(bool p_uppercase) {
if (uppercase == p_uppercase) {
return;
}
uppercase = p_uppercase; uppercase = p_uppercase;
dirty = true; dirty = true;
@ -608,12 +614,15 @@ int Label::get_visible_line_count() const {
void Label::set_horizontal_alignment(HorizontalAlignment p_alignment) { void Label::set_horizontal_alignment(HorizontalAlignment p_alignment) {
ERR_FAIL_INDEX((int)p_alignment, 4); ERR_FAIL_INDEX((int)p_alignment, 4);
if (horizontal_alignment != p_alignment) { if (horizontal_alignment == p_alignment) {
if (horizontal_alignment == HORIZONTAL_ALIGNMENT_FILL || p_alignment == HORIZONTAL_ALIGNMENT_FILL) { return;
lines_dirty = true; // Reshape lines.
}
horizontal_alignment = p_alignment;
} }
if (horizontal_alignment == HORIZONTAL_ALIGNMENT_FILL || p_alignment == HORIZONTAL_ALIGNMENT_FILL) {
lines_dirty = true; // Reshape lines.
}
horizontal_alignment = p_alignment;
update(); update();
} }
@ -623,6 +632,11 @@ HorizontalAlignment Label::get_horizontal_alignment() const {
void Label::set_vertical_alignment(VerticalAlignment p_alignment) { void Label::set_vertical_alignment(VerticalAlignment p_alignment) {
ERR_FAIL_INDEX((int)p_alignment, 4); ERR_FAIL_INDEX((int)p_alignment, 4);
if (vertical_alignment == p_alignment) {
return;
}
vertical_alignment = p_alignment; vertical_alignment = p_alignment;
update(); update();
} }
@ -689,6 +703,10 @@ TextServer::StructuredTextParser Label::get_structured_text_bidi_override() cons
} }
void Label::set_structured_text_bidi_override_options(Array p_args) { void Label::set_structured_text_bidi_override_options(Array p_args) {
if (st_args == p_args) {
return;
}
st_args = p_args; st_args = p_args;
dirty = true; dirty = true;
update(); update();
@ -715,6 +733,10 @@ String Label::get_language() const {
} }
void Label::set_clip_text(bool p_clip) { void Label::set_clip_text(bool p_clip) {
if (clip == p_clip) {
return;
}
clip = p_clip; clip = p_clip;
update(); update();
update_minimum_size(); update_minimum_size();
@ -725,10 +747,12 @@ bool Label::is_clipping_text() const {
} }
void Label::set_text_overrun_behavior(TextServer::OverrunBehavior p_behavior) { void Label::set_text_overrun_behavior(TextServer::OverrunBehavior p_behavior) {
if (overrun_behavior != p_behavior) { if (overrun_behavior == p_behavior) {
overrun_behavior = p_behavior; return;
lines_dirty = true;
} }
overrun_behavior = p_behavior;
lines_dirty = true;
update(); update();
if (clip || overrun_behavior != TextServer::OVERRUN_NO_TRIMMING) { if (clip || overrun_behavior != TextServer::OVERRUN_NO_TRIMMING) {
update_minimum_size(); update_minimum_size();
@ -800,6 +824,11 @@ void Label::set_visible_characters_behavior(TextServer::VisibleCharactersBehavio
void Label::set_lines_skipped(int p_lines) { void Label::set_lines_skipped(int p_lines) {
ERR_FAIL_COND(p_lines < 0); ERR_FAIL_COND(p_lines < 0);
if (lines_skipped == p_lines) {
return;
}
lines_skipped = p_lines; lines_skipped = p_lines;
_update_visible(); _update_visible();
update(); update();
@ -810,6 +839,10 @@ int Label::get_lines_skipped() const {
} }
void Label::set_max_lines_visible(int p_lines) { void Label::set_max_lines_visible(int p_lines) {
if (max_lines_visible == p_lines) {
return;
}
max_lines_visible = p_lines; max_lines_visible = p_lines;
_update_visible(); _update_visible();
update(); update();

View file

@ -607,10 +607,12 @@ void LineEdit::gui_input(const Ref<InputEvent> &p_event) {
void LineEdit::set_horizontal_alignment(HorizontalAlignment p_alignment) { void LineEdit::set_horizontal_alignment(HorizontalAlignment p_alignment) {
ERR_FAIL_INDEX((int)p_alignment, 4); ERR_FAIL_INDEX((int)p_alignment, 4);
if (alignment != p_alignment) { if (alignment == p_alignment) {
alignment = p_alignment; return;
_shape();
} }
alignment = p_alignment;
_shape();
update(); update();
} }
@ -1525,6 +1527,10 @@ String LineEdit::get_text() const {
} }
void LineEdit::set_placeholder(String p_text) { void LineEdit::set_placeholder(String p_text) {
if (placeholder == p_text) {
return;
}
placeholder = p_text; placeholder = p_text;
placeholder_translated = atr(placeholder); placeholder_translated = atr(placeholder);
_shape(); _shape();
@ -1781,10 +1787,12 @@ bool LineEdit::is_editable() const {
} }
void LineEdit::set_secret(bool p_secret) { void LineEdit::set_secret(bool p_secret) {
if (pass != p_secret) { if (pass == p_secret) {
pass = p_secret; return;
_shape();
} }
pass = p_secret;
_shape();
update(); update();
} }
@ -1797,10 +1805,12 @@ void LineEdit::set_secret_character(const String &p_string) {
// It also wouldn't make sense to use multiple characters as the secret character. // It also wouldn't make sense to use multiple characters as the secret character.
ERR_FAIL_COND_MSG(p_string.length() != 1, "Secret character must be exactly one character long (" + itos(p_string.length()) + " characters given)."); ERR_FAIL_COND_MSG(p_string.length() != 1, "Secret character must be exactly one character long (" + itos(p_string.length()) + " characters given).");
if (secret_character != p_string) { if (secret_character == p_string) {
secret_character = p_string; return;
_shape();
} }
secret_character = p_string;
_shape();
update(); update();
} }
@ -2057,6 +2067,10 @@ bool LineEdit::is_middle_mouse_paste_enabled() const {
} }
void LineEdit::set_selecting_enabled(bool p_enabled) { void LineEdit::set_selecting_enabled(bool p_enabled) {
if (selecting_enabled == p_enabled) {
return;
}
selecting_enabled = p_enabled; selecting_enabled = p_enabled;
if (!selecting_enabled) { if (!selecting_enabled) {
@ -2069,6 +2083,10 @@ bool LineEdit::is_selecting_enabled() const {
} }
void LineEdit::set_deselect_on_focus_loss_enabled(const bool p_enabled) { void LineEdit::set_deselect_on_focus_loss_enabled(const bool p_enabled) {
if (deselect_on_focus_loss_enabled == p_enabled) {
return;
}
deselect_on_focus_loss_enabled = p_enabled; deselect_on_focus_loss_enabled = p_enabled;
if (p_enabled && selection.enabled && !has_focus()) { if (p_enabled && selection.enabled && !has_focus()) {
deselect(); deselect();

View file

@ -109,6 +109,10 @@ String LinkButton::get_language() const {
} }
void LinkButton::set_underline_mode(UnderlineMode p_underline_mode) { void LinkButton::set_underline_mode(UnderlineMode p_underline_mode) {
if (underline_mode == p_underline_mode) {
return;
}
underline_mode = p_underline_mode; underline_mode = p_underline_mode;
update(); update();
} }

View file

@ -130,6 +130,11 @@ bool MenuButton::is_switch_on_hover() {
void MenuButton::set_item_count(int p_count) { void MenuButton::set_item_count(int p_count) {
ERR_FAIL_COND(p_count < 0); ERR_FAIL_COND(p_count < 0);
if (popup->get_item_count() == p_count) {
return;
}
popup->set_item_count(p_count); popup->set_item_count(p_count);
notify_property_list_changed(); notify_property_list_changed();
} }

View file

@ -105,6 +105,11 @@ Ref<Texture2D> NinePatchRect::get_texture() const {
void NinePatchRect::set_patch_margin(Side p_side, int p_size) { void NinePatchRect::set_patch_margin(Side p_side, int p_size) {
ERR_FAIL_INDEX((int)p_side, 4); ERR_FAIL_INDEX((int)p_side, 4);
if (margin[p_side] == p_size) {
return;
}
margin[p_side] = p_size; margin[p_side] = p_size;
update(); update();
update_minimum_size(); update_minimum_size();
@ -130,6 +135,10 @@ Rect2 NinePatchRect::get_region_rect() const {
} }
void NinePatchRect::set_draw_center(bool p_enabled) { void NinePatchRect::set_draw_center(bool p_enabled) {
if (draw_center == p_enabled) {
return;
}
draw_center = p_enabled; draw_center = p_enabled;
update(); update();
} }
@ -139,6 +148,10 @@ bool NinePatchRect::is_draw_center_enabled() const {
} }
void NinePatchRect::set_h_axis_stretch_mode(AxisStretchMode p_mode) { void NinePatchRect::set_h_axis_stretch_mode(AxisStretchMode p_mode) {
if (axis_h == p_mode) {
return;
}
axis_h = p_mode; axis_h = p_mode;
update(); update();
} }
@ -148,6 +161,10 @@ NinePatchRect::AxisStretchMode NinePatchRect::get_h_axis_stretch_mode() const {
} }
void NinePatchRect::set_v_axis_stretch_mode(AxisStretchMode p_mode) { void NinePatchRect::set_v_axis_stretch_mode(AxisStretchMode p_mode) {
if (axis_v == p_mode) {
return;
}
axis_v = p_mode; axis_v = p_mode;
update(); update();
} }

View file

@ -1144,6 +1144,11 @@ void PopupMenu::set_item_icon(int p_idx, const Ref<Texture2D> &p_icon) {
p_idx += get_item_count(); p_idx += get_item_count();
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (items[p_idx].icon == p_icon) {
return;
}
items.write[p_idx].icon = p_icon; items.write[p_idx].icon = p_icon;
control->update(); control->update();
@ -1157,6 +1162,10 @@ void PopupMenu::set_item_checked(int p_idx, bool p_checked) {
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (items[p_idx].checked == p_checked) {
return;
}
items.write[p_idx].checked = p_checked; items.write[p_idx].checked = p_checked;
control->update(); control->update();
@ -1169,6 +1178,11 @@ void PopupMenu::set_item_id(int p_idx, int p_id) {
p_idx += get_item_count(); p_idx += get_item_count();
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (items[p_idx].id == p_id) {
return;
}
items.write[p_idx].id = p_id; items.write[p_idx].id = p_id;
control->update(); control->update();
@ -1181,6 +1195,11 @@ void PopupMenu::set_item_accelerator(int p_idx, Key p_accel) {
p_idx += get_item_count(); p_idx += get_item_count();
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (items[p_idx].accel == p_accel) {
return;
}
items.write[p_idx].accel = p_accel; items.write[p_idx].accel = p_accel;
items.write[p_idx].dirty = true; items.write[p_idx].dirty = true;
@ -1194,6 +1213,11 @@ void PopupMenu::set_item_metadata(int p_idx, const Variant &p_meta) {
p_idx += get_item_count(); p_idx += get_item_count();
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (items[p_idx].metadata == p_meta) {
return;
}
items.write[p_idx].metadata = p_meta; items.write[p_idx].metadata = p_meta;
control->update(); control->update();
child_controls_changed(); child_controls_changed();
@ -1205,6 +1229,11 @@ void PopupMenu::set_item_disabled(int p_idx, bool p_disabled) {
p_idx += get_item_count(); p_idx += get_item_count();
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (items[p_idx].disabled == p_disabled) {
return;
}
items.write[p_idx].disabled = p_disabled; items.write[p_idx].disabled = p_disabled;
control->update(); control->update();
child_controls_changed(); child_controls_changed();
@ -1216,6 +1245,11 @@ void PopupMenu::set_item_submenu(int p_idx, const String &p_submenu) {
p_idx += get_item_count(); p_idx += get_item_count();
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (items[p_idx].submenu == p_submenu) {
return;
}
items.write[p_idx].submenu = p_submenu; items.write[p_idx].submenu = p_submenu;
control->update(); control->update();
child_controls_changed(); child_controls_changed();
@ -1330,6 +1364,11 @@ void PopupMenu::set_item_as_separator(int p_idx, bool p_separator) {
p_idx += get_item_count(); p_idx += get_item_count();
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (items[p_idx].separator == p_separator) {
return;
}
items.write[p_idx].separator = p_separator; items.write[p_idx].separator = p_separator;
control->update(); control->update();
} }
@ -1344,6 +1383,12 @@ void PopupMenu::set_item_as_checkable(int p_idx, bool p_checkable) {
p_idx += get_item_count(); p_idx += get_item_count();
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
int type = (int)(p_checkable ? Item::CHECKABLE_TYPE_CHECK_BOX : Item::CHECKABLE_TYPE_NONE);
if (type == items[p_idx].checkable_type) {
return;
}
items.write[p_idx].checkable_type = p_checkable ? Item::CHECKABLE_TYPE_CHECK_BOX : Item::CHECKABLE_TYPE_NONE; items.write[p_idx].checkable_type = p_checkable ? Item::CHECKABLE_TYPE_CHECK_BOX : Item::CHECKABLE_TYPE_NONE;
control->update(); control->update();
_menu_changed(); _menu_changed();
@ -1354,6 +1399,12 @@ void PopupMenu::set_item_as_radio_checkable(int p_idx, bool p_radio_checkable) {
p_idx += get_item_count(); p_idx += get_item_count();
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
int type = (int)(p_radio_checkable ? Item::CHECKABLE_TYPE_RADIO_BUTTON : Item::CHECKABLE_TYPE_NONE);
if (type == items[p_idx].checkable_type) {
return;
}
items.write[p_idx].checkable_type = p_radio_checkable ? Item::CHECKABLE_TYPE_RADIO_BUTTON : Item::CHECKABLE_TYPE_NONE; items.write[p_idx].checkable_type = p_radio_checkable ? Item::CHECKABLE_TYPE_RADIO_BUTTON : Item::CHECKABLE_TYPE_NONE;
control->update(); control->update();
_menu_changed(); _menu_changed();
@ -1364,6 +1415,11 @@ void PopupMenu::set_item_tooltip(int p_idx, const String &p_tooltip) {
p_idx += get_item_count(); p_idx += get_item_count();
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (items[p_idx].tooltip == p_tooltip) {
return;
}
items.write[p_idx].tooltip = p_tooltip; items.write[p_idx].tooltip = p_tooltip;
control->update(); control->update();
_menu_changed(); _menu_changed();
@ -1374,6 +1430,11 @@ void PopupMenu::set_item_shortcut(int p_idx, const Ref<Shortcut> &p_shortcut, bo
p_idx += get_item_count(); p_idx += get_item_count();
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (items[p_idx].shortcut == p_shortcut && items[p_idx].shortcut_is_global == p_global && items[p_idx].shortcut.is_valid() == p_shortcut.is_valid()) {
return;
}
if (items[p_idx].shortcut.is_valid()) { if (items[p_idx].shortcut.is_valid()) {
_unref_shortcut(items[p_idx].shortcut); _unref_shortcut(items[p_idx].shortcut);
} }
@ -1394,7 +1455,12 @@ void PopupMenu::set_item_indent(int p_idx, int p_indent) {
p_idx += get_item_count(); p_idx += get_item_count();
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (items.write[p_idx].indent == p_indent) {
return;
}
items.write[p_idx].indent = p_indent; items.write[p_idx].indent = p_indent;
control->update(); control->update();
child_controls_changed(); child_controls_changed();
_menu_changed(); _menu_changed();
@ -1405,6 +1471,11 @@ void PopupMenu::set_item_multistate(int p_idx, int p_state) {
p_idx += get_item_count(); p_idx += get_item_count();
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (items[p_idx].state == p_state) {
return;
}
items.write[p_idx].state = p_state; items.write[p_idx].state = p_state;
control->update(); control->update();
_menu_changed(); _menu_changed();
@ -1415,6 +1486,11 @@ void PopupMenu::set_item_shortcut_disabled(int p_idx, bool p_disabled) {
p_idx += get_item_count(); p_idx += get_item_count();
} }
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (items[p_idx].shortcut_is_disabled == p_disabled) {
return;
}
items.write[p_idx].shortcut_is_disabled = p_disabled; items.write[p_idx].shortcut_is_disabled = p_disabled;
control->update(); control->update();
_menu_changed(); _menu_changed();
@ -1457,6 +1533,11 @@ bool PopupMenu::is_item_shortcut_disabled(int p_idx) const {
void PopupMenu::set_current_index(int p_idx) { void PopupMenu::set_current_index(int p_idx) {
ERR_FAIL_INDEX(p_idx, items.size()); ERR_FAIL_INDEX(p_idx, items.size());
if (mouse_over == p_idx) {
return;
}
mouse_over = p_idx; mouse_over = p_idx;
scroll_to_item(mouse_over); scroll_to_item(mouse_over);
control->update(); control->update();
@ -1469,6 +1550,11 @@ int PopupMenu::get_current_index() const {
void PopupMenu::set_item_count(int p_count) { void PopupMenu::set_item_count(int p_count) {
ERR_FAIL_COND(p_count < 0); ERR_FAIL_COND(p_count < 0);
int prev_size = items.size(); int prev_size = items.size();
if (prev_size == p_count) {
return;
}
items.resize(p_count); items.resize(p_count);
if (prev_size < p_count) { if (prev_size < p_count) {

View file

@ -106,6 +106,10 @@ void Range::set_value(double p_val) {
} }
void Range::set_min(double p_min) { void Range::set_min(double p_min) {
if (shared->min == p_min) {
return;
}
shared->min = p_min; shared->min = p_min;
set_value(shared->val); set_value(shared->val);
_validate_values(); _validate_values();
@ -116,6 +120,10 @@ void Range::set_min(double p_min) {
} }
void Range::set_max(double p_max) { void Range::set_max(double p_max) {
if (shared->max == p_max) {
return;
}
shared->max = p_max; shared->max = p_max;
set_value(shared->val); set_value(shared->val);
_validate_values(); _validate_values();
@ -124,11 +132,19 @@ void Range::set_max(double p_max) {
} }
void Range::set_step(double p_step) { void Range::set_step(double p_step) {
if (shared->step == p_step) {
return;
}
shared->step = p_step; shared->step = p_step;
shared->emit_changed("step"); shared->emit_changed("step");
} }
void Range::set_page(double p_page) { void Range::set_page(double p_page) {
if (shared->page == p_page) {
return;
}
shared->page = p_page; shared->page = p_page;
set_value(shared->val); set_value(shared->val);
_validate_values(); _validate_values();
@ -300,6 +316,10 @@ bool Range::is_using_rounded_values() const {
} }
void Range::set_exp_ratio(bool p_enable) { void Range::set_exp_ratio(bool p_enable) {
if (shared->exp_ratio == p_enable) {
return;
}
shared->exp_ratio = p_enable; shared->exp_ratio = p_enable;
update_configuration_warnings(); update_configuration_warnings();

View file

@ -46,6 +46,10 @@ void ReferenceRect::_notification(int p_what) {
} }
void ReferenceRect::set_border_color(const Color &p_color) { void ReferenceRect::set_border_color(const Color &p_color) {
if (border_color == p_color) {
return;
}
border_color = p_color; border_color = p_color;
update(); update();
} }
@ -55,7 +59,12 @@ Color ReferenceRect::get_border_color() const {
} }
void ReferenceRect::set_border_width(float p_width) { void ReferenceRect::set_border_width(float p_width) {
border_width = MAX(0.0, p_width); float width_max = MAX(0.0, p_width);
if (border_width == width_max) {
return;
}
border_width = width_max;
update(); update();
} }
@ -64,6 +73,10 @@ float ReferenceRect::get_border_width() const {
} }
void ReferenceRect::set_editor_only(const bool &p_enabled) { void ReferenceRect::set_editor_only(const bool &p_enabled) {
if (editor_only == p_enabled) {
return;
}
editor_only = p_enabled; editor_only = p_enabled;
update(); update();
} }

View file

@ -3370,6 +3370,10 @@ void RichTextLabel::clear() {
} }
void RichTextLabel::set_tab_size(int p_spaces) { void RichTextLabel::set_tab_size(int p_spaces) {
if (tab_size == p_spaces) {
return;
}
_stop_thread(); _stop_thread();
tab_size = p_spaces; tab_size = p_spaces;
@ -3393,6 +3397,10 @@ bool RichTextLabel::is_fit_content_height_enabled() const {
} }
void RichTextLabel::set_meta_underline(bool p_underline) { void RichTextLabel::set_meta_underline(bool p_underline) {
if (underline_meta == p_underline) {
return;
}
underline_meta = p_underline; underline_meta = p_underline;
update(); update();
} }
@ -4405,6 +4413,10 @@ int RichTextLabel::get_visible_line_count() const {
} }
void RichTextLabel::set_selection_enabled(bool p_enabled) { void RichTextLabel::set_selection_enabled(bool p_enabled) {
if (selection.enabled == p_enabled) {
return;
}
selection.enabled = p_enabled; selection.enabled = p_enabled;
if (!p_enabled) { if (!p_enabled) {
if (selection.active) { if (selection.active) {
@ -4417,6 +4429,10 @@ void RichTextLabel::set_selection_enabled(bool p_enabled) {
} }
void RichTextLabel::set_deselect_on_focus_loss_enabled(const bool p_enabled) { void RichTextLabel::set_deselect_on_focus_loss_enabled(const bool p_enabled) {
if (deselect_on_focus_loss_enabled == p_enabled) {
return;
}
deselect_on_focus_loss_enabled = p_enabled; deselect_on_focus_loss_enabled = p_enabled;
if (p_enabled && selection.active && !has_focus()) { if (p_enabled && selection.active && !has_focus()) {
deselect(); deselect();
@ -4784,6 +4800,10 @@ int RichTextLabel::get_selection_to() const {
} }
void RichTextLabel::set_text(const String &p_bbcode) { void RichTextLabel::set_text(const String &p_bbcode) {
if (text == p_bbcode) {
return;
}
text = p_bbcode; text = p_bbcode;
if (use_bbcode) { if (use_bbcode) {
parse_bbcode(p_bbcode); parse_bbcode(p_bbcode);
@ -5316,6 +5336,10 @@ int RichTextLabel::get_total_glyph_count() const {
} }
void RichTextLabel::set_fixed_size_to_width(int p_width) { void RichTextLabel::set_fixed_size_to_width(int p_width) {
if (fixed_width == p_width) {
return;
}
fixed_width = p_width; fixed_width = p_width;
update_minimum_size(); update_minimum_size();
} }

View file

@ -227,6 +227,10 @@ double Slider::get_custom_step() const {
} }
void Slider::set_ticks(int p_count) { void Slider::set_ticks(int p_count) {
if (ticks == p_count) {
return;
}
ticks = p_count; ticks = p_count;
update(); update();
} }
@ -240,11 +244,19 @@ bool Slider::get_ticks_on_borders() const {
} }
void Slider::set_ticks_on_borders(bool _tob) { void Slider::set_ticks_on_borders(bool _tob) {
if (ticks_on_borders == _tob) {
return;
}
ticks_on_borders = _tob; ticks_on_borders = _tob;
update(); update();
} }
void Slider::set_editable(bool p_editable) { void Slider::set_editable(bool p_editable) {
if (editable == p_editable) {
return;
}
editable = p_editable; editable = p_editable;
update(); update();
} }

View file

@ -250,6 +250,10 @@ HorizontalAlignment SpinBox::get_horizontal_alignment() const {
} }
void SpinBox::set_suffix(const String &p_suffix) { void SpinBox::set_suffix(const String &p_suffix) {
if (suffix == p_suffix) {
return;
}
suffix = p_suffix; suffix = p_suffix;
_value_changed(0); _value_changed(0);
} }
@ -259,6 +263,10 @@ String SpinBox::get_suffix() const {
} }
void SpinBox::set_prefix(const String &p_prefix) { void SpinBox::set_prefix(const String &p_prefix) {
if (prefix == p_prefix) {
return;
}
prefix = p_prefix; prefix = p_prefix;
_value_changed(0); _value_changed(0);
} }

View file

@ -326,6 +326,10 @@ void SplitContainer::set_collapsed(bool p_collapsed) {
} }
void SplitContainer::set_dragger_visibility(DraggerVisibility p_visibility) { void SplitContainer::set_dragger_visibility(DraggerVisibility p_visibility) {
if (dragger_visibility == p_visibility) {
return;
}
dragger_visibility = p_visibility; dragger_visibility = p_visibility;
queue_sort(); queue_sort();
update(); update();

View file

@ -53,6 +53,10 @@ Size2 SubViewportContainer::get_minimum_size() const {
} }
void SubViewportContainer::set_stretch(bool p_enable) { void SubViewportContainer::set_stretch(bool p_enable) {
if (stretch == p_enable) {
return;
}
stretch = p_enable; stretch = p_enable;
update_minimum_size(); update_minimum_size();
queue_sort(); queue_sort();

View file

@ -634,6 +634,11 @@ bool TabBar::get_offset_buttons_visible() const {
void TabBar::set_tab_title(int p_tab, const String &p_title) { void TabBar::set_tab_title(int p_tab, const String &p_title) {
ERR_FAIL_INDEX(p_tab, tabs.size()); ERR_FAIL_INDEX(p_tab, tabs.size());
if (tabs[p_tab].text == p_title) {
return;
}
tabs.write[p_tab].text = p_title; tabs.write[p_tab].text = p_title;
_shape(p_tab); _shape(p_tab);
@ -690,6 +695,11 @@ String TabBar::get_tab_language(int p_tab) const {
void TabBar::set_tab_icon(int p_tab, const Ref<Texture2D> &p_icon) { void TabBar::set_tab_icon(int p_tab, const Ref<Texture2D> &p_icon) {
ERR_FAIL_INDEX(p_tab, tabs.size()); ERR_FAIL_INDEX(p_tab, tabs.size());
if (tabs[p_tab].icon == p_icon) {
return;
}
tabs.write[p_tab].icon = p_icon; tabs.write[p_tab].icon = p_icon;
_update_cache(); _update_cache();
@ -708,6 +718,11 @@ Ref<Texture2D> TabBar::get_tab_icon(int p_tab) const {
void TabBar::set_tab_disabled(int p_tab, bool p_disabled) { void TabBar::set_tab_disabled(int p_tab, bool p_disabled) {
ERR_FAIL_INDEX(p_tab, tabs.size()); ERR_FAIL_INDEX(p_tab, tabs.size());
if (tabs[p_tab].disabled == p_disabled) {
return;
}
tabs.write[p_tab].disabled = p_disabled; tabs.write[p_tab].disabled = p_disabled;
_update_cache(); _update_cache();
@ -726,6 +741,11 @@ bool TabBar::is_tab_disabled(int p_tab) const {
void TabBar::set_tab_hidden(int p_tab, bool p_hidden) { void TabBar::set_tab_hidden(int p_tab, bool p_hidden) {
ERR_FAIL_INDEX(p_tab, tabs.size()); ERR_FAIL_INDEX(p_tab, tabs.size());
if (tabs[p_tab].hidden == p_hidden) {
return;
}
tabs.write[p_tab].hidden = p_hidden; tabs.write[p_tab].hidden = p_hidden;
_update_cache(); _update_cache();
@ -744,6 +764,11 @@ bool TabBar::is_tab_hidden(int p_tab) const {
void TabBar::set_tab_button_icon(int p_tab, const Ref<Texture2D> &p_icon) { void TabBar::set_tab_button_icon(int p_tab, const Ref<Texture2D> &p_icon) {
ERR_FAIL_INDEX(p_tab, tabs.size()); ERR_FAIL_INDEX(p_tab, tabs.size());
if (tabs[p_tab].right_button == p_icon) {
return;
}
tabs.write[p_tab].right_button = p_icon; tabs.write[p_tab].right_button = p_icon;
_update_cache(); _update_cache();
@ -1155,6 +1180,11 @@ int TabBar::get_tab_idx_at_point(const Point2 &p_point) const {
void TabBar::set_tab_alignment(AlignmentMode p_alignment) { void TabBar::set_tab_alignment(AlignmentMode p_alignment) {
ERR_FAIL_INDEX(p_alignment, ALIGNMENT_MAX); ERR_FAIL_INDEX(p_alignment, ALIGNMENT_MAX);
if (tab_alignment == p_alignment) {
return;
}
tab_alignment = p_alignment; tab_alignment = p_alignment;
_update_cache(); _update_cache();
@ -1374,6 +1404,11 @@ Rect2 TabBar::get_tab_rect(int p_tab) const {
void TabBar::set_tab_close_display_policy(CloseButtonDisplayPolicy p_policy) { void TabBar::set_tab_close_display_policy(CloseButtonDisplayPolicy p_policy) {
ERR_FAIL_INDEX(p_policy, CLOSE_BUTTON_MAX); ERR_FAIL_INDEX(p_policy, CLOSE_BUTTON_MAX);
if (cb_displaypolicy == p_policy) {
return;
}
cb_displaypolicy = p_policy; cb_displaypolicy = p_policy;
_update_cache(); _update_cache();
@ -1391,6 +1426,11 @@ TabBar::CloseButtonDisplayPolicy TabBar::get_tab_close_display_policy() const {
void TabBar::set_max_tab_width(int p_width) { void TabBar::set_max_tab_width(int p_width) {
ERR_FAIL_COND(p_width < 0); ERR_FAIL_COND(p_width < 0);
if (max_width == p_width) {
return;
}
max_width = p_width; max_width = p_width;
_update_cache(); _update_cache();

View file

@ -618,6 +618,10 @@ int TabContainer::get_tab_idx_from_control(Control *p_child) const {
} }
void TabContainer::set_tab_alignment(TabBar::AlignmentMode p_alignment) { void TabContainer::set_tab_alignment(TabBar::AlignmentMode p_alignment) {
if (tab_bar->get_tab_alignment() == p_alignment) {
return;
}
tab_bar->set_tab_alignment(p_alignment); tab_bar->set_tab_alignment(p_alignment);
_update_margins(); _update_margins();
} }
@ -679,6 +683,10 @@ void TabContainer::set_tab_title(int p_tab, const String &p_title) {
Control *child = get_tab_control(p_tab); Control *child = get_tab_control(p_tab);
ERR_FAIL_COND(!child); ERR_FAIL_COND(!child);
if (tab_bar->get_tab_title(p_tab) == p_title) {
return;
}
tab_bar->set_tab_title(p_tab, p_title); tab_bar->set_tab_title(p_tab, p_title);
if (p_title == child->get_name()) { if (p_title == child->get_name()) {
@ -698,6 +706,10 @@ String TabContainer::get_tab_title(int p_tab) const {
} }
void TabContainer::set_tab_icon(int p_tab, const Ref<Texture2D> &p_icon) { void TabContainer::set_tab_icon(int p_tab, const Ref<Texture2D> &p_icon) {
if (tab_bar->get_tab_icon(p_tab) == p_icon) {
return;
}
tab_bar->set_tab_icon(p_tab, p_icon); tab_bar->set_tab_icon(p_tab, p_icon);
_update_margins(); _update_margins();
@ -709,6 +721,10 @@ Ref<Texture2D> TabContainer::get_tab_icon(int p_tab) const {
} }
void TabContainer::set_tab_disabled(int p_tab, bool p_disabled) { void TabContainer::set_tab_disabled(int p_tab, bool p_disabled) {
if (tab_bar->is_tab_disabled(p_tab) == p_disabled) {
return;
}
tab_bar->set_tab_disabled(p_tab, p_disabled); tab_bar->set_tab_disabled(p_tab, p_disabled);
_update_margins(); _update_margins();
@ -725,6 +741,10 @@ void TabContainer::set_tab_hidden(int p_tab, bool p_hidden) {
Control *child = get_tab_control(p_tab); Control *child = get_tab_control(p_tab);
ERR_FAIL_COND(!child); ERR_FAIL_COND(!child);
if (tab_bar->is_tab_hidden(p_tab) == p_hidden) {
return;
}
tab_bar->set_tab_hidden(p_tab, p_hidden); tab_bar->set_tab_hidden(p_tab, p_hidden);
child->hide(); child->hide();
@ -811,7 +831,11 @@ void TabContainer::set_popup(Node *p_popup) {
bool had_popup = get_popup(); bool had_popup = get_popup();
Popup *popup = Object::cast_to<Popup>(p_popup); Popup *popup = Object::cast_to<Popup>(p_popup);
popup_obj_id = popup ? popup->get_instance_id() : ObjectID(); ObjectID popup_id = popup ? popup->get_instance_id() : ObjectID();
if (popup_obj_id == popup_id) {
return;
}
popup_obj_id = popup_id;
if (had_popup != bool(popup)) { if (had_popup != bool(popup)) {
update(); update();
@ -855,6 +879,10 @@ int TabContainer::get_tabs_rearrange_group() const {
} }
void TabContainer::set_use_hidden_tabs_for_min_size(bool p_use_hidden_tabs) { void TabContainer::set_use_hidden_tabs_for_min_size(bool p_use_hidden_tabs) {
if (use_hidden_tabs_for_min_size == p_use_hidden_tabs) {
return;
}
use_hidden_tabs_for_min_size = p_use_hidden_tabs; use_hidden_tabs_for_min_size = p_use_hidden_tabs;
update_minimum_size(); update_minimum_size();
} }

View file

@ -2889,6 +2889,10 @@ TextServer::StructuredTextParser TextEdit::get_structured_text_bidi_override() c
} }
void TextEdit::set_structured_text_bidi_override_options(Array p_args) { void TextEdit::set_structured_text_bidi_override_options(Array p_args) {
if (st_args == p_args) {
return;
}
st_args = p_args; st_args = p_args;
for (int i = 0; i < text.size(); i++) { for (int i = 0; i < text.size(); i++) {
text.set(i, text[i], structured_text_parser(st_parser, st_args, text[i])); text.set(i, text[i], structured_text_parser(st_parser, st_args, text[i]));
@ -2917,6 +2921,10 @@ int TextEdit::get_tab_size() const {
// User controls // User controls
void TextEdit::set_overtype_mode_enabled(const bool p_enabled) { void TextEdit::set_overtype_mode_enabled(const bool p_enabled) {
if (overtype_mode == p_enabled) {
return;
}
overtype_mode = p_enabled; overtype_mode = p_enabled;
update(); update();
} }
@ -3036,6 +3044,10 @@ int TextEdit::get_line_count() const {
} }
void TextEdit::set_placeholder(const String &p_text) { void TextEdit::set_placeholder(const String &p_text) {
if (placeholder_text == p_text) {
return;
}
placeholder_text = p_text; placeholder_text = p_text;
_update_placeholder(); _update_placeholder();
update(); update();
@ -3945,6 +3957,10 @@ bool TextEdit::is_mouse_over_selection(bool p_edges) const {
/* Caret */ /* Caret */
void TextEdit::set_caret_type(CaretType p_type) { void TextEdit::set_caret_type(CaretType p_type) {
if (caret_type == p_type) {
return;
}
caret_type = p_type; caret_type = p_type;
update(); update();
} }
@ -3954,6 +3970,10 @@ TextEdit::CaretType TextEdit::get_caret_type() const {
} }
void TextEdit::set_caret_blink_enabled(const bool p_enabled) { void TextEdit::set_caret_blink_enabled(const bool p_enabled) {
if (caret_blink_enabled == p_enabled) {
return;
}
caret_blink_enabled = p_enabled; caret_blink_enabled = p_enabled;
if (has_focus()) { if (has_focus()) {
@ -4114,6 +4134,10 @@ String TextEdit::get_word_under_caret() const {
/* Selection. */ /* Selection. */
void TextEdit::set_selecting_enabled(const bool p_enabled) { void TextEdit::set_selecting_enabled(const bool p_enabled) {
if (selecting_enabled == p_enabled) {
return;
}
selecting_enabled = p_enabled; selecting_enabled = p_enabled;
if (!selecting_enabled) { if (!selecting_enabled) {
@ -4126,6 +4150,10 @@ bool TextEdit::is_selecting_enabled() const {
} }
void TextEdit::set_deselect_on_focus_loss_enabled(const bool p_enabled) { void TextEdit::set_deselect_on_focus_loss_enabled(const bool p_enabled) {
if (deselect_on_focus_loss_enabled == p_enabled) {
return;
}
deselect_on_focus_loss_enabled = p_enabled; deselect_on_focus_loss_enabled = p_enabled;
if (p_enabled && selection.active && !has_focus()) { if (p_enabled && selection.active && !has_focus()) {
deselect(); deselect();
@ -4431,6 +4459,10 @@ bool TextEdit::is_smooth_scroll_enabled() const {
} }
void TextEdit::set_scroll_past_end_of_file_enabled(const bool p_enabled) { void TextEdit::set_scroll_past_end_of_file_enabled(const bool p_enabled) {
if (scroll_past_end_of_file_enabled == p_enabled) {
return;
}
scroll_past_end_of_file_enabled = p_enabled; scroll_past_end_of_file_enabled = p_enabled;
update(); update();
} }
@ -4714,10 +4746,12 @@ void TextEdit::center_viewport_to_caret() {
/* Minimap */ /* Minimap */
void TextEdit::set_draw_minimap(bool p_enabled) { void TextEdit::set_draw_minimap(bool p_enabled) {
if (draw_minimap != p_enabled) { if (draw_minimap == p_enabled) {
draw_minimap = p_enabled; return;
_update_wrap_at_column();
} }
draw_minimap = p_enabled;
_update_wrap_at_column();
update(); update();
} }
@ -4726,10 +4760,12 @@ bool TextEdit::is_drawing_minimap() const {
} }
void TextEdit::set_minimap_width(int p_minimap_width) { void TextEdit::set_minimap_width(int p_minimap_width) {
if (minimap_width != p_minimap_width) { if (minimap_width == p_minimap_width) {
minimap_width = p_minimap_width; return;
_update_wrap_at_column();
} }
minimap_width = p_minimap_width;
_update_wrap_at_column();
update(); update();
} }
@ -4780,6 +4816,11 @@ String TextEdit::get_gutter_name(int p_gutter) const {
void TextEdit::set_gutter_type(int p_gutter, GutterType p_type) { void TextEdit::set_gutter_type(int p_gutter, GutterType p_type) {
ERR_FAIL_INDEX(p_gutter, gutters.size()); ERR_FAIL_INDEX(p_gutter, gutters.size());
if (gutters[p_gutter].type == p_type) {
return;
}
gutters.write[p_gutter].type = p_type; gutters.write[p_gutter].type = p_type;
update(); update();
} }
@ -4823,6 +4864,11 @@ bool TextEdit::is_gutter_drawn(int p_gutter) const {
void TextEdit::set_gutter_clickable(int p_gutter, bool p_clickable) { void TextEdit::set_gutter_clickable(int p_gutter, bool p_clickable) {
ERR_FAIL_INDEX(p_gutter, gutters.size()); ERR_FAIL_INDEX(p_gutter, gutters.size());
if (gutters[p_gutter].clickable == p_clickable) {
return;
}
gutters.write[p_gutter].clickable = p_clickable; gutters.write[p_gutter].clickable = p_clickable;
update(); update();
} }
@ -4878,6 +4924,10 @@ void TextEdit::merge_gutters(int p_from_line, int p_to_line) {
void TextEdit::set_gutter_custom_draw(int p_gutter, const Callable &p_draw_callback) { void TextEdit::set_gutter_custom_draw(int p_gutter, const Callable &p_draw_callback) {
ERR_FAIL_INDEX(p_gutter, gutters.size()); ERR_FAIL_INDEX(p_gutter, gutters.size());
if (gutters[p_gutter].custom_draw_callback == p_draw_callback) {
return;
}
gutters.write[p_gutter].custom_draw_callback = p_draw_callback; gutters.write[p_gutter].custom_draw_callback = p_draw_callback;
update(); update();
} }
@ -4898,6 +4948,11 @@ Variant TextEdit::get_line_gutter_metadata(int p_line, int p_gutter) const {
void TextEdit::set_line_gutter_text(int p_line, int p_gutter, const String &p_text) { void TextEdit::set_line_gutter_text(int p_line, int p_gutter, const String &p_text) {
ERR_FAIL_INDEX(p_line, text.size()); ERR_FAIL_INDEX(p_line, text.size());
ERR_FAIL_INDEX(p_gutter, gutters.size()); ERR_FAIL_INDEX(p_gutter, gutters.size());
if (text.get_line_gutter_text(p_line, p_gutter) == p_text) {
return;
}
text.set_line_gutter_text(p_line, p_gutter, p_text); text.set_line_gutter_text(p_line, p_gutter, p_text);
update(); update();
} }
@ -4911,6 +4966,11 @@ String TextEdit::get_line_gutter_text(int p_line, int p_gutter) const {
void TextEdit::set_line_gutter_icon(int p_line, int p_gutter, const Ref<Texture2D> &p_icon) { void TextEdit::set_line_gutter_icon(int p_line, int p_gutter, const Ref<Texture2D> &p_icon) {
ERR_FAIL_INDEX(p_line, text.size()); ERR_FAIL_INDEX(p_line, text.size());
ERR_FAIL_INDEX(p_gutter, gutters.size()); ERR_FAIL_INDEX(p_gutter, gutters.size());
if (text.get_line_gutter_icon(p_line, p_gutter) == p_icon) {
return;
}
text.set_line_gutter_icon(p_line, p_gutter, p_icon); text.set_line_gutter_icon(p_line, p_gutter, p_icon);
update(); update();
} }
@ -4924,6 +4984,11 @@ Ref<Texture2D> TextEdit::get_line_gutter_icon(int p_line, int p_gutter) const {
void TextEdit::set_line_gutter_item_color(int p_line, int p_gutter, const Color &p_color) { void TextEdit::set_line_gutter_item_color(int p_line, int p_gutter, const Color &p_color) {
ERR_FAIL_INDEX(p_line, text.size()); ERR_FAIL_INDEX(p_line, text.size());
ERR_FAIL_INDEX(p_gutter, gutters.size()); ERR_FAIL_INDEX(p_gutter, gutters.size());
if (text.get_line_gutter_item_color(p_line, p_gutter) == p_color) {
return;
}
text.set_line_gutter_item_color(p_line, p_gutter, p_color); text.set_line_gutter_item_color(p_line, p_gutter, p_color);
update(); update();
} }
@ -4949,6 +5014,11 @@ bool TextEdit::is_line_gutter_clickable(int p_line, int p_gutter) const {
// Line style // Line style
void TextEdit::set_line_background_color(int p_line, const Color &p_color) { void TextEdit::set_line_background_color(int p_line, const Color &p_color) {
ERR_FAIL_INDEX(p_line, text.size()); ERR_FAIL_INDEX(p_line, text.size());
if (text.get_line_background_color(p_line) == p_color) {
return;
}
text.set_line_background_color(p_line, p_color); text.set_line_background_color(p_line, p_color);
update(); update();
} }
@ -4960,6 +5030,10 @@ Color TextEdit::get_line_background_color(int p_line) const {
/* Syntax Highlighting. */ /* Syntax Highlighting. */
void TextEdit::set_syntax_highlighter(Ref<SyntaxHighlighter> p_syntax_highlighter) { void TextEdit::set_syntax_highlighter(Ref<SyntaxHighlighter> p_syntax_highlighter) {
if (syntax_highlighter == p_syntax_highlighter && syntax_highlighter.is_valid() == p_syntax_highlighter.is_valid()) {
return;
}
syntax_highlighter = p_syntax_highlighter; syntax_highlighter = p_syntax_highlighter;
if (syntax_highlighter.is_valid()) { if (syntax_highlighter.is_valid()) {
syntax_highlighter->set_text_edit(this); syntax_highlighter->set_text_edit(this);
@ -4973,6 +5047,10 @@ Ref<SyntaxHighlighter> TextEdit::get_syntax_highlighter() const {
/* Visual. */ /* Visual. */
void TextEdit::set_highlight_current_line(bool p_enabled) { void TextEdit::set_highlight_current_line(bool p_enabled) {
if (highlight_current_line == p_enabled) {
return;
}
highlight_current_line = p_enabled; highlight_current_line = p_enabled;
update(); update();
} }
@ -4982,6 +5060,10 @@ bool TextEdit::is_highlight_current_line_enabled() const {
} }
void TextEdit::set_highlight_all_occurrences(const bool p_enabled) { void TextEdit::set_highlight_all_occurrences(const bool p_enabled) {
if (highlight_all_occurrences == p_enabled) {
return;
}
highlight_all_occurrences = p_enabled; highlight_all_occurrences = p_enabled;
update(); update();
} }
@ -5008,6 +5090,10 @@ bool TextEdit::get_draw_control_chars() const {
} }
void TextEdit::set_draw_tabs(bool p_enabled) { void TextEdit::set_draw_tabs(bool p_enabled) {
if (draw_tabs == p_enabled) {
return;
}
draw_tabs = p_enabled; draw_tabs = p_enabled;
update(); update();
} }
@ -5017,6 +5103,10 @@ bool TextEdit::is_drawing_tabs() const {
} }
void TextEdit::set_draw_spaces(bool p_enabled) { void TextEdit::set_draw_spaces(bool p_enabled) {
if (draw_spaces == p_enabled) {
return;
}
draw_spaces = p_enabled; draw_spaces = p_enabled;
update(); update();
} }
@ -5462,6 +5552,10 @@ void TextEdit::_bind_methods() {
/* Internal API for CodeEdit. */ /* Internal API for CodeEdit. */
// Line hiding. // Line hiding.
void TextEdit::_set_hiding_enabled(bool p_enabled) { void TextEdit::_set_hiding_enabled(bool p_enabled) {
if (hiding_enabled == p_enabled) {
return;
}
if (!p_enabled) { if (!p_enabled) {
_unhide_all_lines(); _unhide_all_lines();
} }
@ -5488,6 +5582,11 @@ void TextEdit::_unhide_all_lines() {
void TextEdit::_set_line_as_hidden(int p_line, bool p_hidden) { void TextEdit::_set_line_as_hidden(int p_line, bool p_hidden) {
ERR_FAIL_INDEX(p_line, text.size()); ERR_FAIL_INDEX(p_line, text.size());
if (text.is_hidden(p_line) == p_hidden) {
return;
}
if (_is_hiding_enabled() || !p_hidden) { if (_is_hiding_enabled() || !p_hidden) {
text.set_hidden(p_line, p_hidden); text.set_hidden(p_line, p_hidden);
} }
@ -5496,6 +5595,10 @@ void TextEdit::_set_line_as_hidden(int p_line, bool p_hidden) {
// Symbol lookup. // Symbol lookup.
void TextEdit::_set_symbol_lookup_word(const String &p_symbol) { void TextEdit::_set_symbol_lookup_word(const String &p_symbol) {
if (lookup_symbol_word == p_symbol) {
return;
}
lookup_symbol_word = p_symbol; lookup_symbol_word = p_symbol;
update(); update();
} }

View file

@ -195,6 +195,9 @@ private:
void set(int p_line, const String &p_text, const Array &p_bidi_override); void set(int p_line, const String &p_text, const Array &p_bidi_override);
void set_hidden(int p_line, bool p_hidden) { void set_hidden(int p_line, bool p_hidden) {
if (text[p_line].hidden == p_hidden) {
return;
}
text.write[p_line].hidden = p_hidden; text.write[p_line].hidden = p_hidden;
if (!p_hidden && text[p_line].width > max_width) { if (!p_hidden && text[p_line].width > max_width) {
max_width = text[p_line].width; max_width = text[p_line].width;

View file

@ -294,29 +294,48 @@ void TextureButton::_bind_methods() {
} }
void TextureButton::set_normal_texture(const Ref<Texture2D> &p_normal) { void TextureButton::set_normal_texture(const Ref<Texture2D> &p_normal) {
if (normal == p_normal) {
return;
}
normal = p_normal; normal = p_normal;
update(); update();
update_minimum_size(); update_minimum_size();
} }
void TextureButton::set_pressed_texture(const Ref<Texture2D> &p_pressed) { void TextureButton::set_pressed_texture(const Ref<Texture2D> &p_pressed) {
if (pressed == p_pressed) {
return;
}
pressed = p_pressed; pressed = p_pressed;
update(); update();
update_minimum_size(); update_minimum_size();
} }
void TextureButton::set_hover_texture(const Ref<Texture2D> &p_hover) { void TextureButton::set_hover_texture(const Ref<Texture2D> &p_hover) {
if (hover == p_hover) {
return;
}
hover = p_hover; hover = p_hover;
update(); update();
update_minimum_size(); update_minimum_size();
} }
void TextureButton::set_disabled_texture(const Ref<Texture2D> &p_disabled) { void TextureButton::set_disabled_texture(const Ref<Texture2D> &p_disabled) {
if (disabled == p_disabled) {
return;
}
disabled = p_disabled; disabled = p_disabled;
update(); update();
} }
void TextureButton::set_click_mask(const Ref<BitMap> &p_click_mask) { void TextureButton::set_click_mask(const Ref<BitMap> &p_click_mask) {
if (click_mask == p_click_mask) {
return;
}
click_mask = p_click_mask; click_mask = p_click_mask;
update(); update();
update_minimum_size(); update_minimum_size();
@ -355,12 +374,20 @@ bool TextureButton::get_ignore_texture_size() const {
} }
void TextureButton::set_ignore_texture_size(bool p_ignore) { void TextureButton::set_ignore_texture_size(bool p_ignore) {
if (ignore_texture_size == p_ignore) {
return;
}
ignore_texture_size = p_ignore; ignore_texture_size = p_ignore;
update_minimum_size(); update_minimum_size();
update(); update();
} }
void TextureButton::set_stretch_mode(StretchMode p_stretch_mode) { void TextureButton::set_stretch_mode(StretchMode p_stretch_mode) {
if (stretch_mode == p_stretch_mode) {
return;
}
stretch_mode = p_stretch_mode; stretch_mode = p_stretch_mode;
update(); update();
} }
@ -370,6 +397,10 @@ TextureButton::StretchMode TextureButton::get_stretch_mode() const {
} }
void TextureButton::set_flip_h(bool p_flip) { void TextureButton::set_flip_h(bool p_flip) {
if (hflip == p_flip) {
return;
}
hflip = p_flip; hflip = p_flip;
update(); update();
} }
@ -379,6 +410,10 @@ bool TextureButton::is_flipped_h() const {
} }
void TextureButton::set_flip_v(bool p_flip) { void TextureButton::set_flip_v(bool p_flip) {
if (vflip == p_flip) {
return;
}
vflip = p_flip; vflip = p_flip;
update(); update();
} }

View file

@ -33,6 +33,10 @@
#include "core/config/engine.h" #include "core/config/engine.h"
void TextureProgressBar::set_under_texture(const Ref<Texture2D> &p_texture) { void TextureProgressBar::set_under_texture(const Ref<Texture2D> &p_texture) {
if (under == p_texture) {
return;
}
under = p_texture; under = p_texture;
update(); update();
update_minimum_size(); update_minimum_size();
@ -43,6 +47,10 @@ Ref<Texture2D> TextureProgressBar::get_under_texture() const {
} }
void TextureProgressBar::set_over_texture(const Ref<Texture2D> &p_texture) { void TextureProgressBar::set_over_texture(const Ref<Texture2D> &p_texture) {
if (over == p_texture) {
return;
}
over = p_texture; over = p_texture;
update(); update();
if (under.is_null()) { if (under.is_null()) {
@ -56,6 +64,11 @@ Ref<Texture2D> TextureProgressBar::get_over_texture() const {
void TextureProgressBar::set_stretch_margin(Side p_side, int p_size) { void TextureProgressBar::set_stretch_margin(Side p_side, int p_size) {
ERR_FAIL_INDEX((int)p_side, 4); ERR_FAIL_INDEX((int)p_side, 4);
if (stretch_margin[p_side] == p_size) {
return;
}
stretch_margin[p_side] = p_size; stretch_margin[p_side] = p_size;
update(); update();
update_minimum_size(); update_minimum_size();
@ -67,6 +80,10 @@ int TextureProgressBar::get_stretch_margin(Side p_side) const {
} }
void TextureProgressBar::set_nine_patch_stretch(bool p_stretch) { void TextureProgressBar::set_nine_patch_stretch(bool p_stretch) {
if (nine_patch_stretch == p_stretch) {
return;
}
nine_patch_stretch = p_stretch; nine_patch_stretch = p_stretch;
update(); update();
update_minimum_size(); update_minimum_size();
@ -91,6 +108,10 @@ Size2 TextureProgressBar::get_minimum_size() const {
} }
void TextureProgressBar::set_progress_texture(const Ref<Texture2D> &p_texture) { void TextureProgressBar::set_progress_texture(const Ref<Texture2D> &p_texture) {
if (progress == p_texture) {
return;
}
progress = p_texture; progress = p_texture;
update(); update();
update_minimum_size(); update_minimum_size();
@ -101,6 +122,10 @@ Ref<Texture2D> TextureProgressBar::get_progress_texture() const {
} }
void TextureProgressBar::set_progress_offset(Point2 p_offset) { void TextureProgressBar::set_progress_offset(Point2 p_offset) {
if (progress_offset == p_offset) {
return;
}
progress_offset = p_offset; progress_offset = p_offset;
update(); update();
} }
@ -110,6 +135,10 @@ Point2 TextureProgressBar::get_progress_offset() const {
} }
void TextureProgressBar::set_tint_under(const Color &p_tint) { void TextureProgressBar::set_tint_under(const Color &p_tint) {
if (tint_under == p_tint) {
return;
}
tint_under = p_tint; tint_under = p_tint;
update(); update();
} }
@ -119,6 +148,10 @@ Color TextureProgressBar::get_tint_under() const {
} }
void TextureProgressBar::set_tint_progress(const Color &p_tint) { void TextureProgressBar::set_tint_progress(const Color &p_tint) {
if (tint_progress == p_tint) {
return;
}
tint_progress = p_tint; tint_progress = p_tint;
update(); update();
} }
@ -128,6 +161,10 @@ Color TextureProgressBar::get_tint_progress() const {
} }
void TextureProgressBar::set_tint_over(const Color &p_tint) { void TextureProgressBar::set_tint_over(const Color &p_tint) {
if (tint_over == p_tint) {
return;
}
tint_over = p_tint; tint_over = p_tint;
update(); update();
} }
@ -548,6 +585,11 @@ void TextureProgressBar::_notification(int p_what) {
void TextureProgressBar::set_fill_mode(int p_fill) { void TextureProgressBar::set_fill_mode(int p_fill) {
ERR_FAIL_INDEX(p_fill, FILL_MODE_MAX); ERR_FAIL_INDEX(p_fill, FILL_MODE_MAX);
if (mode == (FillMode)p_fill) {
return;
}
mode = (FillMode)p_fill; mode = (FillMode)p_fill;
update(); update();
} }
@ -563,6 +605,11 @@ void TextureProgressBar::set_radial_initial_angle(float p_angle) {
while (p_angle < 0) { while (p_angle < 0) {
p_angle += 360; p_angle += 360;
} }
if (rad_init_angle == p_angle) {
return;
}
rad_init_angle = p_angle; rad_init_angle = p_angle;
update(); update();
} }
@ -572,7 +619,13 @@ float TextureProgressBar::get_radial_initial_angle() {
} }
void TextureProgressBar::set_fill_degrees(float p_angle) { void TextureProgressBar::set_fill_degrees(float p_angle) {
rad_max_degrees = CLAMP(p_angle, 0, 360); float angle_clamped = CLAMP(p_angle, 0, 360);
if (rad_max_degrees == angle_clamped) {
return;
}
rad_max_degrees = angle_clamped;
update(); update();
} }
@ -581,6 +634,10 @@ float TextureProgressBar::get_fill_degrees() {
} }
void TextureProgressBar::set_radial_center_offset(const Point2 &p_off) { void TextureProgressBar::set_radial_center_offset(const Point2 &p_off) {
if (rad_center_off == p_off) {
return;
}
rad_center_off = p_off; rad_center_off = p_off;
update(); update();
} }

View file

@ -179,6 +179,10 @@ Ref<Texture2D> TextureRect::get_texture() const {
} }
void TextureRect::set_ignore_texture_size(bool p_ignore) { void TextureRect::set_ignore_texture_size(bool p_ignore) {
if (ignore_texture_size == p_ignore) {
return;
}
ignore_texture_size = p_ignore; ignore_texture_size = p_ignore;
update(); update();
update_minimum_size(); update_minimum_size();
@ -189,6 +193,10 @@ bool TextureRect::get_ignore_texture_size() const {
} }
void TextureRect::set_stretch_mode(StretchMode p_mode) { void TextureRect::set_stretch_mode(StretchMode p_mode) {
if (stretch_mode == p_mode) {
return;
}
stretch_mode = p_mode; stretch_mode = p_mode;
update(); update();
} }
@ -198,6 +206,10 @@ TextureRect::StretchMode TextureRect::get_stretch_mode() const {
} }
void TextureRect::set_flip_h(bool p_flip) { void TextureRect::set_flip_h(bool p_flip) {
if (hflip == p_flip) {
return;
}
hflip = p_flip; hflip = p_flip;
update(); update();
} }
@ -207,6 +219,10 @@ bool TextureRect::is_flipped_h() const {
} }
void TextureRect::set_flip_v(bool p_flip) { void TextureRect::set_flip_v(bool p_flip) {
if (vflip == p_flip) {
return;
}
vflip = p_flip; vflip = p_flip;
update(); update();
} }

View file

@ -141,6 +141,10 @@ void TreeItem::_change_tree(Tree *p_tree) {
void TreeItem::set_cell_mode(int p_column, TreeCellMode p_mode) { void TreeItem::set_cell_mode(int p_column, TreeCellMode p_mode) {
ERR_FAIL_INDEX(p_column, cells.size()); ERR_FAIL_INDEX(p_column, cells.size());
if (cells[p_column].mode == p_mode) {
return;
}
Cell &c = cells.write[p_column]; Cell &c = cells.write[p_column];
c.mode = p_mode; c.mode = p_mode;
c.min = 0; c.min = 0;
@ -166,6 +170,10 @@ TreeItem::TreeCellMode TreeItem::get_cell_mode(int p_column) const {
void TreeItem::set_checked(int p_column, bool p_checked) { void TreeItem::set_checked(int p_column, bool p_checked) {
ERR_FAIL_INDEX(p_column, cells.size()); ERR_FAIL_INDEX(p_column, cells.size());
if (cells[p_column].checked == p_checked) {
return;
}
cells.write[p_column].checked = p_checked; cells.write[p_column].checked = p_checked;
cells.write[p_column].indeterminate = false; cells.write[p_column].indeterminate = false;
cells.write[p_column].cached_minimum_size_dirty = true; cells.write[p_column].cached_minimum_size_dirty = true;
@ -259,6 +267,11 @@ void TreeItem::_propagate_check_through_parents(int p_column, bool p_emit_signal
void TreeItem::set_text(int p_column, String p_text) { void TreeItem::set_text(int p_column, String p_text) {
ERR_FAIL_INDEX(p_column, cells.size()); ERR_FAIL_INDEX(p_column, cells.size());
if (cells[p_column].text == p_text) {
return;
}
cells.write[p_column].text = p_text; cells.write[p_column].text = p_text;
cells.write[p_column].dirty = true; cells.write[p_column].dirty = true;
@ -290,11 +303,14 @@ String TreeItem::get_text(int p_column) const {
void TreeItem::set_text_direction(int p_column, Control::TextDirection p_text_direction) { void TreeItem::set_text_direction(int p_column, Control::TextDirection p_text_direction) {
ERR_FAIL_INDEX(p_column, cells.size()); ERR_FAIL_INDEX(p_column, cells.size());
ERR_FAIL_COND((int)p_text_direction < -1 || (int)p_text_direction > 3); ERR_FAIL_COND((int)p_text_direction < -1 || (int)p_text_direction > 3);
if (cells[p_column].text_direction != p_text_direction) {
cells.write[p_column].text_direction = p_text_direction; if (cells[p_column].text_direction == p_text_direction) {
cells.write[p_column].dirty = true; return;
_changed_notify(p_column);
} }
cells.write[p_column].text_direction = p_text_direction;
cells.write[p_column].dirty = true;
_changed_notify(p_column);
cells.write[p_column].cached_minimum_size_dirty = true; cells.write[p_column].cached_minimum_size_dirty = true;
} }
@ -323,6 +339,10 @@ TextServer::StructuredTextParser TreeItem::get_structured_text_bidi_override(int
void TreeItem::set_structured_text_bidi_override_options(int p_column, Array p_args) { void TreeItem::set_structured_text_bidi_override_options(int p_column, Array p_args) {
ERR_FAIL_INDEX(p_column, cells.size()); ERR_FAIL_INDEX(p_column, cells.size());
if (cells[p_column].st_args == p_args) {
return;
}
cells.write[p_column].st_args = p_args; cells.write[p_column].st_args = p_args;
cells.write[p_column].dirty = true; cells.write[p_column].dirty = true;
cells.write[p_column].cached_minimum_size_dirty = true; cells.write[p_column].cached_minimum_size_dirty = true;
@ -355,6 +375,10 @@ String TreeItem::get_language(int p_column) const {
void TreeItem::set_suffix(int p_column, String p_suffix) { void TreeItem::set_suffix(int p_column, String p_suffix) {
ERR_FAIL_INDEX(p_column, cells.size()); ERR_FAIL_INDEX(p_column, cells.size());
if (cells[p_column].suffix == p_suffix) {
return;
}
cells.write[p_column].suffix = p_suffix; cells.write[p_column].suffix = p_suffix;
cells.write[p_column].cached_minimum_size_dirty = true; cells.write[p_column].cached_minimum_size_dirty = true;
@ -369,6 +393,10 @@ String TreeItem::get_suffix(int p_column) const {
void TreeItem::set_icon(int p_column, const Ref<Texture2D> &p_icon) { void TreeItem::set_icon(int p_column, const Ref<Texture2D> &p_icon) {
ERR_FAIL_INDEX(p_column, cells.size()); ERR_FAIL_INDEX(p_column, cells.size());
if (cells[p_column].icon == p_icon) {
return;
}
cells.write[p_column].icon = p_icon; cells.write[p_column].icon = p_icon;
cells.write[p_column].cached_minimum_size_dirty = true; cells.write[p_column].cached_minimum_size_dirty = true;
@ -383,6 +411,10 @@ Ref<Texture2D> TreeItem::get_icon(int p_column) const {
void TreeItem::set_icon_region(int p_column, const Rect2 &p_icon_region) { void TreeItem::set_icon_region(int p_column, const Rect2 &p_icon_region) {
ERR_FAIL_INDEX(p_column, cells.size()); ERR_FAIL_INDEX(p_column, cells.size());
if (cells[p_column].icon_region == p_icon_region) {
return;
}
cells.write[p_column].icon_region = p_icon_region; cells.write[p_column].icon_region = p_icon_region;
cells.write[p_column].cached_minimum_size_dirty = true; cells.write[p_column].cached_minimum_size_dirty = true;
@ -396,6 +428,11 @@ Rect2 TreeItem::get_icon_region(int p_column) const {
void TreeItem::set_icon_modulate(int p_column, const Color &p_modulate) { void TreeItem::set_icon_modulate(int p_column, const Color &p_modulate) {
ERR_FAIL_INDEX(p_column, cells.size()); ERR_FAIL_INDEX(p_column, cells.size());
if (cells[p_column].icon_color == p_modulate) {
return;
}
cells.write[p_column].icon_color = p_modulate; cells.write[p_column].icon_color = p_modulate;
_changed_notify(p_column); _changed_notify(p_column);
} }
@ -408,6 +445,10 @@ Color TreeItem::get_icon_modulate(int p_column) const {
void TreeItem::set_icon_max_width(int p_column, int p_max) { void TreeItem::set_icon_max_width(int p_column, int p_max) {
ERR_FAIL_INDEX(p_column, cells.size()); ERR_FAIL_INDEX(p_column, cells.size());
if (cells[p_column].icon_max_w == p_max) {
return;
}
cells.write[p_column].icon_max_w = p_max; cells.write[p_column].icon_max_w = p_max;
cells.write[p_column].cached_minimum_size_dirty = true; cells.write[p_column].cached_minimum_size_dirty = true;
@ -432,6 +473,10 @@ void TreeItem::set_range(int p_column, double p_value) {
p_value = cells[p_column].max; p_value = cells[p_column].max;
} }
if (cells[p_column].val == p_value) {
return;
}
cells.write[p_column].val = p_value; cells.write[p_column].val = p_value;
cells.write[p_column].dirty = true; cells.write[p_column].dirty = true;
_changed_notify(p_column); _changed_notify(p_column);
@ -449,6 +494,11 @@ bool TreeItem::is_range_exponential(int p_column) const {
void TreeItem::set_range_config(int p_column, double p_min, double p_max, double p_step, bool p_exp) { void TreeItem::set_range_config(int p_column, double p_min, double p_max, double p_step, bool p_exp) {
ERR_FAIL_INDEX(p_column, cells.size()); ERR_FAIL_INDEX(p_column, cells.size());
if (cells[p_column].min == p_min && cells[p_column].max == p_max && cells[p_column].step == p_step && cells[p_column].expr == p_exp) {
return;
}
cells.write[p_column].min = p_min; cells.write[p_column].min = p_min;
cells.write[p_column].max = p_max; cells.write[p_column].max = p_max;
cells.write[p_column].step = p_step; cells.write[p_column].step = p_step;
@ -537,6 +587,10 @@ void TreeItem::uncollapse_tree() {
} }
void TreeItem::set_custom_minimum_height(int p_height) { void TreeItem::set_custom_minimum_height(int p_height) {
if (custom_min_height == p_height) {
return;
}
custom_min_height = p_height; custom_min_height = p_height;
for (Cell &c : cells) { for (Cell &c : cells) {
@ -913,6 +967,9 @@ void TreeItem::set_as_cursor(int p_column) {
if (tree->select_mode != Tree::SELECT_MULTI) { if (tree->select_mode != Tree::SELECT_MULTI) {
return; return;
} }
if (tree->selected_col == p_column) {
return;
}
tree->selected_item = this; tree->selected_item = this;
tree->selected_col = p_column; tree->selected_col = p_column;
tree->update(); tree->update();
@ -990,6 +1047,11 @@ void TreeItem::set_button(int p_column, int p_idx, const Ref<Texture2D> &p_butto
ERR_FAIL_COND(p_button.is_null()); ERR_FAIL_COND(p_button.is_null());
ERR_FAIL_INDEX(p_column, cells.size()); ERR_FAIL_INDEX(p_column, cells.size());
ERR_FAIL_INDEX(p_idx, cells[p_column].buttons.size()); ERR_FAIL_INDEX(p_idx, cells[p_column].buttons.size());
if (cells[p_column].buttons[p_idx].texture == p_button) {
return;
}
cells.write[p_column].buttons.write[p_idx].texture = p_button; cells.write[p_column].buttons.write[p_idx].texture = p_button;
cells.write[p_column].cached_minimum_size_dirty = true; cells.write[p_column].cached_minimum_size_dirty = true;
@ -999,6 +1061,11 @@ void TreeItem::set_button(int p_column, int p_idx, const Ref<Texture2D> &p_butto
void TreeItem::set_button_color(int p_column, int p_idx, const Color &p_color) { void TreeItem::set_button_color(int p_column, int p_idx, const Color &p_color) {
ERR_FAIL_INDEX(p_column, cells.size()); ERR_FAIL_INDEX(p_column, cells.size());
ERR_FAIL_INDEX(p_idx, cells[p_column].buttons.size()); ERR_FAIL_INDEX(p_idx, cells[p_column].buttons.size());
if (cells[p_column].buttons[p_idx].color == p_color) {
return;
}
cells.write[p_column].buttons.write[p_idx].color = p_color; cells.write[p_column].buttons.write[p_idx].color = p_color;
_changed_notify(p_column); _changed_notify(p_column);
} }
@ -1007,6 +1074,10 @@ void TreeItem::set_button_disabled(int p_column, int p_idx, bool p_disabled) {
ERR_FAIL_INDEX(p_column, cells.size()); ERR_FAIL_INDEX(p_column, cells.size());
ERR_FAIL_INDEX(p_idx, cells[p_column].buttons.size()); ERR_FAIL_INDEX(p_idx, cells[p_column].buttons.size());
if (cells[p_column].buttons[p_idx].disabled == p_disabled) {
return;
}
cells.write[p_column].buttons.write[p_idx].disabled = p_disabled; cells.write[p_column].buttons.write[p_idx].disabled = p_disabled;
cells.write[p_column].cached_minimum_size_dirty = true; cells.write[p_column].cached_minimum_size_dirty = true;
@ -1023,6 +1094,10 @@ bool TreeItem::is_button_disabled(int p_column, int p_idx) const {
void TreeItem::set_editable(int p_column, bool p_editable) { void TreeItem::set_editable(int p_column, bool p_editable) {
ERR_FAIL_INDEX(p_column, cells.size()); ERR_FAIL_INDEX(p_column, cells.size());
if (cells[p_column].editable == p_editable) {
return;
}
cells.write[p_column].editable = p_editable; cells.write[p_column].editable = p_editable;
cells.write[p_column].cached_minimum_size_dirty = true; cells.write[p_column].cached_minimum_size_dirty = true;
@ -1036,6 +1111,11 @@ bool TreeItem::is_editable(int p_column) {
void TreeItem::set_custom_color(int p_column, const Color &p_color) { void TreeItem::set_custom_color(int p_column, const Color &p_color) {
ERR_FAIL_INDEX(p_column, cells.size()); ERR_FAIL_INDEX(p_column, cells.size());
if (cells[p_column].custom_color == true) {
return;
}
cells.write[p_column].custom_color = true; cells.write[p_column].custom_color = true;
cells.write[p_column].color = p_color; cells.write[p_column].color = p_color;
_changed_notify(p_column); _changed_notify(p_column);
@ -1092,6 +1172,11 @@ String TreeItem::get_tooltip(int p_column) const {
void TreeItem::set_custom_bg_color(int p_column, const Color &p_color, bool p_bg_outline) { void TreeItem::set_custom_bg_color(int p_column, const Color &p_color, bool p_bg_outline) {
ERR_FAIL_INDEX(p_column, cells.size()); ERR_FAIL_INDEX(p_column, cells.size());
if (cells[p_column].custom_bg_color && cells[p_column].custom_bg_outline == p_bg_outline && cells[p_column].bg_color == p_color) {
return;
}
cells.write[p_column].custom_bg_color = true; cells.write[p_column].custom_bg_color = true;
cells.write[p_column].custom_bg_outline = p_bg_outline; cells.write[p_column].custom_bg_outline = p_bg_outline;
cells.write[p_column].bg_color = p_color; cells.write[p_column].bg_color = p_color;
@ -1128,6 +1213,10 @@ bool TreeItem::is_custom_set_as_button(int p_column) const {
void TreeItem::set_text_alignment(int p_column, HorizontalAlignment p_alignment) { void TreeItem::set_text_alignment(int p_column, HorizontalAlignment p_alignment) {
ERR_FAIL_INDEX(p_column, cells.size()); ERR_FAIL_INDEX(p_column, cells.size());
if (cells[p_column].text_alignment == p_alignment) {
return;
}
cells.write[p_column].text_alignment = p_alignment; cells.write[p_column].text_alignment = p_alignment;
cells.write[p_column].cached_minimum_size_dirty = true; cells.write[p_column].cached_minimum_size_dirty = true;
@ -1142,6 +1231,10 @@ HorizontalAlignment TreeItem::get_text_alignment(int p_column) const {
void TreeItem::set_expand_right(int p_column, bool p_enable) { void TreeItem::set_expand_right(int p_column, bool p_enable) {
ERR_FAIL_INDEX(p_column, cells.size()); ERR_FAIL_INDEX(p_column, cells.size());
if (cells[p_column].expand_right == p_enable) {
return;
}
cells.write[p_column].expand_right = p_enable; cells.write[p_column].expand_right = p_enable;
cells.write[p_column].cached_minimum_size_dirty = true; cells.write[p_column].cached_minimum_size_dirty = true;
@ -1154,6 +1247,10 @@ bool TreeItem::get_expand_right(int p_column) const {
} }
void TreeItem::set_disable_folding(bool p_disable) { void TreeItem::set_disable_folding(bool p_disable) {
if (disable_folding == p_disable) {
return;
}
disable_folding = p_disable; disable_folding = p_disable;
for (Cell &c : cells) { for (Cell &c : cells) {
@ -4098,6 +4195,10 @@ void Tree::clear() {
}; };
void Tree::set_hide_root(bool p_enabled) { void Tree::set_hide_root(bool p_enabled) {
if (hide_root == p_enabled) {
return;
}
hide_root = p_enabled; hide_root = p_enabled;
update(); update();
} }
@ -4109,6 +4210,10 @@ bool Tree::is_root_hidden() const {
void Tree::set_column_custom_minimum_width(int p_column, int p_min_width) { void Tree::set_column_custom_minimum_width(int p_column, int p_min_width) {
ERR_FAIL_INDEX(p_column, columns.size()); ERR_FAIL_INDEX(p_column, columns.size());
if (columns[p_column].custom_min_width == p_min_width) {
return;
}
if (p_min_width < 0) { if (p_min_width < 0) {
return; return;
} }
@ -4119,12 +4224,21 @@ void Tree::set_column_custom_minimum_width(int p_column, int p_min_width) {
void Tree::set_column_expand(int p_column, bool p_expand) { void Tree::set_column_expand(int p_column, bool p_expand) {
ERR_FAIL_INDEX(p_column, columns.size()); ERR_FAIL_INDEX(p_column, columns.size());
if (columns[p_column].expand == p_expand) {
return;
}
columns.write[p_column].expand = p_expand; columns.write[p_column].expand = p_expand;
update(); update();
} }
void Tree::set_column_expand_ratio(int p_column, int p_ratio) { void Tree::set_column_expand_ratio(int p_column, int p_ratio) {
ERR_FAIL_INDEX(p_column, columns.size()); ERR_FAIL_INDEX(p_column, columns.size());
if (columns[p_column].expand_ratio == p_ratio) {
return;
}
columns.write[p_column].expand_ratio = p_ratio; columns.write[p_column].expand_ratio = p_ratio;
update(); update();
} }
@ -4132,6 +4246,10 @@ void Tree::set_column_expand_ratio(int p_column, int p_ratio) {
void Tree::set_column_clip_content(int p_column, bool p_fit) { void Tree::set_column_clip_content(int p_column, bool p_fit) {
ERR_FAIL_INDEX(p_column, columns.size()); ERR_FAIL_INDEX(p_column, columns.size());
if (columns[p_column].clip_content == p_fit) {
return;
}
columns.write[p_column].clip_content = p_fit; columns.write[p_column].clip_content = p_fit;
update(); update();
} }
@ -4454,6 +4572,10 @@ Rect2 Tree::get_item_rect(TreeItem *p_item, int p_column, int p_button) const {
} }
void Tree::set_column_titles_visible(bool p_show) { void Tree::set_column_titles_visible(bool p_show) {
if (show_column_titles == p_show) {
return;
}
show_column_titles = p_show; show_column_titles = p_show;
update(); update();
} }
@ -4464,6 +4586,11 @@ bool Tree::are_column_titles_visible() const {
void Tree::set_column_title(int p_column, const String &p_title) { void Tree::set_column_title(int p_column, const String &p_title) {
ERR_FAIL_INDEX(p_column, columns.size()); ERR_FAIL_INDEX(p_column, columns.size());
if (columns[p_column].title == p_title) {
return;
}
if (cache.font.is_null()) { // avoid a strange case that may corrupt stuff if (cache.font.is_null()) { // avoid a strange case that may corrupt stuff
update_cache(); update_cache();
} }
@ -4545,6 +4672,10 @@ void Tree::scroll_to_item(TreeItem *p_item, bool p_center_on_item) {
} }
void Tree::set_h_scroll_enabled(bool p_enable) { void Tree::set_h_scroll_enabled(bool p_enable) {
if (h_scroll_enabled == p_enable) {
return;
}
h_scroll_enabled = p_enable; h_scroll_enabled = p_enable;
update_minimum_size(); update_minimum_size();
} }
@ -4554,6 +4685,10 @@ bool Tree::is_h_scroll_enabled() const {
} }
void Tree::set_v_scroll_enabled(bool p_enable) { void Tree::set_v_scroll_enabled(bool p_enable) {
if (v_scroll_enabled == p_enable) {
return;
}
v_scroll_enabled = p_enable; v_scroll_enabled = p_enable;
update_minimum_size(); update_minimum_size();
} }
@ -4882,6 +5017,10 @@ void Tree::set_cursor_can_exit_tree(bool p_enable) {
} }
void Tree::set_hide_folding(bool p_hide) { void Tree::set_hide_folding(bool p_hide) {
if (hide_folding == p_hide) {
return;
}
hide_folding = p_hide; hide_folding = p_hide;
update(); update();
} }

View file

@ -208,6 +208,10 @@ Size2 VideoStreamPlayer::get_minimum_size() const {
} }
void VideoStreamPlayer::set_expand(bool p_expand) { void VideoStreamPlayer::set_expand(bool p_expand) {
if (expand == p_expand) {
return;
}
expand = p_expand; expand = p_expand;
update(); update();
update_minimum_size(); update_minimum_size();
@ -306,6 +310,10 @@ bool VideoStreamPlayer::is_playing() const {
} }
void VideoStreamPlayer::set_paused(bool p_paused) { void VideoStreamPlayer::set_paused(bool p_paused) {
if (paused == p_paused) {
return;
}
paused = p_paused; paused = p_paused;
if (!p_paused && !can_process()) { if (!p_paused && !can_process()) {
paused_from_tree = true; paused_from_tree = true;