Przeglądaj źródła

Avoid signal methods in ColorPicker to access the tree when it isn't in the tree

Kongfa Waroros 4 lat temu
rodzic
commit
7c6646c8ac
1 zmienionych plików z 8 dodań i 0 usunięć
  1. 8 0
      scene/gui/color_picker.cpp

+ 8 - 0
scene/gui/color_picker.cpp

@@ -578,6 +578,10 @@ void ColorPicker::_preset_input(const Ref<InputEvent> &p_event) {
 }
 
 void ColorPicker::_screen_input(const Ref<InputEvent> &p_event) {
+	if (!is_inside_tree()) {
+		return;
+	}
+
 	Ref<InputEventMouseButton> bev = p_event;
 	if (bev.is_valid() && bev->get_button_index() == BUTTON_LEFT && !bev->is_pressed()) {
 		emit_signal("color_changed", color);
@@ -607,6 +611,10 @@ void ColorPicker::_add_preset_pressed() {
 }
 
 void ColorPicker::_screen_pick_pressed() {
+	if (!is_inside_tree()) {
+		return;
+	}
+
 	Viewport *r = get_tree()->get_root();
 	if (!screen) {
 		screen = memnew(Control);