From e4a8fd6f323b262018bae68bfe87da65cf2092c0 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sat, 19 Jul 2014 13:19:40 +0000 Subject: db_mc_tryMeta - returns parent hContact for a subcontact or hContact itself if it's not a sub git-svn-id: http://svn.miranda-ng.org/main/trunk@9859 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- src/mir_core/mc.cpp | 13 ++++++++++++- src/mir_core/mir_core.def | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) (limited to 'src/mir_core') diff --git a/src/mir_core/mc.cpp b/src/mir_core/mc.cpp index f25d9ffa88..8fdc9fda4a 100644 --- a/src/mir_core/mc.cpp +++ b/src/mir_core/mc.cpp @@ -112,7 +112,7 @@ MIR_CORE_DLL(int) db_mc_getSubCount(MCONTACT hMetaContact) return (cc == NULL) ? -1 : cc->nSubs; } -// returns parent hContact for a subcontact or INVALID_CONTACT_ID if it's not a sub +// returns parent hContact for a subcontact or NULL if it's not a sub MIR_CORE_DLL(MCONTACT) db_mc_getMeta(MCONTACT hSubContact) { if (currDb == NULL) return false; @@ -121,6 +121,17 @@ MIR_CORE_DLL(MCONTACT) db_mc_getMeta(MCONTACT hSubContact) return (cc == NULL) ? NULL : cc->parentID; } +// returns parent hContact for a subcontact or hContact itself if it's not a sub +MIR_CORE_DLL(MCONTACT) db_mc_tryMeta(MCONTACT hContact) +{ + if (currDb == NULL) return hContact; + + DBCachedContact *cc = currDb->m_cache->GetCachedContact(hContact); + if (cc == NULL) return hContact; + + return (cc->IsSub()) ? cc->parentID : hContact; +} + // returns a subcontact with the given index MIR_CORE_DLL(MCONTACT) db_mc_getSub(MCONTACT hMetaContact, int iNum) { diff --git a/src/mir_core/mir_core.def b/src/mir_core/mir_core.def index 651e71ee90..cf18d01709 100644 --- a/src/mir_core/mir_core.def +++ b/src/mir_core/mir_core.def @@ -265,3 +265,4 @@ LoadLangPackDescr @262 PathIsAbsolute @263 PathIsAbsoluteW @264 db_mc_notifyDefChange @265 +db_mc_tryMeta @266 -- cgit v1.2.3