diff options
author | George Hazan <ghazan@miranda.im> | 2018-03-04 15:06:19 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2018-03-04 15:06:19 +0300 |
commit | f02ba61c1480c33b801aa7f7acefac9e3735c551 (patch) | |
tree | aa44e2ccfa277bb4b877f867d035e7cabded1f83 | |
parent | c257e17520118623ef8ae6ec7cf57249b4fd9ba0 (diff) |
StatusManager:
- fixes #1150 (Status Manager no longer reconnects when connection breaks);
- hopefully also fixes #1139 (KeepStatus: option "Reconnect on APM resume" don't work);
- removed major clutch with assigning "" to a protocol name to disable it in the confirmdialog;
- another ancient evil destroyed that tried to save 4 bytes of memory by storing temporary status values in the main status field in AAA;
- version bump
-rw-r--r-- | plugins/StatusManager/src/AdvancedAutoAway/advancedautoaway.cpp | 58 | ||||
-rw-r--r-- | plugins/StatusManager/src/KeepStatus/keepstatus.cpp | 87 | ||||
-rw-r--r-- | plugins/StatusManager/src/StartupStatus/startupstatus.cpp | 25 | ||||
-rw-r--r-- | plugins/StatusManager/src/commonstatus.cpp | 29 | ||||
-rw-r--r-- | plugins/StatusManager/src/commonstatus.h | 23 | ||||
-rw-r--r-- | plugins/StatusManager/src/confirmdialog.cpp | 3 | ||||
-rw-r--r-- | plugins/StatusManager/src/version.h | 2 |
7 files changed, 99 insertions, 128 deletions
diff --git a/plugins/StatusManager/src/AdvancedAutoAway/advancedautoaway.cpp b/plugins/StatusManager/src/AdvancedAutoAway/advancedautoaway.cpp index 3f638f22db..80f3d8be37 100644 --- a/plugins/StatusManager/src/AdvancedAutoAway/advancedautoaway.cpp +++ b/plugins/StatusManager/src/AdvancedAutoAway/advancedautoaway.cpp @@ -144,15 +144,14 @@ static int ProcessProtoAck(WPARAM, LPARAM lParam) return 0; log_debugA("ProcessProtoAck: ack->szModule: %s", ack->szModule); - for (int i = 0; i < protoList.getCount(); i++) { - SMProto &p = protoList[i]; - log_debugA("chk: %s", p.m_szName); - if (!mir_strcmp(p.m_szName, ack->szModule)) { - log_debugA("ack->szModule: %s p.statusChanged: %d", ack->szModule, p.statusChanged); - if (!p.statusChanged) - p.mStatus = TRUE; - - p.statusChanged = FALSE; + for (auto &it : protoList) { + log_debugA("chk: %s", it->m_szName); + if (!mir_strcmp(it->m_szName, ack->szModule)) { + log_debugA("ack->szModule: %s p.statusChanged: %d", ack->szModule, it->bStatusChanged); + if (!it->bStatusChanged) + it->bManualStatus = true; + + it->bStatusChanged = false; } } @@ -184,15 +183,15 @@ static int changeState(SMProto &setting, STATES newState) log_debugA("%s state change: %s -> %s", setting.m_szName, status2descr(setting.oldState), status2descr(setting.curState)); - if (setting.curState != SET_ORGSTATUS && setting.curState != ACTIVE && setting.statusChanged) { + if (setting.curState != SET_ORGSTATUS && setting.curState != ACTIVE && setting.bStatusChanged) { /* change the awaymessage */ if (setting.m_szMsg != nullptr) { mir_free(setting.m_szMsg); setting.m_szMsg = nullptr; } - if (db_get_b(0, AAAMODULENAME, StatusModeToDbSetting(setting.m_status, SETTING_MSGCUSTOM), FALSE)) - setting.m_szMsg = db_get_wsa(0, AAAMODULENAME, StatusModeToDbSetting(setting.m_status, SETTING_STATUSMSG)); + if (db_get_b(0, AAAMODULENAME, StatusModeToDbSetting(setting.aaaStatus, SETTING_MSGCUSTOM), FALSE)) + setting.m_szMsg = db_get_wsa(0, AAAMODULENAME, StatusModeToDbSetting(setting.aaaStatus, SETTING_STATUSMSG)); } else if (setting.m_szMsg != nullptr) { mir_free(setting.m_szMsg); @@ -208,7 +207,7 @@ static VOID CALLBACK AutoAwayTimer(HWND, UINT, UINT_PTR, DWORD) int confirm = FALSE; for (auto &it : protoList) { - it->m_status = ID_STATUS_DISABLED; + it->aaaStatus = ID_STATUS_DISABLED; BOOL bTrigger = false; @@ -237,17 +236,17 @@ static VOID CALLBACK AutoAwayTimer(HWND, UINT, UINT_PTR, DWORD) if (((mouseStationaryTimer >= sts1Time && (it->optionFlags & FLAG_ONMOUSE)) || bTrigger) && currentMode != it->lv1Status && it->statusFlags&StatusModeToProtoFlag(currentMode)) { /* from ACTIVE to STATUS1_SET */ it->m_lastStatus = it->originalStatusMode = CallProtoService(it->m_szName, PS_GETSTATUS, 0, 0); - it->m_status = it->lv1Status; + it->aaaStatus = it->lv1Status; it->sts1setTimer = GetTickCount(); sts1setTime = 0; - it->statusChanged = statusChanged = TRUE; + it->bStatusChanged = statusChanged = true; changeState(*it, STATUS1_SET); } else if (mouseStationaryTimer >= sts2Time && currentMode == it->lv1Status && currentMode != it->lv2Status && (it->optionFlags & FLAG_SETNA) && (it->statusFlags & StatusModeToProtoFlag(currentMode))) { /* from ACTIVE to STATUS2_SET */ it->m_lastStatus = it->originalStatusMode = CallProtoService(it->m_szName, PS_GETSTATUS, 0, 0); - it->m_status = it->lv2Status; - it->statusChanged = statusChanged = TRUE; + it->aaaStatus = it->lv2Status; + it->bStatusChanged = statusChanged = true; changeState(*it, STATUS2_SET); } } @@ -268,8 +267,8 @@ static VOID CALLBACK AutoAwayTimer(HWND, UINT, UINT_PTR, DWORD) /* when set STATUS2, currentMode doesn't have to be in the selected status list (statusFlags) */ /* from STATUS1_SET to STATUS2_SET */ it->m_lastStatus = CallProtoService(it->m_szName, PS_GETSTATUS, 0, 0); - it->m_status = it->lv2Status; - it->statusChanged = statusChanged = TRUE; + it->aaaStatus = it->lv2Status; + it->bStatusChanged = statusChanged = true; changeState(*it, STATUS2_SET); } } @@ -288,40 +287,39 @@ static VOID CALLBACK AutoAwayTimer(HWND, UINT, UINT_PTR, DWORD) } if (it->curState == HIDDEN_ACTIVE) { - if (it->mStatus) { + if (it->bManualStatus) { /* HIDDEN_ACTIVE to ACTIVE */ - //it->statusChanged = FALSE; + // it->bStatusChanged = false; changeState(*it, ACTIVE); it->sts1setTimer = 0; - it->mStatus = FALSE; + it->bManualStatus = false; } else if ((it->optionFlags & FLAG_SETNA) && currentMode == it->lv1Status && currentMode != it->lv2Status && (it->statusFlags & StatusModeToProtoFlag(currentMode)) && (mouseStationaryTimer >= sts2Time || (sts1setTime >= sts2Time && !(it->optionFlags & FLAG_LV2ONINACTIVE)))) { /* HIDDEN_ACTIVE to STATUS2_SET */ it->m_lastStatus = it->originalStatusMode = CallProtoService(it->m_szName, PS_GETSTATUS, 0, 0); - it->m_status = it->lv2Status; - it->statusChanged = statusChanged = TRUE; + it->aaaStatus = it->lv2Status; + it->bStatusChanged = statusChanged = true; changeState(*it, STATUS2_SET); } } if (it->curState == SET_ORGSTATUS) { /* SET_ORGSTATUS to ACTIVE */ it->m_lastStatus = CallProtoService(it->m_szName, PS_GETSTATUS, 0, 0); - it->m_status = it->originalStatusMode; + it->aaaStatus = it->originalStatusMode; confirm = (it->optionFlags & FLAG_CONFIRM) ? TRUE : confirm; - it->statusChanged = statusChanged = TRUE; + it->bStatusChanged = statusChanged = true; changeState(*it, ACTIVE); it->sts1setTimer = 0; } - it->mStatus = FALSE; + it->bManualStatus = false; } if (confirm || statusChanged) { - TProtoSettings ps = protoList; + TProtoSettings ps = protoList; // make a copy of data not to pollute main array for (auto &it : ps) - if (it->m_status == ID_STATUS_DISABLED) - it->m_szName = ""; + it->m_status = it->aaaStatus; if (confirm) confirmDialog = ShowConfirmDialogEx(&ps, db_get_w(0, AAAMODULENAME, SETTING_CONFIRMDELAY, 5)); diff --git a/plugins/StatusManager/src/KeepStatus/keepstatus.cpp b/plugins/StatusManager/src/KeepStatus/keepstatus.cpp index 42e715a262..ceb12f56d4 100644 --- a/plugins/StatusManager/src/KeepStatus/keepstatus.cpp +++ b/plugins/StatusManager/src/KeepStatus/keepstatus.cpp @@ -127,41 +127,6 @@ int KSLoadOptions() ///////////////////////////////////////////////////////////////////////////////////////// -static PROTOCOLSETTINGEX** GetCurrentProtoSettingsCopy() -{ - mir_cslock lck(GenStatusCS); - PROTOCOLSETTINGEX **ps = (PROTOCOLSETTINGEX**)mir_alloc(protoList.getCount() * sizeof(PROTOCOLSETTINGEX *)); - if (ps == nullptr) - return nullptr; - - for (int i = 0; i < protoList.getCount(); i++) { - ps[i] = (PROTOCOLSETTINGEX*)mir_calloc(sizeof(PROTOCOLSETTINGEX)); - if (ps[i] == nullptr) { - mir_free(ps); - return nullptr; - } - - SMProto &cs = protoList[i]; - ps[i]->m_lastStatus = cs.m_lastStatus; - ps[i]->m_status = cs.m_status; - ps[i]->m_szMsg = nullptr; - ps[i]->m_szName = cs.m_szName; - ps[i]->m_tszAccName = cs.m_tszAccName; - } - - return ps; -} - -static void FreeProtoSettings(PROTOCOLSETTINGEX** ps) -{ - for (int i = 0; i < protoList.getCount(); i++) { - if (ps[i]->m_szMsg != nullptr) - mir_free(ps[i]->m_szMsg); - mir_free(ps[i]); - } - mir_free(ps); -} - int SMProto::AssignStatus(int iStatus, int iLastStatus, wchar_t *pwszMsg) { if (iStatus < MIN_STATUS || iStatus > MAX_STATUS) @@ -214,29 +179,27 @@ int SMProto::GetStatus() const static int SetCurrentStatus() { - PROTOCOLSETTINGEX **ps = GetCurrentProtoSettingsCopy(); - for (int i = 0; i < protoList.getCount(); i++) { - auto p = ps[i]; + TProtoSettings ps(protoList); + for (auto &p : ps) { int realStatus = CallProtoService(p->m_szName, PS_GETSTATUS, 0, 0); - int curStatus = protoList[i].GetStatus(); - if (curStatus == ID_STATUS_DISABLED || curStatus == realStatus) { // ignore this proto by removing it's name (not so nice) - p->m_szName = ""; + int curStatus = p->GetStatus(); + if (curStatus == ID_STATUS_DISABLED) + continue; + if (curStatus == realStatus) { + p->m_status = ID_STATUS_DISABLED; + continue; } - else { - log_infoA("KeepStatus: status for %s differs: stored = %d, real = %d", p->m_szName, curStatus, realStatus); - // force offline before reconnecting? - if (realStatus != ID_STATUS_OFFLINE && db_get_b(0, KSMODULENAME, SETTING_FIRSTOFFLINE, FALSE)) { - log_infoA("KeepStatus: Setting %s offline before making a new connection attempt", p->m_szName); - CallProtoService(p->m_szName, PS_SETSTATUS, (WPARAM)ID_STATUS_OFFLINE, 0); - } + log_infoA("KeepStatus: status for %s differs: stored = %d, real = %d", p->m_szName, curStatus, realStatus); + + // force offline before reconnecting? + if (realStatus != ID_STATUS_OFFLINE && db_get_b(0, KSMODULENAME, SETTING_FIRSTOFFLINE, FALSE)) { + log_infoA("KeepStatus: Setting %s offline before making a new connection attempt", p->m_szName); + CallProtoService(p->m_szName, PS_SETSTATUS, (WPARAM)ID_STATUS_OFFLINE, 0); } } - ProcessPopup(KS_CONN_STATE_RETRY, (LPARAM)ps); - INT_PTR ret = CallService(MS_CS_SETSTATUSEX, (WPARAM)&ps, 0); - FreeProtoSettings(ps); - - return ret; + ProcessPopup(KS_CONN_STATE_RETRY, (LPARAM)ps.getArray()); + return CallService(MS_CS_SETSTATUSEX, (WPARAM)ps.getArray(), 0); } static int StatusChange(WPARAM wParam, LPARAM lParam) @@ -1038,7 +1001,7 @@ INT_PTR AnnounceStatusChangeService(WPARAM, LPARAM lParam) static DWORD CALLBACK MessageWndProc(HWND, UINT msg, WPARAM wParam, LPARAM lParam) { - static PROTOCOLSETTINGEX** ps = nullptr; + static TProtoSettings *ps = nullptr; switch (msg) { case WM_POWERBROADCAST: @@ -1046,23 +1009,23 @@ static DWORD CALLBACK MessageWndProc(HWND, UINT msg, WPARAM wParam, LPARAM lPara case PBT_APMSUSPEND: log_infoA("KeepStatus: suspend state detected: %08X %08X", wParam, lParam); if (ps == nullptr) { - ps = GetCurrentProtoSettingsCopy(); - for (int i = 0; i < protoList.getCount(); i++) - EnableProtocolService(0, (LPARAM)ps[i]->m_szName); + ps = new TProtoSettings(protoList); + for (auto &it : *ps) + EnableProtocolService(0, (LPARAM)it->m_szName); // set proto's offline, the clist will not try to reconnect in that case Clist_SetStatusMode(ID_STATUS_OFFLINE); } break; - //case PBT_APMRESUMEAUTOMATIC: ? case PBT_APMRESUMESUSPEND: case PBT_APMRESUMECRITICAL: + // case PBT_APMRESUMEAUTOMATIC: ? log_infoA("KeepStatus: resume from suspend state"); if (ps != nullptr) { - for (int i = 0; i < protoList.getCount(); i++) - protoList[i].AssignStatus(ps[i]->m_status, ps[i]->m_lastStatus, ps[i]->m_szMsg); - FreeProtoSettings(ps); + for (auto &it : *ps) + it->AssignStatus(it->m_status, it->m_lastStatus, it->m_szMsg); + delete ps; ps = nullptr; } StartTimer(IDT_PROCESSACK, 0, FALSE); @@ -1072,7 +1035,7 @@ static DWORD CALLBACK MessageWndProc(HWND, UINT msg, WPARAM wParam, LPARAM lPara case WM_DESTROY: if (ps != nullptr) { - FreeProtoSettings(ps); + delete ps; ps = nullptr; } break; diff --git a/plugins/StatusManager/src/StartupStatus/startupstatus.cpp b/plugins/StatusManager/src/StartupStatus/startupstatus.cpp index 0c44c09a9c..ab82c229db 100644 --- a/plugins/StatusManager/src/StartupStatus/startupstatus.cpp +++ b/plugins/StatusManager/src/StartupStatus/startupstatus.cpp @@ -38,7 +38,7 @@ static BYTE showDialogOnStartup = 0; static PROTOCOLSETTINGEX* IsValidProtocol(TProtoSettings &protoSettings, const char *protoName) { for (auto &it : protoSettings) - if (!strncmp(it->m_szName, protoName, mir_strlen(it->m_szName))) + if (!it->ssDisabled && !strncmp(it->m_szName, protoName, mir_strlen(it->m_szName))) return it; return nullptr; @@ -143,7 +143,7 @@ static int ProcessProtoAck(WPARAM, LPARAM lParam) for (auto &it : protoList) { if (!mir_strcmp(ack->szModule, it->m_szName)) { - it->m_szName = ""; + it->ssDisabled = true; log_debugA("StartupStatus: %s overridden by ME_PROTO_ACK, status will not be set", ack->szModule); } } @@ -160,14 +160,14 @@ static int StatusChange(WPARAM, LPARAM lParam) char *szProto = (char *)lParam; if (szProto == nullptr) { // global status change for (auto &it : protoList) { - it->m_szName = ""; + it->ssDisabled = true; log_debugA("StartupStatus: all protos overridden by ME_CLIST_STATUSMODECHANGE, status will not be set"); } } else { for (auto &it : protoList) { if (!mir_strcmp(it->m_szName, szProto)) { - it->m_szName = ""; + it->ssDisabled = true; log_debugA("StartupStatus: %s overridden by ME_CLIST_STATUSMODECHANGE, status will not be set", szProto); } } @@ -188,14 +188,13 @@ static int CSStatusChangeEx(WPARAM wParam, LPARAM) return -1; for (int i = 0; i < protoList.getCount(); i++) { - for (int j = 0; j < protoList.getCount(); j++) { - if (ps[i]->m_szName == nullptr || protoList[j].m_szName == nullptr) + for (auto &it : protoList) { + if (ps[i]->m_szName == nullptr || it->m_szName == nullptr) continue; - if (!mir_strcmp(ps[i]->m_szName, protoList[j].m_szName)) { + if (!mir_strcmp(ps[i]->m_szName, it->m_szName)) { log_debugA("StartupStatus: %s overridden by MS_CS_SETSTATUSEX, status will not be set", ps[i]->m_szName); - // use a hack to disable this proto - protoList[j].m_szName = ""; + it->ssDisabled = true; } } } @@ -210,7 +209,13 @@ static void CALLBACK SetStatusTimed(HWND, UINT, UINT_PTR, DWORD) UnhookEvent(hProtoAckHook); UnhookEvent(hCSStatusChangeHook); UnhookEvent(hStatusChangeHook); - CallService(MS_CS_SETSTATUSEX, (WPARAM)&protoList, 0); + + TProtoSettings ps(protoList); + for (auto &it : ps) + if (it->ssDisabled) + it->m_status = ID_STATUS_DISABLED; + + CallService(MS_CS_SETSTATUSEX, (WPARAM)ps.getArray(), 0); } static int OnOkToExit(WPARAM, LPARAM) diff --git a/plugins/StatusManager/src/commonstatus.cpp b/plugins/StatusManager/src/commonstatus.cpp index 6355cc9839..a0e7e0f7a4 100644 --- a/plugins/StatusManager/src/commonstatus.cpp +++ b/plugins/StatusManager/src/commonstatus.cpp @@ -233,38 +233,41 @@ INT_PTR SetStatusEx(WPARAM wParam, LPARAM) // set all status messages first for (int i = 0; i < protoList.getCount(); i++) { - char *szProto = protoSettings[i]->m_szName; - if (!Proto_GetAccount(szProto)) { - log_debugA("CommonStatus: %s is not loaded", szProto); + PROTOCOLSETTINGEX *p = protoSettings[i]; + if (p->m_status == ID_STATUS_DISABLED) + continue; + + if (!Proto_GetAccount(p->m_szName)) { + log_debugA("CommonStatus: %s is not loaded", p->m_szName); continue; } // some checks int newstatus = GetActualStatus(protoSettings[i]); if (newstatus == 0) { - log_debugA("CommonStatus: incorrect status for %s (%d)", szProto, protoSettings[i]->m_status); + log_debugA("CommonStatus: incorrect status for %s (%d)", p->m_szName, p->m_status); continue; } - int oldstatus = CallProtoService(szProto, PS_GETSTATUS, 0, 0); + int oldstatus = CallProtoService(p->m_szName, PS_GETSTATUS, 0, 0); // set last status - protoSettings[i]->m_lastStatus = oldstatus; + p->m_lastStatus = oldstatus; if (IsStatusConnecting(oldstatus)) { // ignore if connecting, but it didn't came this far if it did - log_debugA("CommonStatus: %s is already connecting", szProto); + log_debugA("CommonStatus: %s is already connecting", p->m_szName); continue; } // status checks long protoFlag = Proto_Status2Flag(newstatus); - int b_Caps2 = CallProtoService(szProto, PS_GETCAPS, PFLAGNUM_2, 0) & protoFlag; - int b_Caps5 = CallProtoService(szProto, PS_GETCAPS, PFLAGNUM_5, 0) & protoFlag; + int b_Caps2 = CallProtoService(p->m_szName, PS_GETCAPS, PFLAGNUM_2, 0) & protoFlag; + int b_Caps5 = CallProtoService(p->m_szName, PS_GETCAPS, PFLAGNUM_5, 0) & protoFlag; if (newstatus != ID_STATUS_OFFLINE && (!b_Caps2 || b_Caps5)) { // status and status message for this status not supported //log_debug("CommonStatus: status not supported %s", szProto); continue; } - int b_Caps1 = CallProtoService(szProto, PS_GETCAPS, PFLAGNUM_1, 0) & PF1_MODEMSGSEND & ~PF1_INDIVMODEMSG; - int b_Caps3 = CallProtoService(szProto, PS_GETCAPS, PFLAGNUM_3, 0) & protoFlag; + int b_Caps1 = CallProtoService(p->m_szName, PS_GETCAPS, PFLAGNUM_1, 0) & PF1_MODEMSGSEND & ~PF1_INDIVMODEMSG; + int b_Caps3 = CallProtoService(p->m_szName, PS_GETCAPS, PFLAGNUM_3, 0) & protoFlag; if (newstatus == oldstatus && (!b_Caps1 || !b_Caps3)) { // no status change and status messages are not supported //log_debug("CommonStatus: no change, %s (%d %d)", szProto, oldstatus, newstatus); @@ -277,8 +280,8 @@ INT_PTR SetStatusEx(WPARAM wParam, LPARAM) // set the status if (newstatus != oldstatus /*&& !(b_Caps1 && b_Caps3 && ServiceExists(MS_NAS_SETSTATE))*/) { - log_debugA("CommonStatus sets status for %s to %d", szProto, newstatus); - CallProtoService(szProto, PS_SETSTATUS, newstatus, 0); + log_debugA("CommonStatus sets status for %s to %d", p->m_szName, newstatus); + CallProtoService(p->m_szName, PS_SETSTATUS, newstatus, 0); } } diff --git a/plugins/StatusManager/src/commonstatus.h b/plugins/StatusManager/src/commonstatus.h index 488d28bfb6..ee9fa8b128 100644 --- a/plugins/StatusManager/src/commonstatus.h +++ b/plugins/StatusManager/src/commonstatus.h @@ -106,17 +106,15 @@ struct SMProto : public PROTOCOLSETTINGEX, public MZeroedObject // AdvancedAutoAway settings int originalStatusMode = ID_STATUS_CURRENT; - STATES - oldState, - curState = ACTIVE; - BOOL statusChanged; // AAA changed the status, don't update mStatus - BOOL mStatus; // status changed manually or not ? - int optionFlags, // db: see above - awayTime, // db: time to wait for inactivity - naTime, // db: time to wait after away is set - statusFlags; // db: set lv1 status if this is original status - WORD lv1Status, // db - lv2Status; // db + int aaaStatus; + STATES oldState, curState = ACTIVE; + bool bStatusChanged; // AAA changed the status, don't update bManualStatus + bool bManualStatus; // status changed manually or not ? + int optionFlags; // db: see above + int awayTime; // db: time to wait for inactivity + int naTime; // db: time to wait after away is set + int statusFlags; // db: set lv1 status if this is original status + WORD lv1Status, lv2Status; // db: statuses to switch protocol to unsigned int sts1setTimer; // KeepStatus @@ -124,6 +122,9 @@ struct SMProto : public PROTOCOLSETTINGEX, public MZeroedObject int GetStatus() const; int lastStatusAckTime; // the time the last status ack was received + + // StartupStatus + bool ssDisabled; // prohibits status restoration at startup }; struct TProtoSettings : public OBJLIST<SMProto> diff --git a/plugins/StatusManager/src/confirmdialog.cpp b/plugins/StatusManager/src/confirmdialog.cpp index 5cdcf88237..2c7c386ff7 100644 --- a/plugins/StatusManager/src/confirmdialog.cpp +++ b/plugins/StatusManager/src/confirmdialog.cpp @@ -403,7 +403,8 @@ HWND ShowConfirmDialogEx(TProtoSettings *params, int _timeout) confirmSettings = new OBJLIST<TConfirmSetting>(10, CompareSettings); for (auto &it : *params) - confirmSettings->insert(new TConfirmSetting(*it)); + if (it->m_status != ID_STATUS_DISABLED) + confirmSettings->insert(new TConfirmSetting(*it)); timeOut = _timeout; if (timeOut < 0) diff --git a/plugins/StatusManager/src/version.h b/plugins/StatusManager/src/version.h index 50de31c953..45db33e0dc 100644 --- a/plugins/StatusManager/src/version.h +++ b/plugins/StatusManager/src/version.h @@ -2,7 +2,7 @@ #define __MAJOR_VERSION 1 #define __MINOR_VERSION 1 #define __RELEASE_NUM 0 -#define __BUILD_NUM 3 +#define __BUILD_NUM 4 // other stuff for Version resource #include <stdver.h> |