From 4fe990adffb69da201234e96134b432d00f6e9cb Mon Sep 17 00:00:00 2001 From: Andrej Kacian Date: Sun, 15 Jul 2018 19:35:06 +0200 Subject: [PATCH] When switching to/from offline mode, reset override timers. Closes bug #4056: Impossible to disable overriding of offline mode --- src/inc.c | 25 ++++++++++++++++--------- src/inc.h | 2 ++ src/mainwindow.c | 2 ++ 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/inc.c b/src/inc.c index d7a4fc554..2415e46d3 100644 --- a/src/inc.c +++ b/src/inc.c @@ -65,6 +65,9 @@ extern SessionStats session_stats; static GList *inc_dialog_list = NULL; +static time_t inc_offline_overridden_yes = 0; +static time_t inc_offline_overridden_no = 0; + guint inc_lock_count = 0; static GdkPixbuf *currentpix; @@ -1593,8 +1596,6 @@ void inc_account_autocheck_timer_set_interval(PrefsAccount *account) gboolean inc_offline_should_override(gboolean force_ask, const gchar *msg) { - static time_t overridden_yes = 0; - static time_t overridden_no = 0; int length = 10; /* minutes */ gint answer = G_ALERTDEFAULT; @@ -1608,15 +1609,15 @@ gboolean inc_offline_should_override(gboolean force_ask, const gchar *msg) length = prefs_common.autochk_itv; /* minutes */ if (force_ask) { - overridden_no = (time_t)0; + inc_offline_overridden_no = (time_t)0; } if (prefs_common.work_offline) { gchar *tmp = NULL; - if (time(NULL) - overridden_yes < length * 60) /* seconds */ + if (time(NULL) - inc_offline_overridden_yes < length * 60) /* seconds */ return TRUE; - else if (time(NULL) - overridden_no < length * 60) /* seconds */ + else if (time(NULL) - inc_offline_overridden_no < length * 60) /* seconds */ return FALSE; if (!force_ask) @@ -1637,17 +1638,23 @@ gboolean inc_offline_should_override(gboolean force_ask, const gchar *msg) !force_ask? _("On_ly once"):NULL, ALERTFOCUS_SECOND); g_free(tmp); if (answer == G_ALERTALTERNATE) { - overridden_yes = time(NULL); + inc_offline_overridden_yes = time(NULL); return TRUE; } else if (answer == G_ALERTDEFAULT) { if (!force_ask) - overridden_no = time(NULL); + inc_offline_overridden_no = time(NULL); return FALSE; } else { - overridden_yes = (time_t)0; - overridden_no = (time_t)0; + inc_reset_offline_override_timers(); return TRUE; } } return TRUE; } + +void inc_reset_offline_override_timers() +{ + debug_print("resetting offline override timers\n"); + inc_offline_overridden_yes = (time_t)0; + inc_offline_overridden_no = (time_t)0; +} diff --git a/src/inc.h b/src/inc.h index 0f91f9b92..b9c09f6fd 100644 --- a/src/inc.h +++ b/src/inc.h @@ -130,4 +130,6 @@ gboolean inc_offline_should_override(gboolean force_ask, const gchar *msg); void inc_account_autocheck_timer_remove(PrefsAccount *account); void inc_account_autocheck_timer_set_interval(PrefsAccount *account); +void inc_reset_offline_override_timers(); + #endif /* __INC_H__ */ diff --git a/src/mainwindow.c b/src/mainwindow.c index ae30619bf..3762981ed 100644 --- a/src/mainwindow.c +++ b/src/mainwindow.c @@ -4211,6 +4211,8 @@ void main_window_toggle_work_offline (MainWindow *mainwin, gboolean offline, online_switch_clicked (GTK_BUTTON(mainwin->offline_switch), mainwin); offline_ask_sync = TRUE; + inc_reset_offline_override_timers(); + switching = FALSE; } -- 2.25.1