diff options
author | George Hazan <ghazan@miranda.im> | 2020-12-28 21:56:44 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2020-12-28 21:56:44 +0300 |
commit | 6ad5d8b11e4b93df8a9deff1f784b4b75018a3d6 (patch) | |
tree | f2e6b6edea717d763c0fa405e392365affe15a8d /src/mir_app | |
parent | fb71782e69b104fdba85957e22976c397c4845eb (diff) |
fixes #2657 (Невозможно убить кастомный пункт меню)
Diffstat (limited to 'src/mir_app')
-rw-r--r-- | src/mir_app/res/resource.rc | 10 | ||||
-rw-r--r-- | src/mir_app/src/menu_options.cpp | 44 | ||||
-rw-r--r-- | src/mir_app/src/resource.h | 3 |
3 files changed, 48 insertions, 9 deletions
diff --git a/src/mir_app/res/resource.rc b/src/mir_app/res/resource.rc index fcf22c2dd8..8e88a2c601 100644 --- a/src/mir_app/res/resource.rc +++ b/src/mir_app/res/resource.rc @@ -477,10 +477,11 @@ BEGIN EDITTEXT IDC_GENMENU_SERVICE,36,199,108,14,ES_AUTOHSCROLL | ES_READONLY
LTEXT "Name:",IDC_STATIC,4,218,29,8
EDITTEXT IDC_GENMENU_CUSTOMNAME,36,215,108,14,ES_AUTOHSCROLL | WS_DISABLED
- PUSHBUTTON "Default",IDC_GENMENU_DEFAULT,18,234,55,15,WS_DISABLED
- PUSHBUTTON "Set",IDC_GENMENU_SET,78,234,55,15,WS_DISABLED
+ PUSHBUTTON "Default",IDC_GENMENU_DEFAULT,7,233,39,15,WS_DISABLED
+ PUSHBUTTON "Set",IDC_GENMENU_SET,50,233,45,15,WS_DISABLED
CONTROL "Enable icons",IDC_DISABLEMENUICONS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,156,234,91,10
PUSHBUTTON "Reset",IDC_RESETMENU,254,230,50,14
+ PUSHBUTTON "Delete",IDC_GENMENU_DELETE,100,233,39,15,WS_DISABLED
END
IDD_OPT_PROTOCOLORDER DIALOGEX 0, 0, 315, 242
@@ -1502,6 +1503,11 @@ BEGIN 0
END
+IDD_OPT_GENMENU AFX_DIALOG_LAYOUT
+BEGIN
+ 0
+END
+
#endif // English (United States) resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/mir_app/src/menu_options.cpp b/src/mir_app/src/menu_options.cpp index fa8330a13e..a3cbd30929 100644 --- a/src/mir_app/src/menu_options.cpp +++ b/src/mir_app/src/menu_options.cpp @@ -77,6 +77,7 @@ static int SortMenuItems(const MenuItemOptData *p1, const MenuItemOptData *p2) class CGenMenuOptionsPage : public CDlgBase { int iInitMenuValue; + LIST<TMO_IntMenuItem> m_arDeleted; wchar_t idstr[100]; @@ -99,7 +100,7 @@ class CGenMenuOptionsPage : public CDlgBase while (tvi.hItem != nullptr) { m_menuItems.GetItem(&tvi); - MenuItemOptData *iod = (MenuItemOptData*)tvi.lParam; + auto *iod = (MenuItemOptData*)tvi.lParam; if (TMO_IntMenuItem *pimi = iod->pimi) { if (pimi->mi.uid != miid_last) { char menuItemName[256]; @@ -279,12 +280,13 @@ class CGenMenuOptionsPage : public CDlgBase CCtrlTreeView m_menuItems; CCtrlCheck m_radio1, m_radio2, m_enableIcons; CCtrlEdit m_customName, m_service, m_module; - CCtrlButton m_btnInsSeparator, m_btnInsMenu, m_btnReset, m_btnSet, m_btnDefault; + CCtrlButton m_btnInsSeparator, m_btnInsMenu, m_btnReset, m_btnSet, m_btnDefault, m_btnDelete; CCtrlBase m_warning; public: CGenMenuOptionsPage() : CDlgBase(g_plugin, IDD_OPT_GENMENU), + m_arDeleted(1), m_menuItems(this, IDC_MENUITEMS), m_menuObjects(this, IDC_MENUOBJECTS), m_radio1(this, IDC_RADIO1), @@ -294,6 +296,7 @@ public: m_btnInsMenu(this, IDC_INSERTSUBMENU), m_btnReset(this, IDC_RESETMENU), m_btnSet(this, IDC_GENMENU_SET), + m_btnDelete(this, IDC_GENMENU_DELETE), m_btnDefault(this, IDC_GENMENU_DEFAULT), m_customName(this, IDC_GENMENU_CUSTOMNAME), m_service(this, IDC_GENMENU_SERVICE), @@ -305,6 +308,7 @@ public: m_btnInsSeparator.OnClick = Callback(this, &CGenMenuOptionsPage::btnInsSep_Clicked); m_btnInsMenu.OnClick = Callback(this, &CGenMenuOptionsPage::btnInsMenu_Clicked); m_btnDefault.OnClick = Callback(this, &CGenMenuOptionsPage::btnDefault_Clicked); + m_btnDelete.OnClick = Callback(this, &CGenMenuOptionsPage::btnDelete_Clicked); m_menuObjects.OnSelChange = Callback(this, &CGenMenuOptionsPage::onMenuObjectChanged); @@ -345,6 +349,9 @@ public: db_set_b(0, "CList", "DisableMenuIcons", bIconsDisabled); SaveTree(); + for (auto &pimi : m_arDeleted) + Menu_RemoveItem(pimi); + int iNewMenuValue = !m_radio1.GetState(); if (iNewMenuValue != iInitMenuValue) { db_set_b(0, "CList", "MoveProtoMenus", iNewMenuValue); @@ -483,6 +490,29 @@ public: NotifyChange(); } + void btnDelete_Clicked(CCtrlButton *) + { + HTREEITEM hti = m_menuItems.GetSelection(); + if (hti == nullptr) + return; + + TVITEMEX tvi; + tvi.mask = TVIF_PARAM; + tvi.hItem = hti; + m_menuItems.GetItem(&tvi); + + MenuItemOptData *iod = (MenuItemOptData *)tvi.lParam; + if (!(iod->pimi->mi.flags & CMIF_CUSTOM)) + return; + + if (IDYES == MessageBoxW(m_hwnd, TranslateT("Do you really want to delete this menu item?"), TranslateT("Miranda"), MB_YESNO | MB_ICONQUESTION)) { + m_arDeleted.insert(iod->pimi); + m_menuItems.DeleteItem(hti); + delete iod; + NotifyChange(); + } + } + void onMenuObjectChanged(void*) { m_bInitialized = false; @@ -496,10 +526,11 @@ public: m_service.SetTextA(""); m_module.SetTextA(""); - m_btnInsMenu.Enable(false); - m_btnDefault.Enable(false); - m_btnSet.Enable(false); - m_customName.Enable(false); + m_btnInsMenu.Disable(); + m_btnDefault.Disable(); + m_btnSet.Disable(); + m_btnDelete.Disable(); + m_customName.Disable(); HTREEITEM hti = m_menuItems.GetSelection(); if (hti == nullptr) @@ -529,6 +560,7 @@ public: m_btnInsMenu.Enable(iod->pimi->mi.root == nullptr); m_btnDefault.Enable(mir_wstrcmp(iod->name, iod->defname) != 0); + m_btnDelete.Enable(iod->pimi->mi.flags & CMIF_CUSTOM); m_btnSet.Enable(true); m_customName.Enable(true); } diff --git a/src/mir_app/src/resource.h b/src/mir_app/src/resource.h index 3db6ef8de1..3879595446 100644 --- a/src/mir_app/src/resource.h +++ b/src/mir_app/src/resource.h @@ -284,6 +284,7 @@ #define IDC_REVERSE_ORDER 1088
#define IDC_GENMENU_DEFAULT 1089
#define IDC_ICON1 1090
+#define IDC_GENMENU_DELETE 1090
#define IDC_ICON2 1091
#define IDC_ICON3 1092
#define IDC_ICON4 1093
@@ -674,7 +675,7 @@ //
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 333
+#define _APS_NEXT_RESOURCE_VALUE 334
#define _APS_NEXT_COMMAND_VALUE 40018
#define _APS_NEXT_CONTROL_VALUE 1753
#define _APS_NEXT_SYMED_VALUE 101
|