From 7b6fab706d573bee87ed4df56d4ad42714318e4c Mon Sep 17 00:00:00 2001
From: George Hazan <george.hazan@gmail.com>
Date: Sun, 11 Sep 2016 11:14:00 +0000
Subject: flag added to the extra icon creation functions

git-svn-id: http://svn.miranda-ng.org/main/trunk@17281 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
---
 src/mir_app/src/extraicons.cpp | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

(limited to 'src/mir_app')

diff --git a/src/mir_app/src/extraicons.cpp b/src/mir_app/src/extraicons.cpp
index 10a6bb853b..28579f98b4 100644
--- a/src/mir_app/src/extraicons.cpp
+++ b/src/mir_app/src/extraicons.cpp
@@ -328,18 +328,25 @@ void fnSetAllExtraIcons(MCONTACT hContact)
 }
 
 ///////////////////////////////////////////////////////////////////////////////
-// Services
+// external functions
 
-static void EI_PostCreate(BaseExtraIcon *extra, const char *name, int _hLang)
+static void EI_PostCreate(BaseExtraIcon *extra, const char *name, int flags, int _hLang)
 {
 	char setting[512];
 	mir_snprintf(setting, "Position_%s", name);
 	extra->setPosition(db_get_w(NULL, MODULE_NAME, setting, 1000));
 
 	mir_snprintf(setting, "Slot_%s", name);
-	int slot = db_get_w(NULL, MODULE_NAME, setting, 1);
-	if (slot == (WORD)-1)
+	int slot = db_get_w(NULL, MODULE_NAME, setting, -100);
+	if (slot == 0xFFFF)
 		slot = -1;
+	else if (slot == -100) {
+		if (flags & EIF_DISABLED_BY_DEFAULT) {
+			db_set_w(NULL, MODULE_NAME, setting, 0xFFFF);
+			slot = -1;
+		}
+		else slot = 1;
+	}
 	extra->setSlot(slot);
 
 	extra->m_hLangpack = _hLang;
@@ -381,7 +388,7 @@ static void EI_PostCreate(BaseExtraIcon *extra, const char *name, int _hLang)
 
 EXTERN_C MIR_APP_DLL(HANDLE) ExtraIcon_RegisterCallback(const char *name, const char *description, const char *descIcon, 
 	MIRANDAHOOK RebuildIcons, MIRANDAHOOK ApplyIcon,
-	MIRANDAHOOKPARAM OnClick, LPARAM onClickParam, int _hLang)
+	MIRANDAHOOKPARAM OnClick, LPARAM onClickParam, int flags, int _hLang)
 {
 	// EXTRAICON_TYPE_CALLBACK 
 	if (IsEmpty(name) || IsEmpty(description))
@@ -399,12 +406,12 @@ EXTERN_C MIR_APP_DLL(HANDLE) ExtraIcon_RegisterCallback(const char *name, const
 
 	int id = registeredExtraIcons.getCount() + 1;
 	BaseExtraIcon *extra = new CallbackExtraIcon(id, name, desc, descIcon == NULL ? "" : descIcon, RebuildIcons, ApplyIcon, OnClick, onClickParam);
-	EI_PostCreate(extra, name, _hLang);
+	EI_PostCreate(extra, name, flags, _hLang);
 	return (HANDLE)id;
 }
 
 EXTERN_C MIR_APP_DLL(HANDLE) ExtraIcon_RegisterIcolib(const char *name, const char *description, const char *descIcon,
-	MIRANDAHOOKPARAM OnClick, LPARAM onClickParam, int _hLang)
+	MIRANDAHOOKPARAM OnClick, LPARAM onClickParam, int flags, int _hLang)
 {
 	if (IsEmpty(name) || IsEmpty(description))
 		return 0;
@@ -443,7 +450,7 @@ EXTERN_C MIR_APP_DLL(HANDLE) ExtraIcon_RegisterIcolib(const char *name, const ch
 
 	int id = registeredExtraIcons.getCount() + 1;
 	extra = new IcolibExtraIcon(id, name, desc, descIcon == NULL ? "" : descIcon, OnClick, onClickParam);
-	EI_PostCreate(extra, name, _hLang);
+	EI_PostCreate(extra, name, flags, _hLang);
 	return (HANDLE)id;
 }
 
-- 
cgit v1.2.3