diff --git a/src/gui/core/canvas.cpp b/src/gui/core/canvas.cpp index 4b3caaee65d..1a2eacee383 100644 --- a/src/gui/core/canvas.cpp +++ b/src/gui/core/canvas.cpp @@ -550,6 +550,11 @@ bool canvas::update_blur(const rect& screen_region, bool force) return true; } +void canvas::queue_reblur() +{ + blur_texture_.reset(); +} + void canvas::draw() { // This early-return has to come before the `validate(rect.w <= w_)` check, as during the boost_unit_tests execution diff --git a/src/gui/core/canvas.hpp b/src/gui/core/canvas.hpp index a3ede04814f..f316174aa22 100644 --- a/src/gui/core/canvas.hpp +++ b/src/gui/core/canvas.hpp @@ -101,6 +101,9 @@ public: */ bool update_blur(const rect& screen_region, const bool force = false); + /** Clear the cached blur texture, forcing it to regenerate. */ + void queue_reblur(); + /** * Draw the canvas' shapes onto the screen. * diff --git a/src/gui/dialogs/story_viewer.cpp b/src/gui/dialogs/story_viewer.cpp index 058eb453654..9903c2730d1 100644 --- a/src/gui/dialogs/story_viewer.cpp +++ b/src/gui/dialogs/story_viewer.cpp @@ -307,6 +307,9 @@ void story_viewer::display_part() text_label.set_text_alpha(0); text_label.set_label(part_text); + // Regenerate any background blur texture + panel_canvas.queue_reblur(); + begin_fade_draw(true); // if the previous page was skipped, it is possible that we already have a timer running. clear_image_timer();