diff --git a/src/gui/dialogs/story_viewer.cpp b/src/gui/dialogs/story_viewer.cpp index ff85b02dc05a..0fd67daf3d87 100644 --- a/src/gui/dialogs/story_viewer.cpp +++ b/src/gui/dialogs/story_viewer.cpp @@ -67,7 +67,7 @@ story_viewer::story_viewer(const std::string& scenario_name, const config& cfg_p update_current_part_ptr(); } -story_viewer::~story_viewer() +void story_viewer::clear_image_timer() { if(timer_id_ != 0) { remove_timer(timer_id_); @@ -75,6 +75,11 @@ story_viewer::~story_viewer() } } +story_viewer::~story_viewer() +{ + clear_image_timer(); +} + void story_viewer::pre_show(window& window) { window.set_enter_disabled(true); @@ -294,7 +299,8 @@ void story_viewer::display_part(window& window) text_label.set_label(part_text); begin_fade_draw(true); - + // if the previous page was skipped, it is possible that we already have a timer running. + clear_image_timer(); // // Floating images (handle this last) // diff --git a/src/gui/dialogs/story_viewer.hpp b/src/gui/dialogs/story_viewer.hpp index 9cf27837eb54..1f15c8c93ef0 100644 --- a/src/gui/dialogs/story_viewer.hpp +++ b/src/gui/dialogs/story_viewer.hpp @@ -50,6 +50,8 @@ class story_viewer : public modal_dialog /** Inherited from modal_dialog. */ virtual void pre_show(window& window) override; + void clear_image_timer(); + void update_current_part_ptr(); void display_part(window& window);