summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkobewi <kobewi4e@gmail.com>2023-04-07 17:44:38 +0200
committerYuri Sizov <yuris@humnom.net>2023-04-07 17:44:38 +0200
commit87a9d2c87e5314d21a554077ae5e61c8284d1dc7 (patch)
tree85d7da471a23a097909719c0c0b805aa64d08353
parent03827485d77663a15d1bfb56278a1e5da1dafa5c (diff)
Improve editor state initialization
(cherry picked from commit 13c8a9890d925fccd7a7988c63bc4867ed81ddeb)
-rw-r--r--editor/editor_data.cpp7
-rw-r--r--editor/plugins/canvas_item_editor_plugin.cpp16
2 files changed, 16 insertions, 7 deletions
diff --git a/editor/editor_data.cpp b/editor/editor_data.cpp
index 3059ce445c..9bdd39f684 100644
--- a/editor/editor_data.cpp
+++ b/editor/editor_data.cpp
@@ -293,6 +293,13 @@ Dictionary EditorData::get_scene_editor_states(int p_idx) const {
}
void EditorData::set_editor_states(const Dictionary &p_states) {
+ if (p_states.is_empty()) {
+ for (EditorPlugin *ep : editor_plugins) {
+ ep->clear();
+ }
+ return;
+ }
+
List<Variant> keys;
p_states.get_key_list(&keys);
diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp
index 5c0fa8968b..e969f9ab30 100644
--- a/editor/plugins/canvas_item_editor_plugin.cpp
+++ b/editor/plugins/canvas_item_editor_plugin.cpp
@@ -4691,7 +4691,6 @@ void CanvasItemEditor::_reset_drag() {
void CanvasItemEditor::_bind_methods() {
ClassDB::bind_method("_get_editor_data", &CanvasItemEditor::_get_editor_data);
- ClassDB::bind_method(D_METHOD("set_state"), &CanvasItemEditor::set_state);
ClassDB::bind_method(D_METHOD("update_viewport"), &CanvasItemEditor::update_viewport);
ClassDB::bind_method(D_METHOD("center_at", "position"), &CanvasItemEditor::center_at);
@@ -4905,6 +4904,13 @@ void CanvasItemEditor::set_state(const Dictionary &p_state) {
}
void CanvasItemEditor::clear() {
+ zoom = 1.0 / MAX(1, EDSCALE);
+ zoom_widget->set_zoom(zoom);
+
+ view_offset = Point2(-150 - RULER_WIDTH, -95 - RULER_WIDTH);
+ previous_update_view_offset = view_offset; // Moves the view a little bit to the left so that (0,0) is visible. The values a relative to a 16/10 screen.
+ _update_scrollbars();
+
grid_offset = EditorSettings::get_singleton()->get_project_metadata("2d_editor", "grid_offset", Vector2());
grid_step = EditorSettings::get_singleton()->get_project_metadata("2d_editor", "grid_step", Vector2(8, 8));
primary_grid_steps = EditorSettings::get_singleton()->get_project_metadata("2d_editor", "primary_grid_steps", 8);
@@ -4956,10 +4962,6 @@ void CanvasItemEditor::center_at(const Point2 &p_pos) {
}
CanvasItemEditor::CanvasItemEditor() {
- zoom = 1.0 / MAX(1, EDSCALE);
- view_offset = Point2(-150 - RULER_WIDTH, -95 - RULER_WIDTH);
- previous_update_view_offset = view_offset; // Moves the view a little bit to the left so that (0,0) is visible. The values a relative to a 16/10 screen
-
snap_target[0] = SNAP_TARGET_NONE;
snap_target[1] = SNAP_TARGET_NONE;
@@ -5406,8 +5408,8 @@ CanvasItemEditor::CanvasItemEditor() {
set_process_shortcut_input(true);
- // Update the menus' checkboxes
- call_deferred(SNAME("set_state"), get_state());
+ // Update the menus' checkboxes.
+ callable_mp(this, &CanvasItemEditor::set_state).bind(get_state()).call_deferred();
}
CanvasItemEditor *CanvasItemEditor::singleton = nullptr;