summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2018-07-10 22:13:57 +0300
committerGeorge Hazan <ghazan@miranda.im>2018-07-10 22:14:09 +0300
commit874702d3cbda37ef3c20a696de168bc5a3d4cb10 (patch)
treec9a682ae80cf7344c6effc85563246711a946c60
parent87790d948b49e9712ae2cb9806841f55a89febf2 (diff)
Menu_SetVisible: new function to write down a Visibility checkbox for a menu item
-rw-r--r--include/m_genmenu.h7
-rw-r--r--libs/win32/mir_app.libbin173112 -> 173332 bytes
-rw-r--r--libs/win64/mir_app.libbin168210 -> 168410 bytes
-rw-r--r--src/mir_app/src/menu_options.cpp19
-rw-r--r--src/mir_app/src/mir_app.def1
-rw-r--r--src/mir_app/src/mir_app64.def1
6 files changed, 27 insertions, 1 deletions
diff --git a/include/m_genmenu.h b/include/m_genmenu.h
index 00d01c1c10..64c599121b 100644
--- a/include/m_genmenu.h
+++ b/include/m_genmenu.h
@@ -171,7 +171,7 @@ EXTERN_C MIR_APP_DLL(BOOL) Menu_ProcessHotKey(int hMenuObject, int key);
EXTERN_C MIR_APP_DLL(int) Menu_RemoveItem(HGENMENU hMenuItem);
/////////////////////////////////////////////////////////////////////////////////////////
-// changes menu item's visibility
+// temporarily changes menu item's visibility
EXTERN_C MIR_APP_DLL(void) Menu_ShowItem(HGENMENU hMenuItem, bool bShow);
@@ -181,6 +181,11 @@ EXTERN_C MIR_APP_DLL(void) Menu_ShowItem(HGENMENU hMenuItem, bool bShow);
EXTERN_C MIR_APP_DLL(void) Menu_SetChecked(HGENMENU hMenuItem, bool bSet);
/////////////////////////////////////////////////////////////////////////////////////////
+// sets menu item's Visible checkbox programmatically and write it to the options
+
+EXTERN_C MIR_APP_DLL(void) Menu_SetVisible(HGENMENU pimi, bool bVisible);
+
+/////////////////////////////////////////////////////////////////////////////////////////
// Creates a new menu object
// szName = unique menu object identifier
// szDisplayName = menu display name (auto-translated by core)
diff --git a/libs/win32/mir_app.lib b/libs/win32/mir_app.lib
index 03b0b88f8e..bcd629962d 100644
--- a/libs/win32/mir_app.lib
+++ b/libs/win32/mir_app.lib
Binary files differ
diff --git a/libs/win64/mir_app.lib b/libs/win64/mir_app.lib
index 1e7fb0deb2..b7c6951225 100644
--- a/libs/win64/mir_app.lib
+++ b/libs/win64/mir_app.lib
Binary files differ
diff --git a/src/mir_app/src/menu_options.cpp b/src/mir_app/src/menu_options.cpp
index 63e16e61ab..333426c5d7 100644
--- a/src/mir_app/src/menu_options.cpp
+++ b/src/mir_app/src/menu_options.cpp
@@ -32,6 +32,25 @@ extern bool bIconsDisabled;
extern int DefaultImageListColorDepth;
void RebuildProtoMenus();
+MIR_APP_DLL(void) Menu_SetVisible(TMO_IntMenuItem *pimi, bool bVisible)
+{
+ if ((pimi = MO_GetIntMenuItem(pimi)) == nullptr)
+ return;
+
+ char szModule[256], menuItemName[256];
+ mir_snprintf(szModule, "%s_Items", pimi->parent->pszName);
+ bin2hex(&pimi->mi.uid, sizeof(pimi->mi.uid), menuItemName);
+
+ ptrW wszValue(db_get_wsa(0, szModule, menuItemName));
+ if (wszValue == nullptr)
+ wszValue = mir_wstrdup(L"1;;;");
+
+ wszValue[0] = bVisible ? '1' : '0';
+ db_set_ws(0, szModule, menuItemName, wszValue);
+
+ Menu_ShowItem(pimi, bVisible);
+}
+
/////////////////////////////////////////////////////////////////////////////////////////
struct MenuItemOptData : public MZeroedObject
diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def
index 001b75d8f6..3b8a50f6eb 100644
--- a/src/mir_app/src/mir_app.def
+++ b/src/mir_app/src/mir_app.def
@@ -630,3 +630,4 @@ Netlib_GetUserSettingsByName @658
Netlib_SetUserSettingsByName @659
?Backup@MDatabaseCommon@@UAGHPB_W@Z @660 NONAME
?addFrame@CMPluginBase@@QAEHPBUCLISTFrame@@@Z @661 NONAME
+Menu_SetVisible @662
diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def
index 7ecf390d80..5678c9d5e2 100644
--- a/src/mir_app/src/mir_app64.def
+++ b/src/mir_app/src/mir_app64.def
@@ -630,3 +630,4 @@ Netlib_GetUserSettingsByName @658
Netlib_SetUserSettingsByName @659
?Backup@MDatabaseCommon@@UEAAHPEB_W@Z @660 NONAME
?addFrame@CMPluginBase@@QEAAHPEBUCLISTFrame@@@Z @661 NONAME
+Menu_SetVisible @662