@@ -2986,6 +2986,7 @@ void Node3DEditorViewport::_notification(int p_what) {
29862986 switch (p_what) {
29872987 case NOTIFICATION_TRANSLATION_CHANGED: {
29882988 _update_name ();
2989+ _update_centered_labels ();
29892990 message_time = MIN (message_time, 0.001 ); // Make it disappear.
29902991
29912992 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;
@@ -3092,9 +3093,11 @@ void Node3DEditorViewport::_notification(int p_what) {
30923093 // then switch the viewport's camera to the scene's viewport camera
30933094 if (previewing != nullptr ) {
30943095 previewing->disconnect (SceneStringName (tree_exited), callable_mp (this , &Node3DEditorViewport::_preview_exited_scene));
3096+ previewing->disconnect (CoreStringName (property_list_changed), callable_mp (this , &Node3DEditorViewport::_preview_camera_property_changed));
30953097 }
30963098 previewing = cam;
30973099 previewing->connect (SceneStringName (tree_exited), callable_mp (this , &Node3DEditorViewport::_preview_exited_scene));
3100+ previewing->connect (CoreStringName (property_list_changed), callable_mp (this , &Node3DEditorViewport::_preview_camera_property_changed));
30983101 RS::get_singleton ()->viewport_attach_camera (viewport->get_viewport_rid (), cam->get_camera ());
30993102 surface->queue_redraw ();
31003103 }
@@ -3273,13 +3276,6 @@ void Node3DEditorViewport::_notification(int p_what) {
32733276 Math::remap (fps, 110 , 10 , 0 , 1 )));
32743277 }
32753278
3276- bool show_cinema = view_display_menu->get_popup ()->is_item_checked (view_display_menu->get_popup ()->get_item_index (VIEW_CINEMATIC_PREVIEW));
3277- cinema_label->set_visible (show_cinema);
3278- if (show_cinema) {
3279- float cinema_half_width = cinema_label->get_size ().width / 2 .0f ;
3280- cinema_label->set_anchor_and_offset (SIDE_LEFT, 0 .5f , -cinema_half_width);
3281- }
3282-
32833279 if (lock_rotation) {
32843280 float locked_half_width = locked_label->get_size ().width / 2 .0f ;
32853281 locked_label->set_anchor_and_offset (SIDE_LEFT, 0 .5f , -locked_half_width);
@@ -3363,6 +3359,8 @@ void Node3DEditorViewport::_notification(int p_what) {
33633359 } break ;
33643360
33653361 case NOTIFICATION_THEME_CHANGED: {
3362+ _update_centered_labels ();
3363+
33663364 view_display_menu->set_button_icon (get_editor_theme_icon (SNAME (" GuiTabMenuHl" )));
33673365 preview_camera->set_button_icon (get_editor_theme_icon (SNAME (" Camera3D" )));
33683366 Control *gui_base = EditorNode::get_singleton ()->get_gui_base ();
@@ -3823,6 +3821,10 @@ void Node3DEditorViewport::_menu_option(int p_option) {
38233821 previewing_cinema = true ;
38243822 _toggle_cinema_preview (current);
38253823
3824+ cinema_label->set_visible (current);
3825+ _update_centered_labels ();
3826+ surface->queue_redraw ();
3827+
38263828 if (current) {
38273829 preview_camera->hide ();
38283830 } else {
@@ -4003,6 +4005,20 @@ void Node3DEditorViewport::_preview_exited_scene() {
40034005 view_display_menu->show ();
40044006}
40054007
4008+ void Node3DEditorViewport::_preview_camera_property_changed () {
4009+ if (previewing) {
4010+ surface->queue_redraw ();
4011+ }
4012+ }
4013+
4014+ void Node3DEditorViewport::_update_centered_labels () {
4015+ if (cinema_label->is_visible ()) {
4016+ cinema_label->reset_size ();
4017+ float cinema_half_width = cinema_label->get_size ().width / 2 .0f ;
4018+ cinema_label->set_anchor_and_offset (SIDE_LEFT, 0 .5f , -cinema_half_width);
4019+ }
4020+ }
4021+
40064022void Node3DEditorViewport::_init_gizmo_instance (int p_idx) {
40074023 uint32_t layer = 1 << (GIZMO_BASE_LAYER + p_idx);
40084024
@@ -4096,6 +4112,7 @@ void Node3DEditorViewport::_toggle_camera_preview(bool p_activate) {
40964112
40974113 if (!p_activate) {
40984114 previewing->disconnect (SceneStringName (tree_exiting), callable_mp (this , &Node3DEditorViewport::_preview_exited_scene));
4115+ previewing->disconnect (CoreStringName (property_list_changed), callable_mp (this , &Node3DEditorViewport::_preview_camera_property_changed));
40994116 previewing = nullptr ;
41004117 RS::get_singleton ()->viewport_attach_camera (viewport->get_viewport_rid (), camera->get_camera ()); // restore
41014118 if (!preview) {
@@ -4106,6 +4123,7 @@ void Node3DEditorViewport::_toggle_camera_preview(bool p_activate) {
41064123 } else {
41074124 previewing = preview;
41084125 previewing->connect (SceneStringName (tree_exiting), callable_mp (this , &Node3DEditorViewport::_preview_exited_scene));
4126+ previewing->connect (CoreStringName (property_list_changed), callable_mp (this , &Node3DEditorViewport::_preview_camera_property_changed));
41094127 RS::get_singleton ()->viewport_attach_camera (viewport->get_viewport_rid (), preview->get_camera ()); // replace
41104128 surface->queue_redraw ();
41114129 }
@@ -4118,6 +4136,7 @@ void Node3DEditorViewport::_toggle_cinema_preview(bool p_activate) {
41184136 if (!previewing_cinema) {
41194137 if (previewing != nullptr ) {
41204138 previewing->disconnect (SceneStringName (tree_exited), callable_mp (this , &Node3DEditorViewport::_preview_exited_scene));
4139+ previewing->disconnect (CoreStringName (property_list_changed), callable_mp (this , &Node3DEditorViewport::_preview_camera_property_changed));
41214140 }
41224141
41234142 previewing = nullptr ;
@@ -4369,6 +4388,12 @@ void Node3DEditorViewport::set_state(const Dictionary &p_state) {
43694388
43704389 int idx = view_display_menu->get_popup ()->get_item_index (VIEW_CINEMATIC_PREVIEW);
43714390 view_display_menu->get_popup ()->set_item_checked (idx, previewing_cinema);
4391+
4392+ cinema_label->set_visible (previewing_cinema);
4393+ if (previewing_cinema) {
4394+ _update_centered_labels ();
4395+ surface->queue_redraw ();
4396+ }
43724397 }
43734398
43744399 if (preview_camera->is_connected (SceneStringName (toggled), callable_mp (this , &Node3DEditorViewport::_toggle_camera_preview))) {
@@ -4379,6 +4404,7 @@ void Node3DEditorViewport::set_state(const Dictionary &p_state) {
43794404 if (Object::cast_to<Camera3D>(pv)) {
43804405 previewing = Object::cast_to<Camera3D>(pv);
43814406 previewing->connect (SceneStringName (tree_exiting), callable_mp (this , &Node3DEditorViewport::_preview_exited_scene));
4407+ previewing->connect (CoreStringName (property_list_changed), callable_mp (this , &Node3DEditorViewport::_preview_camera_property_changed));
43824408 RS::get_singleton ()->viewport_attach_camera (viewport->get_viewport_rid (), previewing->get_camera ()); // replace
43834409 surface->queue_redraw ();
43844410 previewing_camera = true ;
0 commit comments