You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-12-03 16:55:53 +00:00
Fix theme propagation in various parts of the editor
This commit is contained in:
@@ -40,33 +40,39 @@
|
||||
#include "scene/resources/particle_process_material.h"
|
||||
#include "scene/resources/sky_material.h"
|
||||
|
||||
void MaterialEditor::_update_theme_item_cache() {
|
||||
Control::_update_theme_item_cache();
|
||||
|
||||
theme_cache.light_1_on = get_theme_icon(SNAME("MaterialPreviewLight1"), SNAME("EditorIcons"));
|
||||
theme_cache.light_1_off = get_theme_icon(SNAME("MaterialPreviewLight1Off"), SNAME("EditorIcons"));
|
||||
theme_cache.light_2_on = get_theme_icon(SNAME("MaterialPreviewLight2"), SNAME("EditorIcons"));
|
||||
theme_cache.light_2_off = get_theme_icon(SNAME("MaterialPreviewLight2Off"), SNAME("EditorIcons"));
|
||||
|
||||
theme_cache.sphere_on = get_theme_icon(SNAME("MaterialPreviewSphere"), SNAME("EditorIcons"));
|
||||
theme_cache.sphere_off = get_theme_icon(SNAME("MaterialPreviewSphereOff"), SNAME("EditorIcons"));
|
||||
theme_cache.box_on = get_theme_icon(SNAME("MaterialPreviewCube"), SNAME("EditorIcons"));
|
||||
theme_cache.box_off = get_theme_icon(SNAME("MaterialPreviewCubeOff"), SNAME("EditorIcons"));
|
||||
|
||||
theme_cache.checkerboard = get_theme_icon(SNAME("Checkerboard"), SNAME("EditorIcons"));
|
||||
}
|
||||
|
||||
void MaterialEditor::_notification(int p_what) {
|
||||
switch (p_what) {
|
||||
case NOTIFICATION_READY: {
|
||||
//get_scene()->connect("node_removed",this,"_node_removed");
|
||||
case NOTIFICATION_THEME_CHANGED: {
|
||||
light_1_switch->set_normal_texture(theme_cache.light_1_on);
|
||||
light_1_switch->set_pressed_texture(theme_cache.light_1_off);
|
||||
light_2_switch->set_normal_texture(theme_cache.light_2_on);
|
||||
light_2_switch->set_pressed_texture(theme_cache.light_2_off);
|
||||
|
||||
if (first_enter) {
|
||||
//it's in propertyeditor so.. could be moved around
|
||||
|
||||
light_1_switch->set_normal_texture(get_theme_icon(SNAME("MaterialPreviewLight1"), SNAME("EditorIcons")));
|
||||
light_1_switch->set_pressed_texture(get_theme_icon(SNAME("MaterialPreviewLight1Off"), SNAME("EditorIcons")));
|
||||
light_2_switch->set_normal_texture(get_theme_icon(SNAME("MaterialPreviewLight2"), SNAME("EditorIcons")));
|
||||
light_2_switch->set_pressed_texture(get_theme_icon(SNAME("MaterialPreviewLight2Off"), SNAME("EditorIcons")));
|
||||
|
||||
sphere_switch->set_normal_texture(get_theme_icon(SNAME("MaterialPreviewSphereOff"), SNAME("EditorIcons")));
|
||||
sphere_switch->set_pressed_texture(get_theme_icon(SNAME("MaterialPreviewSphere"), SNAME("EditorIcons")));
|
||||
box_switch->set_normal_texture(get_theme_icon(SNAME("MaterialPreviewCubeOff"), SNAME("EditorIcons")));
|
||||
box_switch->set_pressed_texture(get_theme_icon(SNAME("MaterialPreviewCube"), SNAME("EditorIcons")));
|
||||
|
||||
first_enter = false;
|
||||
}
|
||||
sphere_switch->set_normal_texture(theme_cache.sphere_off);
|
||||
sphere_switch->set_pressed_texture(theme_cache.sphere_on);
|
||||
box_switch->set_normal_texture(theme_cache.box_off);
|
||||
box_switch->set_pressed_texture(theme_cache.box_on);
|
||||
} break;
|
||||
|
||||
case NOTIFICATION_DRAW: {
|
||||
Ref<Texture2D> checkerboard = get_theme_icon(SNAME("Checkerboard"), SNAME("EditorIcons"));
|
||||
Size2 size = get_size();
|
||||
|
||||
draw_texture_rect(checkerboard, Rect2(Point2(), size), true);
|
||||
draw_texture_rect(theme_cache.checkerboard, Rect2(Point2(), size), true);
|
||||
} break;
|
||||
}
|
||||
}
|
||||
@@ -231,8 +237,6 @@ MaterialEditor::MaterialEditor() {
|
||||
vb_light->add_child(light_2_switch);
|
||||
light_2_switch->connect("pressed", callable_mp(this, &MaterialEditor::_button_pressed).bind(light_2_switch));
|
||||
|
||||
first_enter = true;
|
||||
|
||||
if (EditorSettings::get_singleton()->get_project_metadata("inspector_options", "material_preview_on_sphere", true)) {
|
||||
box_instance->hide();
|
||||
} else {
|
||||
|
||||
@@ -70,12 +70,23 @@ class MaterialEditor : public Control {
|
||||
|
||||
Ref<Material> material;
|
||||
|
||||
struct ThemeCache {
|
||||
Ref<Texture2D> light_1_on;
|
||||
Ref<Texture2D> light_1_off;
|
||||
Ref<Texture2D> light_2_on;
|
||||
Ref<Texture2D> light_2_off;
|
||||
Ref<Texture2D> sphere_on;
|
||||
Ref<Texture2D> sphere_off;
|
||||
Ref<Texture2D> box_on;
|
||||
Ref<Texture2D> box_off;
|
||||
Ref<Texture2D> checkerboard;
|
||||
} theme_cache;
|
||||
|
||||
void _button_pressed(Node *p_button);
|
||||
bool first_enter;
|
||||
|
||||
protected:
|
||||
virtual void _update_theme_item_cache() override;
|
||||
void _notification(int p_what);
|
||||
|
||||
static void _bind_methods();
|
||||
|
||||
public:
|
||||
|
||||
@@ -49,20 +49,22 @@ void MeshEditor::gui_input(const Ref<InputEvent> &p_event) {
|
||||
}
|
||||
}
|
||||
|
||||
void MeshEditor::_update_theme_item_cache() {
|
||||
SubViewportContainer::_update_theme_item_cache();
|
||||
|
||||
theme_cache.light_1_on = get_theme_icon(SNAME("MaterialPreviewLight1"), SNAME("EditorIcons"));
|
||||
theme_cache.light_1_off = get_theme_icon(SNAME("MaterialPreviewLight1Off"), SNAME("EditorIcons"));
|
||||
theme_cache.light_2_on = get_theme_icon(SNAME("MaterialPreviewLight2"), SNAME("EditorIcons"));
|
||||
theme_cache.light_2_off = get_theme_icon(SNAME("MaterialPreviewLight2Off"), SNAME("EditorIcons"));
|
||||
}
|
||||
|
||||
void MeshEditor::_notification(int p_what) {
|
||||
switch (p_what) {
|
||||
case NOTIFICATION_READY: {
|
||||
//get_scene()->connect("node_removed",this,"_node_removed");
|
||||
|
||||
if (first_enter) {
|
||||
//it's in propertyeditor so. could be moved around
|
||||
|
||||
light_1_switch->set_normal_texture(get_theme_icon(SNAME("MaterialPreviewLight1"), SNAME("EditorIcons")));
|
||||
light_1_switch->set_pressed_texture(get_theme_icon(SNAME("MaterialPreviewLight1Off"), SNAME("EditorIcons")));
|
||||
light_2_switch->set_normal_texture(get_theme_icon(SNAME("MaterialPreviewLight2"), SNAME("EditorIcons")));
|
||||
light_2_switch->set_pressed_texture(get_theme_icon(SNAME("MaterialPreviewLight2Off"), SNAME("EditorIcons")));
|
||||
first_enter = false;
|
||||
}
|
||||
case NOTIFICATION_THEME_CHANGED: {
|
||||
light_1_switch->set_normal_texture(theme_cache.light_1_on);
|
||||
light_1_switch->set_pressed_texture(theme_cache.light_1_off);
|
||||
light_2_switch->set_normal_texture(theme_cache.light_2_on);
|
||||
light_2_switch->set_pressed_texture(theme_cache.light_2_off);
|
||||
} break;
|
||||
}
|
||||
}
|
||||
@@ -160,8 +162,6 @@ MeshEditor::MeshEditor() {
|
||||
vb_light->add_child(light_2_switch);
|
||||
light_2_switch->connect("pressed", callable_mp(this, &MeshEditor::_button_pressed).bind(light_2_switch));
|
||||
|
||||
first_enter = true;
|
||||
|
||||
rot_x = 0;
|
||||
rot_y = 0;
|
||||
}
|
||||
|
||||
@@ -58,12 +58,18 @@ class MeshEditor : public SubViewportContainer {
|
||||
TextureButton *light_1_switch = nullptr;
|
||||
TextureButton *light_2_switch = nullptr;
|
||||
|
||||
void _button_pressed(Node *p_button);
|
||||
bool first_enter;
|
||||
struct ThemeCache {
|
||||
Ref<Texture2D> light_1_on;
|
||||
Ref<Texture2D> light_1_off;
|
||||
Ref<Texture2D> light_2_on;
|
||||
Ref<Texture2D> light_2_off;
|
||||
} theme_cache;
|
||||
|
||||
void _button_pressed(Node *p_button);
|
||||
void _update_rotation();
|
||||
|
||||
protected:
|
||||
virtual void _update_theme_item_cache() override;
|
||||
void _notification(int p_what);
|
||||
void gui_input(const Ref<InputEvent> &p_event) override;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user