summaryrefslogtreecommitdiffstats
path: root/scene/gui
diff options
context:
space:
mode:
Diffstat (limited to 'scene/gui')
-rw-r--r--scene/gui/rich_text_label.cpp2
-rw-r--r--scene/gui/video_stream_player.cpp10
2 files changed, 11 insertions, 1 deletions
diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp
index 0da8a79654..41f4de5b3b 100644
--- a/scene/gui/rich_text_label.cpp
+++ b/scene/gui/rich_text_label.cpp
@@ -1771,7 +1771,7 @@ void RichTextLabel::_scroll_changed(double) {
return;
}
- if (scroll_follow && vscroll->get_value() >= (vscroll->get_max() - vscroll->get_page())) {
+ if (scroll_follow && vscroll->get_value() >= (vscroll->get_max() - Math::round(vscroll->get_page()))) {
scroll_following = true;
} else {
scroll_following = false;
diff --git a/scene/gui/video_stream_player.cpp b/scene/gui/video_stream_player.cpp
index ac09844128..41a210e180 100644
--- a/scene/gui/video_stream_player.cpp
+++ b/scene/gui/video_stream_player.cpp
@@ -237,6 +237,12 @@ bool VideoStreamPlayer::has_loop() const {
void VideoStreamPlayer::set_stream(const Ref<VideoStream> &p_stream) {
stop();
+ // Make sure to handle stream changes seamlessly, e.g. when done via
+ // translation remapping.
+ if (stream.is_valid()) {
+ stream->disconnect_changed(callable_mp(this, &VideoStreamPlayer::set_stream));
+ }
+
AudioServer::get_singleton()->lock();
mix_buffer.resize(AudioServer::get_singleton()->thread_get_mix_buffer_size());
stream = p_stream;
@@ -248,6 +254,10 @@ void VideoStreamPlayer::set_stream(const Ref<VideoStream> &p_stream) {
}
AudioServer::get_singleton()->unlock();
+ if (stream.is_valid()) {
+ stream->connect_changed(callable_mp(this, &VideoStreamPlayer::set_stream).bind(stream));
+ }
+
if (!playback.is_null()) {
playback->set_paused(paused);
texture = playback->get_texture();