From 97601d0013772f6285943cb17bfea625cf2bf9f4 Mon Sep 17 00:00:00 2001
From: George Hazan <george.hazan@gmail.com>
Date: Sun, 13 Dec 2015 11:15:15 +0000
Subject: - custom visiblity flag not to be cleared by a plugin - code cleaning

git-svn-id: http://svn.miranda-ng.org/main/trunk@15849 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
---
 src/mir_app/src/genmenu.h        | 14 ++++++++------
 src/mir_app/src/menu_options.cpp |  2 +-
 src/mir_app/src/menu_tray.cpp    |  2 +-
 src/mir_app/src/menu_utils.cpp   | 40 ++++++++++++++++++++++------------------
 4 files changed, 32 insertions(+), 26 deletions(-)

(limited to 'src/mir_app')

diff --git a/src/mir_app/src/genmenu.h b/src/mir_app/src/genmenu.h
index 2465612a10..9fac8494f5 100644
--- a/src/mir_app/src/genmenu.h
+++ b/src/mir_app/src/genmenu.h
@@ -46,13 +46,15 @@ struct TMO_IntMenuItem
 {
 	DWORD        signature;
 	int          iCommand;
-	int          iconId;          // icon index in the section's image list
-	TMO_MenuItem mi;              // user-defined data
-	char*        UniqName;        // unique name
-	TCHAR*       CustomName;
-	HANDLE       hIcolibItem;     // handle of iconlib item
+	int          iconId;           // icon index in the section's image list
+	TMO_MenuItem mi;               // user-defined data
+	char*        pszUniqName;      // unique name
+	TCHAR*       ptszCustomName;
+	HANDLE       hIcolibItem;      // handle of iconlib item
 	HBITMAP      hBmp;
-	int          originalPosition;
+	int          originalPosition; // !!!!!!!!!!!!!!!!!!!!!!!!
+	bool         customVisible;
+
 	DWORD        hotKey;
 	WPARAM       execParam;
 	void*        pUserData;
diff --git a/src/mir_app/src/menu_options.cpp b/src/mir_app/src/menu_options.cpp
index 35b82d28fe..0e9cfabc4f 100644
--- a/src/mir_app/src/menu_options.cpp
+++ b/src/mir_app/src/menu_options.cpp
@@ -172,7 +172,7 @@ class CGenMenuOptionsPage : public CDlgBase
 			MenuItemOptData *PD = new MenuItemOptData();
 			PD->pimi = p;
 			PD->defname = mir_tstrdup(GetMenuItemText(p));
-			PD->name = mir_tstrdup((p->CustomName != NULL) ? p->CustomName : PD->defname);
+			PD->name = mir_tstrdup((p->ptszCustomName != NULL) ? p->ptszCustomName : PD->defname);
 			PD->bShow = (p->mi.flags & CMIF_HIDDEN) == 0;
 			PD->pos = (bReread) ? p->mi.position : p->originalPosition;
 			PD->id = p->iCommand;
diff --git a/src/mir_app/src/menu_tray.cpp b/src/mir_app/src/menu_tray.cpp
index 4b179e6582..56634a193d 100644
--- a/src/mir_app/src/menu_tray.cpp
+++ b/src/mir_app/src/menu_tray.cpp
@@ -45,7 +45,7 @@ MIR_APP_DLL(HMENU) Menu_BuildTrayMenu(void)
 MIR_APP_DLL(HGENMENU) Menu_AddTrayMenuItem(TMO_MenuItem *pmi)
 {
 	HGENMENU pimi = Menu_AddItem(hTrayMenuObject, pmi, mir_strdup(pmi->pszService));
-	replaceStr(pimi->UniqName, pmi->pszService);
+	replaceStr(pimi->pszUniqName, pmi->pszService);
 	return pimi;
 }
 
diff --git a/src/mir_app/src/menu_utils.cpp b/src/mir_app/src/menu_utils.cpp
index b63b4490d7..bb2bb0bbf7 100644
--- a/src/mir_app/src/menu_utils.cpp
+++ b/src/mir_app/src/menu_utils.cpp
@@ -234,7 +234,7 @@ MIR_APP_DLL(HGENMENU) Menu_GetProtocolRoot(PROTO_INTERFACE *pThis)
 
 	mir_cslock lck(csMenuHook);
 	for (TMO_IntMenuItem *p = pmo->m_items.first; p != NULL; p = p->next)
-		if (!mir_strcmp(p->UniqName, pThis->m_szModuleName))
+		if (!mir_strcmp(p->pszUniqName, pThis->m_szModuleName))
 			return p;
 
 	// create protocol root in the main menu
@@ -296,6 +296,9 @@ static void Menu_SetItemFlags(HGENMENU hMenuItem, bool bSet, int mask)
 	else
 		flags &= ~mask;
 
+	if (!pimi->customVisible)
+		flags |= CMIF_HIDDEN;
+
 	// we allow to set only first 3 bits
 	mir_cslock lck(csMenuHook);
 	pimi->mi.flags = flags | (pimi->mi.flags & 0xFFFFFFF8);
@@ -472,7 +475,7 @@ MIR_APP_DLL(int) Menu_ConfigureItem(HGENMENU hItem, int iOption, INT_PTR value)
 
 	switch (iOption) {
 	case MCI_OPT_UNIQUENAME:
-		replaceStr(pimi->UniqName, (char*)value);
+		replaceStr(pimi->pszUniqName, (char*)value);
 		return 0;
 
 	case MCI_OPT_HOTKEY:
@@ -843,7 +846,7 @@ static void InsertMenuItemWithSeparators(HMENU hMenu, int uItem, MENUITEMINFO *l
 		mii.fType |= MFT_MENUBARBREAK;
 	}
 
-	if (!pimi->CustomName)
+	if (!pimi->ptszCustomName)
 		mii.dwTypeData = GetMenuItemText(pimi);
 
 	InsertMenuItem(hMenu, uItem, TRUE, &mii);
@@ -854,8 +857,8 @@ static void InsertMenuItemWithSeparators(HMENU hMenu, int uItem, MENUITEMINFO *l
 static int sttReadOldItem(TMO_IntMenuItem *pmi, void *szModule)
 {
 	char menuItemName[200], szSetting[256];
-	if (pmi->UniqName)
-		mir_snprintf(menuItemName, "{%s}", pmi->UniqName);
+	if (pmi->pszUniqName)
+		mir_snprintf(menuItemName, "{%s}", pmi->pszUniqName);
 	else if (pmi->mi.flags & CMIF_UNICODE)
 		mir_snprintf(menuItemName, "{%s}", (char*)_T2A(pmi->mi.name.t));
 	else
@@ -870,8 +873,8 @@ static int sttReadOldItem(TMO_IntMenuItem *pmi, void *szModule)
 	mir_snprintf(szSetting, "%s_name", menuItemName);
 	TCHAR *tszCustomName = db_get_tsa(NULL, (char*)szModule, szSetting);
 	if (tszCustomName != NULL) {
-		mir_free(pmi->CustomName);
-		pmi->CustomName = tszCustomName;
+		mir_free(pmi->ptszCustomName);
+		pmi->ptszCustomName = tszCustomName;
 	}
 
 	mir_snprintf(szSetting, "%s_pos", menuItemName);
@@ -890,8 +893,8 @@ static int sttDumpItem(TMO_IntMenuItem *pmi, void *szModule)
 		char menuItemName[200];
 		bin2hex(&pmi->mi.uid, sizeof(pmi->mi.uid), menuItemName);
 
-		int visible = (pmi->mi.flags & CMIF_HIDDEN) == 0;
-		TCHAR *ptszName = (pmi->CustomName != NULL) ? pmi->CustomName : _T("");
+		int bVisible = (pmi->mi.flags & CMIF_HIDDEN) == 0;
+		TCHAR *ptszName = (pmi->ptszCustomName != NULL) ? pmi->ptszCustomName : _T("");
 		
 		char szRootUid[33];
 		if (pmi->mi.root == NULL)
@@ -899,10 +902,10 @@ static int sttDumpItem(TMO_IntMenuItem *pmi, void *szModule)
 		else
 			bin2hex(&pmi->mi.root->mi.uid, sizeof(MUUID), szRootUid);
 
-		CMString szNewValue(FORMAT, _T("%d;%d;%S;%s"), visible, pmi->mi.position, szRootUid, ptszName);
+		CMString szNewValue(FORMAT, _T("%d;%d;%S;%s"), bVisible, pmi->mi.position, szRootUid, ptszName);
 		db_set_ts(NULL, (char*)szModule, menuItemName, szNewValue);
 
-		Netlib_Logf(NULL, "MENU[%s] => %s, %d, %d", menuItemName, pmi->UniqName, visible, pmi->mi.position);
+		Netlib_Logf(NULL, "MENU[%s] => %s, %d, %d", menuItemName, pmi->pszUniqName, bVisible, pmi->mi.position);
 	}
 	return 0;
 }
@@ -986,7 +989,7 @@ int Menu_LoadFromDatabase(TMO_IntMenuItem *pimi, void *szModule)
 		return 0;
 
 	TCHAR *ptszToken = szValue, *pDelim = _tcschr(szValue, ';');
-	int visible = true, pos = 0;
+	int bVisible = true, pos = 0;
 	TCHAR tszCustomName[201]; tszCustomName[0] = 0;
 	char szCustomRoot[33]; szCustomRoot[0] = 0;
 	for (int i = 0; i < 4; i++) {
@@ -994,7 +997,7 @@ int Menu_LoadFromDatabase(TMO_IntMenuItem *pimi, void *szModule)
 			*pDelim = 0;
 		
 		switch (i) {
-			case 0: visible = _ttoi(ptszToken); break;
+			case 0: bVisible = _ttoi(ptszToken); break;
 			case 1: pos = _ttoi(ptszToken); break;
 			case 2: strncpy_s(szCustomRoot, _T2A(ptszToken), _TRUNCATE); break;
 		}
@@ -1008,13 +1011,14 @@ int Menu_LoadFromDatabase(TMO_IntMenuItem *pimi, void *szModule)
 	}
 
 	pimi->mi.position = pos;
-	if (visible)
+	pimi->customVisible = bVisible != 0;
+	if (bVisible)
 		pimi->mi.flags &= ~CMIF_HIDDEN;
 	else
 		pimi->mi.flags |= CMIF_HIDDEN;
 	
 	if (tszCustomName[0])
-		replaceStrT(pimi->CustomName, tszCustomName);
+		replaceStrT(pimi->ptszCustomName, tszCustomName);
 
 	if (szCustomRoot[0]) {
 		char szCurrentUid[33];
@@ -1099,7 +1103,7 @@ static HMENU BuildRecursiveMenu(HMENU hMenu, TMO_IntMenuItem *pRootMenu, WPARAM
 		if (pmi->mi.flags & CMIF_DEFAULT)
 			mii.fState |= MFS_DEFAULT;
 
-		mii.dwTypeData = (pmi->CustomName) ? pmi->CustomName : mi->name.t;
+		mii.dwTypeData = (pmi->ptszCustomName) ? pmi->ptszCustomName : mi->name.t;
 
 		// it's a submenu
 		if (pmi->submenu.first) {
@@ -1333,8 +1337,8 @@ void TIntMenuObject::freeItem(TMO_IntMenuItem *p)
 
 	p->signature = 0;
 	mir_free(p->mi.name.t);
-	mir_free(p->UniqName);
-	mir_free(p->CustomName);
+	mir_free(p->pszUniqName);
+	mir_free(p->ptszCustomName);
 	if (p->hBmp) DeleteObject(p->hBmp);
 	mir_free(p);
 }
-- 
cgit v1.2.3