From eed9e13e91c3ecc7d55f392f5e56cc6383eb0b5b Mon Sep 17 00:00:00 2001 From: Dmytro Bogovych Date: Tue, 31 May 2022 14:40:14 +0300 Subject: [PATCH] - fix the strange behavior when user missed break and start of next working interval --- app/config.h | 2 +- app/mainwindow.cpp | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/config.h b/app/config.h index a5db9b3..26f91d3 100644 --- a/app/config.h +++ b/app/config.h @@ -4,7 +4,7 @@ // App version #define QBREAK_VERSION_MAJOR 0 #define QBREAK_VERSION_MINOR 1 -#define QBREAK_VERSION_SUFFIX 5 +#define QBREAK_VERSION_SUFFIX 6 // How often UI is updated - interval in seconds #define INTERVAL_UPDATE_UI (60) diff --git a/app/mainwindow.cpp b/app/mainwindow.cpp index 867265c..0247232 100644 --- a/app/mainwindow.cpp +++ b/app/mainwindow.cpp @@ -271,8 +271,14 @@ void MainWindow::onUpdateUI() { if (!mIdleStart) { + // Idle could start before timer start + // Check and shrink the found idle interval if needed + auto proposed_idle_start = std::chrono::steady_clock::now() - std::chrono::milliseconds(idle_milliseconds); + auto timer_start = std::chrono::steady_clock::now() - (std::chrono::milliseconds(mTimer->interval() - mTimer->remainingTime())); + mIdleStart = std::max(timer_start, proposed_idle_start); + // Start idle mode. Save idle start time - mIdleStart = std::chrono::steady_clock::now() - std::chrono::milliseconds(idle_milliseconds); + // mIdleStart = std::chrono::steady_clock::now() - std::chrono::milliseconds(idle_milliseconds); if (mTimer->isActive()) { // Save how much time was remaininig when idle was detected + add idle length