Browse Source

various gui nodes now listen for the changed signal on textures

rune-scape 1 year ago
parent
commit
dd1372b78e
3 changed files with 18 additions and 1 deletions
  1. 16 0
      scene/gui/line_edit.cpp
  2. 1 0
      scene/gui/line_edit.h
  3. 1 1
      scene/gui/texture_button.cpp

+ 16 - 0
scene/gui/line_edit.cpp

@@ -2482,11 +2482,27 @@ bool LineEdit::is_drag_and_drop_selection_enabled() const {
 	return drag_and_drop_selection_enabled;
 }
 
+void LineEdit::_texture_changed() {
+	_fit_to_width();
+	update_minimum_size();
+	queue_redraw();
+}
+
 void LineEdit::set_right_icon(const Ref<Texture2D> &p_icon) {
 	if (right_icon == p_icon) {
 		return;
 	}
+
+	if (right_icon.is_valid()) {
+		right_icon->disconnect_changed(callable_mp(this, &LineEdit::_texture_changed));
+	}
+
 	right_icon = p_icon;
+
+	if (right_icon.is_valid()) {
+		right_icon->connect_changed(callable_mp(this, &LineEdit::_texture_changed));
+	}
+
 	_fit_to_width();
 	update_minimum_size();
 	queue_redraw();

+ 1 - 0
scene/gui/line_edit.h

@@ -248,6 +248,7 @@ private:
 	void _move_caret_end(bool p_select);
 	void _backspace(bool p_word = false, bool p_all_to_left = false);
 	void _delete(bool p_word = false, bool p_all_to_right = false);
+	void _texture_changed();
 
 protected:
 	bool _is_over_clear_button(const Point2 &p_pos) const;

+ 1 - 1
scene/gui/texture_button.cpp

@@ -343,7 +343,7 @@ Ref<Texture2D> TextureButton::get_texture_focused() const {
 }
 
 void TextureButton::set_texture_focused(const Ref<Texture2D> &p_focused) {
-	focused = p_focused;
+	_set_texture(&focused, p_focused);
 }
 
 void TextureButton::_set_texture(Ref<Texture2D> *p_destination, const Ref<Texture2D> &p_texture) {