diff options
author | George Hazan <ghazan@miranda.im> | 2018-10-17 14:52:12 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2018-10-17 14:52:12 +0300 |
commit | b80bf9c6208115addd64726fc6904f1543c63952 (patch) | |
tree | 7e9b49eed8ce720b0aa03e8613c2e9dc610c0d9b /src | |
parent | e487efd9f7383fb73d00c0622923542b831b05a3 (diff) |
fixes #1626 (Dbx_mdbx: subcontact's history disappears after removing a subcontact instead of saving in meta)
Diffstat (limited to 'src')
-rw-r--r-- | src/mir_app/src/MDatabaseCommon.cpp | 5 | ||||
-rw-r--r-- | src/mir_app/src/MDatabaseReadonly.cpp | 5 | ||||
-rw-r--r-- | src/mir_app/src/meta_menu.cpp | 10 | ||||
-rw-r--r-- | src/mir_app/src/meta_services.cpp | 2 | ||||
-rw-r--r-- | src/mir_app/src/metacontacts.h | 2 | ||||
-rw-r--r-- | src/mir_app/src/mir_app.def | 2 | ||||
-rw-r--r-- | src/mir_app/src/mir_app64.def | 2 |
7 files changed, 23 insertions, 5 deletions
diff --git a/src/mir_app/src/MDatabaseCommon.cpp b/src/mir_app/src/MDatabaseCommon.cpp index bbe5f27877..123c1e27b4 100644 --- a/src/mir_app/src/MDatabaseCommon.cpp +++ b/src/mir_app/src/MDatabaseCommon.cpp @@ -195,6 +195,11 @@ BOOL MDatabaseCommon::MetaSetDefault(DBCachedContact *cc) return WriteContactSetting(cc->contactID, &cws); } +BOOL MDatabaseCommon::MetaRemoveSubHistory(DBCachedContact*) +{ + return 1; +} + ///////////////////////////////////////////////////////////////////////////////////////// // Getting settings diff --git a/src/mir_app/src/MDatabaseReadonly.cpp b/src/mir_app/src/MDatabaseReadonly.cpp index 96226aa709..9d487d18f2 100644 --- a/src/mir_app/src/MDatabaseReadonly.cpp +++ b/src/mir_app/src/MDatabaseReadonly.cpp @@ -135,6 +135,11 @@ BOOL MDatabaseReadonly::MetaSplitHistory(DBCachedContact*, DBCachedContact*) return 1; } +BOOL MDatabaseReadonly::MetaRemoveSubHistory(DBCachedContact*) +{ + return 1; +} + ///////////////////////////////////////////////////////////////////////////////////////// MEVENT MDatabaseReadonly::GetEventById(LPCSTR, LPCSTR) diff --git a/src/mir_app/src/meta_menu.cpp b/src/mir_app/src/meta_menu.cpp index 46fdc97adc..a98397b627 100644 --- a/src/mir_app/src/meta_menu.cpp +++ b/src/mir_app/src/meta_menu.cpp @@ -87,7 +87,7 @@ INT_PTR Meta_Convert(WPARAM wParam, LPARAM) /////////////////////////////////////////////////////////////////////////////////////////
// Removes a sub from a metacontact
-void Meta_RemoveContactNumber(DBCachedContact *ccMeta, int number, bool bUpdateInfo)
+void Meta_RemoveContactNumber(DBCachedContact *ccMeta, int number, bool bUpdateInfo, bool bDeleteSub)
{
if (ccMeta == nullptr)
return;
@@ -134,10 +134,14 @@ void Meta_RemoveContactNumber(DBCachedContact *ccMeta, int number, bool bUpdateI db_unset(ccMeta->contactID, META_PROTO, buffer);
if (ccSub != nullptr) {
- ccSub->parentID = 0;
currDb->MetaDetouchSub(ccMeta, ccMeta->nSubs - 1);
- currDb->MetaSplitHistory(ccMeta, ccSub);
+ if (bDeleteSub)
+ currDb->MetaRemoveSubHistory(ccSub);
+ else {
+ currDb->MetaSplitHistory(ccMeta, ccSub);
+ ccSub->parentID = 0;
+ }
}
// if the default contact was equal to or greater than 'number', decrement it (and deal with ends)
diff --git a/src/mir_app/src/meta_services.cpp b/src/mir_app/src/meta_services.cpp index 8e00dc8fe8..c57b4600b4 100644 --- a/src/mir_app/src/meta_services.cpp +++ b/src/mir_app/src/meta_services.cpp @@ -457,7 +457,7 @@ int Meta_ContactDeleted(WPARAM hContact, LPARAM) if (cc->IsSub()) {
DBCachedContact *ccMeta = CheckMeta(cc->parentID);
if (ccMeta) {
- Meta_RemoveContactNumber(ccMeta, Meta_GetContactNumber(ccMeta, hContact), true);
+ Meta_RemoveContactNumber(ccMeta, Meta_GetContactNumber(ccMeta, hContact), true, true);
NotifyEventHooks(hSubcontactsChanged, ccMeta->contactID, 0);
// no more subs? remove the meta itself
diff --git a/src/mir_app/src/metacontacts.h b/src/mir_app/src/metacontacts.h index 5c82f6cfcd..d73044cec1 100644 --- a/src/mir_app/src/metacontacts.h +++ b/src/mir_app/src/metacontacts.h @@ -46,7 +46,7 @@ INT_PTR Meta_Default(WPARAM wParam,LPARAM lParam); INT_PTR Meta_OnOff(WPARAM wParam, LPARAM lParam);
int Meta_ModifyMenu(WPARAM wParam,LPARAM lParam);
BOOL Meta_Assign(MCONTACT src, MCONTACT dest, BOOL set_as_default);
-void Meta_RemoveContactNumber(DBCachedContact *cc, int number, bool bUpdateInfo);
+void Meta_RemoveContactNumber(DBCachedContact *cc, int number, bool bUpdateInfo, bool bDeleteSub = false);
int Meta_SetNick(char *proto);
int Meta_HideLinkedContacts(void);
int Meta_GetContactNumber(DBCachedContact *cc, MCONTACT hContact);
diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def index 7bbe2c533e..cef5d03f20 100644 --- a/src/mir_app/src/mir_app.def +++ b/src/mir_app/src/mir_app.def @@ -667,3 +667,5 @@ g_hevSettingChanged @696 NONAME ??1GCSessionInfoBase@@QAE@XZ @700 NONAME
?getUserList@GCSessionInfoBase@@QAEAAU?$OBJLIST@UUSERINFO@@@@XZ @701 NONAME
?getMe@GCSessionInfoBase@@QBEPAUUSERINFO@@XZ @702 NONAME
+?MetaRemoveSubHistory@MDatabaseCommon@@UAGHPAUDBCachedContact@@@Z @703 NONAME
+?MetaRemoveSubHistory@MDatabaseReadonly@@UAGHPAUDBCachedContact@@@Z @704 NONAME
diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def index c7260c9440..b91d38854b 100644 --- a/src/mir_app/src/mir_app64.def +++ b/src/mir_app/src/mir_app64.def @@ -667,3 +667,5 @@ g_hevSettingChanged @696 NONAME ??1GCSessionInfoBase@@QEAA@XZ @700 NONAME
?getUserList@GCSessionInfoBase@@QEAAAEAU?$OBJLIST@UUSERINFO@@@@XZ @701 NONAME
?getMe@GCSessionInfoBase@@QEBAPEAUUSERINFO@@XZ @702 NONAME
+?MetaRemoveSubHistory@MDatabaseCommon@@UEAAHPEAUDBCachedContact@@@Z @703 NONAME
+?MetaRemoveSubHistory@MDatabaseReadonly@@UEAAHPEAUDBCachedContact@@@Z @704 NONAME
|