@@ -3048,6 +3048,7 @@ void Node3DEditorViewport::_notification(int p_what) {
30483048 switch (p_what) {
30493049 case NOTIFICATION_TRANSLATION_CHANGED: {
30503050 _update_name ();
3051+ _update_centered_labels ();
30513052 message_time = MIN (message_time, 0.001 ); // Make it disappear.
30523053
30533054 Key key = (OS::get_singleton ()->has_feature (" macos" ) || OS::get_singleton ()->has_feature (" web_macos" ) || OS::get_singleton ()->has_feature (" web_ios" )) ? Key::META : Key::CTRL;
@@ -3154,9 +3155,11 @@ void Node3DEditorViewport::_notification(int p_what) {
31543155 // then switch the viewport's camera to the scene's viewport camera
31553156 if (previewing != nullptr ) {
31563157 previewing->disconnect (SceneStringName (tree_exited), callable_mp (this , &Node3DEditorViewport::_preview_exited_scene));
3158+ previewing->disconnect (CoreStringName (property_list_changed), callable_mp (this , &Node3DEditorViewport::_preview_camera_property_changed));
31573159 }
31583160 previewing = cam;
31593161 previewing->connect (SceneStringName (tree_exited), callable_mp (this , &Node3DEditorViewport::_preview_exited_scene));
3162+ previewing->connect (CoreStringName (property_list_changed), callable_mp (this , &Node3DEditorViewport::_preview_camera_property_changed));
31603163 RS::get_singleton ()->viewport_attach_camera (viewport->get_viewport_rid (), cam->get_camera ());
31613164 surface->queue_redraw ();
31623165 }
@@ -3335,13 +3338,6 @@ void Node3DEditorViewport::_notification(int p_what) {
33353338 Math::remap (fps, 110 , 10 , 0 , 1 )));
33363339 }
33373340
3338- bool show_cinema = view_display_menu->get_popup ()->is_item_checked (view_display_menu->get_popup ()->get_item_index (VIEW_CINEMATIC_PREVIEW));
3339- cinema_label->set_visible (show_cinema);
3340- if (show_cinema) {
3341- float cinema_half_width = cinema_label->get_size ().width / 2 .0f ;
3342- cinema_label->set_anchor_and_offset (SIDE_LEFT, 0 .5f , -cinema_half_width);
3343- }
3344-
33453341 if (lock_rotation) {
33463342 float locked_half_width = locked_label->get_size ().width / 2 .0f ;
33473343 locked_label->set_anchor_and_offset (SIDE_LEFT, 0 .5f , -locked_half_width);
@@ -3425,6 +3421,8 @@ void Node3DEditorViewport::_notification(int p_what) {
34253421 } break ;
34263422
34273423 case NOTIFICATION_THEME_CHANGED: {
3424+ _update_centered_labels ();
3425+
34283426 view_display_menu->set_button_icon (get_editor_theme_icon (SNAME (" GuiTabMenuHl" )));
34293427 preview_camera->set_button_icon (get_editor_theme_icon (SNAME (" Camera3D" )));
34303428 Control *gui_base = EditorNode::get_singleton ()->get_gui_base ();
@@ -3885,6 +3883,10 @@ void Node3DEditorViewport::_menu_option(int p_option) {
38853883 previewing_cinema = true ;
38863884 _toggle_cinema_preview (current);
38873885
3886+ cinema_label->set_visible (current);
3887+ _update_centered_labels ();
3888+ surface->queue_redraw ();
3889+
38883890 if (current) {
38893891 preview_camera->hide ();
38903892 } else {
@@ -4065,6 +4067,20 @@ void Node3DEditorViewport::_preview_exited_scene() {
40654067 view_display_menu->show ();
40664068}
40674069
4070+ void Node3DEditorViewport::_preview_camera_property_changed () {
4071+ if (previewing) {
4072+ surface->queue_redraw ();
4073+ }
4074+ }
4075+
4076+ void Node3DEditorViewport::_update_centered_labels () {
4077+ if (cinema_label->is_visible ()) {
4078+ cinema_label->reset_size ();
4079+ float cinema_half_width = cinema_label->get_size ().width / 2 .0f ;
4080+ cinema_label->set_anchor_and_offset (SIDE_LEFT, 0 .5f , -cinema_half_width);
4081+ }
4082+ }
4083+
40684084void Node3DEditorViewport::_init_gizmo_instance (int p_idx) {
40694085 uint32_t layer = 1 << (GIZMO_BASE_LAYER + p_idx);
40704086
@@ -4158,6 +4174,7 @@ void Node3DEditorViewport::_toggle_camera_preview(bool p_activate) {
41584174
41594175 if (!p_activate) {
41604176 previewing->disconnect (SceneStringName (tree_exiting), callable_mp (this , &Node3DEditorViewport::_preview_exited_scene));
4177+ previewing->disconnect (CoreStringName (property_list_changed), callable_mp (this , &Node3DEditorViewport::_preview_camera_property_changed));
41614178 previewing = nullptr ;
41624179 RS::get_singleton ()->viewport_attach_camera (viewport->get_viewport_rid (), camera->get_camera ()); // restore
41634180 if (!preview) {
@@ -4168,6 +4185,7 @@ void Node3DEditorViewport::_toggle_camera_preview(bool p_activate) {
41684185 } else {
41694186 previewing = preview;
41704187 previewing->connect (SceneStringName (tree_exiting), callable_mp (this , &Node3DEditorViewport::_preview_exited_scene));
4188+ previewing->connect (CoreStringName (property_list_changed), callable_mp (this , &Node3DEditorViewport::_preview_camera_property_changed));
41714189 RS::get_singleton ()->viewport_attach_camera (viewport->get_viewport_rid (), preview->get_camera ()); // replace
41724190 surface->queue_redraw ();
41734191 }
@@ -4180,6 +4198,7 @@ void Node3DEditorViewport::_toggle_cinema_preview(bool p_activate) {
41804198 if (!previewing_cinema) {
41814199 if (previewing != nullptr ) {
41824200 previewing->disconnect (SceneStringName (tree_exited), callable_mp (this , &Node3DEditorViewport::_preview_exited_scene));
4201+ previewing->disconnect (CoreStringName (property_list_changed), callable_mp (this , &Node3DEditorViewport::_preview_camera_property_changed));
41834202 }
41844203
41854204 previewing = nullptr ;
@@ -4431,6 +4450,12 @@ void Node3DEditorViewport::set_state(const Dictionary &p_state) {
44314450
44324451 int idx = view_display_menu->get_popup ()->get_item_index (VIEW_CINEMATIC_PREVIEW);
44334452 view_display_menu->get_popup ()->set_item_checked (idx, previewing_cinema);
4453+
4454+ cinema_label->set_visible (previewing_cinema);
4455+ if (previewing_cinema) {
4456+ _update_centered_labels ();
4457+ surface->queue_redraw ();
4458+ }
44344459 }
44354460
44364461 if (preview_camera->is_connected (SceneStringName (toggled), callable_mp (this , &Node3DEditorViewport::_toggle_camera_preview))) {
@@ -4441,6 +4466,7 @@ void Node3DEditorViewport::set_state(const Dictionary &p_state) {
44414466 if (Object::cast_to<Camera3D>(pv)) {
44424467 previewing = Object::cast_to<Camera3D>(pv);
44434468 previewing->connect (SceneStringName (tree_exiting), callable_mp (this , &Node3DEditorViewport::_preview_exited_scene));
4469+ previewing->connect (CoreStringName (property_list_changed), callable_mp (this , &Node3DEditorViewport::_preview_camera_property_changed));
44444470 RS::get_singleton ()->viewport_attach_camera (viewport->get_viewport_rid (), previewing->get_camera ()); // replace
44454471 surface->queue_redraw ();
44464472 previewing_camera = true ;
0 commit comments