Browse Source

Color Pickers Respect Settings

Updated editor_node with function that sets up color pickers throughout Godot to respect editor's settings.
Guh-Feng 3 years ago
parent
commit
1b8652e86a

+ 7 - 0
editor/editor_node.cpp

@@ -3588,6 +3588,13 @@ void EditorNode::set_current_scene(int p_idx) {
 	call_deferred(SNAME("_set_main_scene_state"), state, get_edited_scene()); // Do after everything else is done setting up.
 	call_deferred(SNAME("_set_main_scene_state"), state, get_edited_scene()); // Do after everything else is done setting up.
 }
 }
 
 
+void EditorNode::setup_color_picker(ColorPicker *picker) {
+	int default_color_mode = EDITOR_GET("interface/inspector/default_color_picker_mode");
+	int picker_shape = EDITOR_GET("interface/inspector/default_color_picker_shape");
+	picker->set_color_mode((ColorPicker::ColorModeType)default_color_mode);
+	picker->set_picker_shape((ColorPicker::PickerShapeType)picker_shape);
+}
+
 bool EditorNode::is_scene_open(const String &p_path) {
 bool EditorNode::is_scene_open(const String &p_path) {
 	for (int i = 0; i < editor_data.get_edited_scene_count(); i++) {
 	for (int i = 0; i < editor_data.get_edited_scene_count(); i++) {
 		if (editor_data.get_scene_path(i) == p_path) {
 		if (editor_data.get_scene_path(i) == p_path) {

+ 2 - 0
editor/editor_node.h

@@ -783,6 +783,8 @@ public:
 	void set_current_version(uint64_t p_version);
 	void set_current_version(uint64_t p_version);
 	void set_current_scene(int p_idx);
 	void set_current_scene(int p_idx);
 
 
+	void setup_color_picker(ColorPicker *picker);
+
 	void request_instance_scene(const String &p_path);
 	void request_instance_scene(const String &p_path);
 	void request_instantiate_scenes(const Vector<String> &p_files);
 	void request_instantiate_scenes(const Vector<String> &p_files);
 
 

+ 1 - 9
editor/editor_properties.cpp

@@ -3007,14 +3007,6 @@ void EditorPropertyColor::_popup_closed() {
 	}
 	}
 }
 }
 
 
-void EditorPropertyColor::_picker_created() {
-	// get default color picker mode from editor settings
-	int default_color_mode = EDITOR_GET("interface/inspector/default_color_picker_mode");
-	picker->get_picker()->set_color_mode((ColorPicker::ColorModeType)default_color_mode);
-	int picker_shape = EDITOR_GET("interface/inspector/default_color_picker_shape");
-	picker->get_picker()->set_picker_shape((ColorPicker::PickerShapeType)picker_shape);
-}
-
 void EditorPropertyColor::_picker_opening() {
 void EditorPropertyColor::_picker_opening() {
 	last_color = picker->get_pick_color();
 	last_color = picker->get_pick_color();
 }
 }
@@ -3059,7 +3051,7 @@ EditorPropertyColor::EditorPropertyColor() {
 	picker->set_flat(true);
 	picker->set_flat(true);
 	picker->connect("color_changed", callable_mp(this, &EditorPropertyColor::_color_changed));
 	picker->connect("color_changed", callable_mp(this, &EditorPropertyColor::_color_changed));
 	picker->connect("popup_closed", callable_mp(this, &EditorPropertyColor::_popup_closed));
 	picker->connect("popup_closed", callable_mp(this, &EditorPropertyColor::_popup_closed));
-	picker->connect("picker_created", callable_mp(this, &EditorPropertyColor::_picker_created));
+	picker->get_popup()->connect("about_to_popup", callable_mp(EditorNode::get_singleton(), &EditorNode::setup_color_picker), varray(picker->get_picker()));
 	picker->get_popup()->connect("about_to_popup", callable_mp(this, &EditorPropertyColor::_picker_opening));
 	picker->get_popup()->connect("about_to_popup", callable_mp(this, &EditorPropertyColor::_picker_opening));
 }
 }
 
 

+ 1 - 0
editor/plugins/gradient_editor_plugin.cpp

@@ -85,6 +85,7 @@ void GradientEditor::reverse_gradient() {
 }
 }
 
 
 GradientEditor::GradientEditor() {
 GradientEditor::GradientEditor() {
+	GradientEdit::get_popup()->connect("about_to_popup", callable_mp(EditorNode::get_singleton(), &EditorNode::setup_color_picker), varray(GradientEdit::get_picker()));
 	editing = false;
 	editing = false;
 }
 }
 
 

+ 3 - 0
editor/plugins/node_3d_editor_plugin.cpp

@@ -8028,6 +8028,7 @@ void fragment() {
 		sun_color->set_edit_alpha(false);
 		sun_color->set_edit_alpha(false);
 		sun_vb->add_margin_child(TTR("Sun Color"), sun_color);
 		sun_vb->add_margin_child(TTR("Sun Color"), sun_color);
 		sun_color->connect("color_changed", callable_mp(this, &Node3DEditor::_preview_settings_changed).unbind(1));
 		sun_color->connect("color_changed", callable_mp(this, &Node3DEditor::_preview_settings_changed).unbind(1));
+		sun_color->get_popup()->connect("about_to_popup", callable_mp(EditorNode::get_singleton(), &EditorNode::setup_color_picker), varray(sun_color->get_picker()));
 
 
 		sun_energy = memnew(EditorSpinSlider);
 		sun_energy = memnew(EditorSpinSlider);
 		sun_vb->add_margin_child(TTR("Sun Energy"), sun_energy);
 		sun_vb->add_margin_child(TTR("Sun Energy"), sun_energy);
@@ -8073,10 +8074,12 @@ void fragment() {
 		environ_sky_color = memnew(ColorPickerButton);
 		environ_sky_color = memnew(ColorPickerButton);
 		environ_sky_color->set_edit_alpha(false);
 		environ_sky_color->set_edit_alpha(false);
 		environ_sky_color->connect("color_changed", callable_mp(this, &Node3DEditor::_preview_settings_changed).unbind(1));
 		environ_sky_color->connect("color_changed", callable_mp(this, &Node3DEditor::_preview_settings_changed).unbind(1));
+		environ_sky_color->get_popup()->connect("about_to_popup", callable_mp(EditorNode::get_singleton(), &EditorNode::setup_color_picker), varray(environ_sky_color->get_picker()));
 		environ_vb->add_margin_child(TTR("Sky Color"), environ_sky_color);
 		environ_vb->add_margin_child(TTR("Sky Color"), environ_sky_color);
 		environ_ground_color = memnew(ColorPickerButton);
 		environ_ground_color = memnew(ColorPickerButton);
 		environ_ground_color->connect("color_changed", callable_mp(this, &Node3DEditor::_preview_settings_changed).unbind(1));
 		environ_ground_color->connect("color_changed", callable_mp(this, &Node3DEditor::_preview_settings_changed).unbind(1));
 		environ_ground_color->set_edit_alpha(false);
 		environ_ground_color->set_edit_alpha(false);
+		environ_ground_color->get_popup()->connect("about_to_popup", callable_mp(EditorNode::get_singleton(), &EditorNode::setup_color_picker), varray(environ_ground_color->get_picker()));
 		environ_vb->add_margin_child(TTR("Ground Color"), environ_ground_color);
 		environ_vb->add_margin_child(TTR("Ground Color"), environ_ground_color);
 		environ_energy = memnew(EditorSpinSlider);
 		environ_energy = memnew(EditorSpinSlider);
 		environ_energy->connect("value_changed", callable_mp(this, &Node3DEditor::_preview_settings_changed).unbind(1));
 		environ_energy->connect("value_changed", callable_mp(this, &Node3DEditor::_preview_settings_changed).unbind(1));

+ 1 - 7
editor/plugins/script_text_editor.cpp

@@ -1862,16 +1862,10 @@ void ScriptTextEditor::_enable_code_editor() {
 	color_picker = memnew(ColorPicker);
 	color_picker = memnew(ColorPicker);
 	color_picker->set_deferred_mode(true);
 	color_picker->set_deferred_mode(true);
 	color_picker->connect("color_changed", callable_mp(this, &ScriptTextEditor::_color_changed));
 	color_picker->connect("color_changed", callable_mp(this, &ScriptTextEditor::_color_changed));
+	color_panel->connect("about_to_popup", callable_mp(EditorNode::get_singleton(), &EditorNode::setup_color_picker), varray(color_picker));
 
 
 	color_panel->add_child(color_picker);
 	color_panel->add_child(color_picker);
 
 
-	// get default color picker mode from editor settings
-	int default_color_mode = EDITOR_GET("interface/inspector/default_color_picker_mode");
-	color_picker->set_color_mode((ColorPicker::ColorModeType)default_color_mode);
-
-	int picker_shape = EDITOR_GET("interface/inspector/default_color_picker_shape");
-	color_picker->set_picker_shape((ColorPicker::PickerShapeType)picker_shape);
-
 	quick_open = memnew(ScriptEditorQuickOpen);
 	quick_open = memnew(ScriptEditorQuickOpen);
 	quick_open->connect("goto_line", callable_mp(this, &ScriptTextEditor::_goto_line));
 	quick_open->connect("goto_line", callable_mp(this, &ScriptTextEditor::_goto_line));
 	add_child(quick_open);
 	add_child(quick_open);

+ 1 - 0
editor/plugins/theme_editor_plugin.cpp

@@ -2492,6 +2492,7 @@ void ThemeTypeEditor::_update_type_items() {
 			if (E.value) {
 			if (E.value) {
 				item_editor->set_pick_color(edited_theme->get_color(E.key, edited_type));
 				item_editor->set_pick_color(edited_theme->get_color(E.key, edited_type));
 				item_editor->connect("color_changed", callable_mp(this, &ThemeTypeEditor::_color_item_changed), varray(E.key));
 				item_editor->connect("color_changed", callable_mp(this, &ThemeTypeEditor::_color_item_changed), varray(E.key));
+				item_editor->get_popup()->connect("about_to_popup", callable_mp(EditorNode::get_singleton(), &EditorNode::setup_color_picker), varray(item_editor->get_picker()));
 			} else {
 			} else {
 				item_editor->set_pick_color(Theme::get_default()->get_color(E.key, edited_type));
 				item_editor->set_pick_color(Theme::get_default()->get_color(E.key, edited_type));
 				item_editor->set_disabled(true);
 				item_editor->set_disabled(true);

+ 1 - 7
editor/property_editor.cpp

@@ -828,13 +828,7 @@ bool CustomPropertyEditor::edit(Object *p_owner, const String &p_name, Variant::
 				value_vbox->add_child(color_picker);
 				value_vbox->add_child(color_picker);
 				color_picker->hide();
 				color_picker->hide();
 				color_picker->connect("color_changed", callable_mp(this, &CustomPropertyEditor::_color_changed));
 				color_picker->connect("color_changed", callable_mp(this, &CustomPropertyEditor::_color_changed));
-
-				// get default color picker mode from editor settings
-				int default_color_mode = EDITOR_GET("interface/inspector/default_color_picker_mode");
-				color_picker->set_color_mode((ColorPicker::ColorModeType)default_color_mode);
-
-				int picker_shape = EDITOR_GET("interface/inspector/default_color_picker_shape");
-				color_picker->set_picker_shape((ColorPicker::PickerShapeType)picker_shape);
+				color_picker->connect("show", callable_mp(EditorNode::get_singleton(), &EditorNode::setup_color_picker), varray(color_picker));
 			}
 			}
 
 
 			color_picker->show();
 			color_picker->show();

+ 4 - 0
scene/gui/gradient_edit.cpp

@@ -437,6 +437,10 @@ ColorPicker *GradientEdit::get_picker() {
 	return picker;
 	return picker;
 }
 }
 
 
+PopupPanel *GradientEdit::get_popup() {
+	return popup;
+}
+
 void GradientEdit::_bind_methods() {
 void GradientEdit::_bind_methods() {
 	ADD_SIGNAL(MethodInfo("ramp_changed"));
 	ADD_SIGNAL(MethodInfo("ramp_changed"));
 }
 }

+ 1 - 0
scene/gui/gradient_edit.h

@@ -75,6 +75,7 @@ public:
 	void set_interpolation_mode(Gradient::InterpolationMode p_interp_mode);
 	void set_interpolation_mode(Gradient::InterpolationMode p_interp_mode);
 	Gradient::InterpolationMode get_interpolation_mode();
 	Gradient::InterpolationMode get_interpolation_mode();
 	ColorPicker *get_picker();
 	ColorPicker *get_picker();
+	PopupPanel *get_popup();
 
 
 	virtual Size2 get_minimum_size() const override;
 	virtual Size2 get_minimum_size() const override;