diff options
author | George Hazan <ghazan@miranda.im> | 2019-04-13 20:22:59 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2019-04-13 20:22:59 +0300 |
commit | 680873487c4a7987012606119a744e5ca725ad30 (patch) | |
tree | 8e5fbc68a253c3ec44287754c9295670f1ee44c3 /src | |
parent | 6c4136504c660bf3359e6641362672c4b9502be5 (diff) |
merge with trunk
Diffstat (limited to 'src')
31 files changed, 191 insertions, 723 deletions
diff --git a/src/core/stdmsg/src/chat_options.cpp b/src/core/stdmsg/src/chat_options.cpp index ded9c7b1c7..0248407244 100644 --- a/src/core/stdmsg/src/chat_options.cpp +++ b/src/core/stdmsg/src/chat_options.cpp @@ -137,67 +137,52 @@ static INT CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lp, LPARAM p static IconItem iconList1[] = { - { LPGEN("Window icon"), "chat_window", IDI_CHANMGR, 0 }, - { LPGEN("Text color"), "chat_fgcol", IDI_COLOR, 0 }, - { LPGEN("Background color"), "chat_bkgcol", IDI_BKGCOLOR, 0 }, - { LPGEN("Bold"), "chat_bold", IDI_BBOLD, 0 }, - { LPGEN("Italics"), "chat_italics", IDI_BITALICS, 0 }, - { LPGEN("Underlined"), "chat_underline", IDI_BUNDERLINE, 0 }, - { LPGEN("Smiley button"), "chat_smiley", IDI_BSMILEY, 0 }, - { LPGEN("Room history"), "chat_history", IDI_HISTORY, 0 }, - { LPGEN("Room settings"), "chat_settings", IDI_TOPICBUT, 0 }, - { LPGEN("Event filter disabled"), "chat_filter", IDI_FILTER, 0 }, - { LPGEN("Event filter enabled"), "chat_filter2", IDI_FILTER2, 0 }, - { LPGEN("Hide nick list"), "chat_nicklist", IDI_NICKLIST, 0 }, - { LPGEN("Show nick list"), "chat_nicklist2", IDI_NICKLIST2, 0 }, - { LPGEN("Icon overlay"), "chat_overlay", IDI_OVERLAY, 0 }, - { LPGEN("Close"), "chat_close", IDI_CLOSE, 0 }, - - { LPGEN("Status 1 (10x10)"), "chat_status0", IDI_STATUS0, 10 }, - { LPGEN("Status 2 (10x10)"), "chat_status1", IDI_STATUS1, 10 }, - { LPGEN("Status 3 (10x10)"), "chat_status2", IDI_STATUS2, 10 }, - { LPGEN("Status 4 (10x10)"), "chat_status3", IDI_STATUS3, 10 }, - { LPGEN("Status 5 (10x10)"), "chat_status4", IDI_STATUS4, 10 }, - { LPGEN("Status 6 (10x10)"), "chat_status5", IDI_STATUS5, 10 } + { LPGEN("Window icon"), "window", IDI_CHANMGR }, + { LPGEN("Text color"), "fgcol", IDI_COLOR }, + { LPGEN("Background color"), "bkgcol", IDI_BKGCOLOR }, + { LPGEN("Bold"), "bold", IDI_BBOLD }, + { LPGEN("Italics"), "italics", IDI_BITALICS }, + { LPGEN("Underlined"), "underline", IDI_BUNDERLINE }, + { LPGEN("Smiley button"), "smiley", IDI_BSMILEY }, + { LPGEN("Room history"), "history", IDI_HISTORY }, + { LPGEN("Room settings"), "settings", IDI_TOPICBUT }, + { LPGEN("Event filter disabled"), "filter", IDI_FILTER }, + { LPGEN("Event filter enabled"), "filter2", IDI_FILTER2 }, + { LPGEN("Hide nick list"), "nicklist", IDI_NICKLIST }, + { LPGEN("Show nick list"), "nicklist2", IDI_NICKLIST2 }, + { LPGEN("Icon overlay"), "overlay", IDI_OVERLAY }, + { LPGEN("Close"), "close", IDI_CLOSE }, + + { LPGEN("Status 1 (10x10)"), "status0", IDI_STATUS0, 10 }, + { LPGEN("Status 2 (10x10)"), "status1", IDI_STATUS1, 10 }, + { LPGEN("Status 3 (10x10)"), "status2", IDI_STATUS2, 10 }, + { LPGEN("Status 4 (10x10)"), "status3", IDI_STATUS3, 10 }, + { LPGEN("Status 5 (10x10)"), "status4", IDI_STATUS4, 10 }, + { LPGEN("Status 6 (10x10)"), "status5", IDI_STATUS5, 10 } }; static IconItem iconList2[] = { - { LPGEN("Message in (10x10)"), "chat_log_message_in", IDI_MESSAGE, 10 }, - { LPGEN("Message out (10x10)"), "chat_log_message_out", IDI_MESSAGEOUT, 10 }, - { LPGEN("Action (10x10)"), "chat_log_action", IDI_ACTION, 10 }, - { LPGEN("Add status (10x10)"), "chat_log_addstatus", IDI_ADDSTATUS, 10 }, - { LPGEN("Remove status (10x10)"), "chat_log_removestatus", IDI_REMSTATUS, 10 }, - { LPGEN("Join (10x10)"), "chat_log_join", IDI_JOIN, 10 }, - { LPGEN("Leave (10x10)"), "chat_log_part", IDI_PART, 10 }, - { LPGEN("Quit (10x10)"), "chat_log_quit", IDI_QUIT, 10 }, - { LPGEN("Kick (10x10)"), "chat_log_kick", IDI_KICK, 10 }, - { LPGEN("Nick change (10x10)"), "chat_log_nick", IDI_NICK, 10 }, - { LPGEN("Notice (10x10)"), "chat_log_notice", IDI_NOTICE, 10 }, - { LPGEN("Topic (10x10)"), "chat_log_topic", IDI_TOPIC, 10 }, - { LPGEN("Highlight (10x10)"), "chat_log_highlight", IDI_HIGHLIGHT, 10 }, - { LPGEN("Information (10x10)"), "chat_log_info", IDI_INFO, 10 } + { LPGEN("Message in (10x10)"), "log_message_in", IDI_MESSAGE, 10 }, + { LPGEN("Message out (10x10)"), "log_message_out", IDI_MESSAGEOUT, 10 }, + { LPGEN("Action (10x10)"), "log_action", IDI_ACTION, 10 }, + { LPGEN("Add status (10x10)"), "log_addstatus", IDI_ADDSTATUS, 10 }, + { LPGEN("Remove status (10x10)"), "log_removestatus", IDI_REMSTATUS, 10 }, + { LPGEN("Join (10x10)"), "log_join", IDI_JOIN, 10 }, + { LPGEN("Leave (10x10)"), "log_part", IDI_PART, 10 }, + { LPGEN("Quit (10x10)"), "log_quit", IDI_QUIT, 10 }, + { LPGEN("Kick (10x10)"), "log_kick", IDI_KICK, 10 }, + { LPGEN("Nick change (10x10)"), "log_nick", IDI_NICK, 10 }, + { LPGEN("Notice (10x10)"), "log_notice", IDI_NOTICE, 10 }, + { LPGEN("Topic (10x10)"), "log_topic", IDI_TOPIC, 10 }, + { LPGEN("Highlight (10x10)"), "log_highlight", IDI_HIGHLIGHT, 10 }, + { LPGEN("Information (10x10)"), "log_info", IDI_INFO, 10 } }; void AddIcons(void) { - g_plugin.registerIcon(LPGEN("Messaging") "/" LPGEN("Group chats"), iconList1); - g_plugin.registerIcon(LPGEN("Messaging") "/" LPGEN("Group chats log"), iconList2); -} - -// load icons from the skinning module if available -HICON LoadIconEx(const char *pszIcoLibName, bool big) -{ - char szTemp[256]; - mir_snprintf(szTemp, "chat_%s", pszIcoLibName); - return IcoLib_GetIcon(szTemp, big); -} - -HANDLE GetIconHandle(const char *pszIcoLibName) -{ - char szTemp[256]; - mir_snprintf(szTemp, "chat_%s", pszIcoLibName); - return IcoLib_GetIconHandle(szTemp); + g_plugin.registerIcon(LPGEN("Messaging") "/" LPGEN("Group chats"), iconList1, "chat"); + g_plugin.registerIcon(LPGEN("Messaging") "/" LPGEN("Group chats log"), iconList2, "chat"); } ///////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/core/stdmsg/src/chat_window.cpp b/src/core/stdmsg/src/chat_window.cpp index 1ea4206a6d..02662b6d9a 100644 --- a/src/core/stdmsg/src/chat_window.cpp +++ b/src/core/stdmsg/src/chat_window.cpp @@ -113,7 +113,7 @@ void CChatRoomDlg::onClick_Filter(CCtrlButton *pButton) return; m_bFilterEnabled = !m_bFilterEnabled; - m_btnFilter.SendMsg(BM_SETIMAGE, IMAGE_ICON, (LPARAM)LoadIconEx(m_bFilterEnabled ? "filter" : "filter2", FALSE)); + m_btnFilter.SendMsg(BM_SETIMAGE, IMAGE_ICON, (LPARAM)g_plugin.getIcon(m_bFilterEnabled ? IDI_FILTER : IDI_FILTER2, FALSE)); if (m_bFilterEnabled && db_get_b(0, CHAT_MODULE, "RightClickFilter", 0) == 0) ShowFilterMenu(); else @@ -126,7 +126,7 @@ void CChatRoomDlg::onClick_NickList(CCtrlButton *pButton) return; m_bNicklistEnabled = !m_bNicklistEnabled; - pButton->SendMsg(BM_SETIMAGE, IMAGE_ICON, (LPARAM)LoadIconEx(m_bNicklistEnabled ? "nicklist" : "nicklist2", FALSE)); + pButton->SendMsg(BM_SETIMAGE, IMAGE_ICON, (LPARAM)g_plugin.getIcon(m_bNicklistEnabled ? IDI_NICKLIST : IDI_NICKLIST2, FALSE)); ScrollToBottom(); Resize(); @@ -271,8 +271,8 @@ void CChatRoomDlg::UpdateNickList() void CChatRoomDlg::UpdateOptions() { - m_btnNickList.SendMsg(BM_SETIMAGE, IMAGE_ICON, (LPARAM)LoadIconEx(m_bNicklistEnabled ? "nicklist" : "nicklist2", FALSE)); - m_btnFilter.SendMsg(BM_SETIMAGE, IMAGE_ICON, (LPARAM)LoadIconEx(m_bFilterEnabled ? "filter" : "filter2", FALSE)); + m_btnNickList.SendMsg(BM_SETIMAGE, IMAGE_ICON, (LPARAM)g_plugin.getIcon(m_bNicklistEnabled ? IDI_NICKLIST : IDI_NICKLIST2, FALSE)); + m_btnFilter.SendMsg(BM_SETIMAGE, IMAGE_ICON, (LPARAM)g_plugin.getIcon(m_bFilterEnabled ? IDI_FILTER : IDI_FILTER2, FALSE)); MODULEINFO *mi = m_si->pMI; EnableWindow(m_btnBold.GetHwnd(), mi->bBold); @@ -291,7 +291,7 @@ void CChatRoomDlg::UpdateOptions() SendMessage(m_pOwner->m_hwndStatus, SB_SETICON, 0, (LPARAM)hIcon); - Window_SetIcon_IcoLib(m_pOwner->GetHwnd(), GetIconHandle("window")); + Window_SetIcon_IcoLib(m_pOwner->GetHwnd(), g_plugin.getIconHandle(IDI_CHANMGR)); m_log.SendMsg(EM_SETBKGNDCOLOR, 0, g_Settings.crLogBackground); @@ -1141,7 +1141,7 @@ INT_PTR CChatRoomDlg::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam) break; case DM_UPDATETITLE: - if (lParam == 0 || lParam == m_hContact) + if (lParam == 0 || lParam == (LPARAM)m_hContact) UpdateTitle(); break; diff --git a/src/core/stdmsg/src/msgs.cpp b/src/core/stdmsg/src/msgs.cpp index ac88cf3e9c..84fad84fba 100644 --- a/src/core/stdmsg/src/msgs.cpp +++ b/src/core/stdmsg/src/msgs.cpp @@ -387,35 +387,35 @@ int RegisterToolbarIcons(WPARAM, LPARAM) bbd.bbbFlags = BBBF_ISPUSHBUTTON | BBBF_ISCHATBUTTON | BBBF_CREATEBYID;
bbd.dwButtonID = IDC_SRMM_BOLD;
bbd.dwDefPos = 10;
- bbd.hIcon = GetIconHandle("bold");
+ bbd.hIcon = g_plugin.getIconHandle(IDI_BBOLD);
bbd.pwszText = LPGENW("&Bold");
bbd.pwszTooltip = LPGENW("Make the text bold (Ctrl+B)");
Srmm_AddButton(&bbd, &g_plugin);
bbd.dwButtonID = IDC_SRMM_ITALICS;
bbd.dwDefPos = 15;
- bbd.hIcon = GetIconHandle("italics");
+ bbd.hIcon = g_plugin.getIconHandle(IDI_BITALICS);
bbd.pwszText = LPGENW("&Italic");
bbd.pwszTooltip = LPGENW("Make the text italicized (Ctrl+I)");
Srmm_AddButton(&bbd, &g_plugin);
bbd.dwButtonID = IDC_SRMM_UNDERLINE;
bbd.dwDefPos = 20;
- bbd.hIcon = GetIconHandle("underline");
+ bbd.hIcon = g_plugin.getIconHandle(IDI_BUNDERLINE);
bbd.pwszText = LPGENW("&Underline");
bbd.pwszTooltip = LPGENW("Make the text underlined (Ctrl+U)");
Srmm_AddButton(&bbd, &g_plugin);
bbd.dwButtonID = IDC_SRMM_COLOR;
bbd.dwDefPos = 25;
- bbd.hIcon = GetIconHandle("fgcol");
+ bbd.hIcon = g_plugin.getIconHandle(IDI_COLOR);
bbd.pwszText = LPGENW("&Color");
bbd.pwszTooltip = LPGENW("Select a foreground color for the text (Ctrl+K)");
Srmm_AddButton(&bbd, &g_plugin);
bbd.dwButtonID = IDC_SRMM_BKGCOLOR;
bbd.dwDefPos = 30;
- bbd.hIcon = GetIconHandle("bkgcol");
+ bbd.hIcon = g_plugin.getIconHandle(IDI_BKGCOLOR);
bbd.pwszText = LPGENW("&Background color");
bbd.pwszTooltip = LPGENW("Select a background color for the text (Ctrl+L)");
Srmm_AddButton(&bbd, &g_plugin);
@@ -423,21 +423,21 @@ int RegisterToolbarIcons(WPARAM, LPARAM) bbd.bbbFlags = BBBF_ISCHATBUTTON | BBBF_ISRSIDEBUTTON | BBBF_CREATEBYID;
bbd.dwButtonID = IDC_SRMM_CHANMGR;
bbd.dwDefPos = 30;
- bbd.hIcon = GetIconHandle("settings");
+ bbd.hIcon = g_plugin.getIconHandle(IDI_TOPICBUT);
bbd.pwszText = LPGENW("&Room settings");
bbd.pwszTooltip = LPGENW("Control this room (Ctrl+O)");
Srmm_AddButton(&bbd, &g_plugin);
bbd.dwButtonID = IDC_SRMM_SHOWNICKLIST;
bbd.dwDefPos = 20;
- bbd.hIcon = GetIconHandle("nicklist");
+ bbd.hIcon = g_plugin.getIconHandle(IDI_NICKLIST);
bbd.pwszText = LPGENW("&Show/hide nick list");
bbd.pwszTooltip = LPGENW("Show/hide the nick list (Ctrl+N)");
Srmm_AddButton(&bbd, &g_plugin);
bbd.dwButtonID = IDC_SRMM_FILTER;
bbd.dwDefPos = 10;
- bbd.hIcon = GetIconHandle("filter");
+ bbd.hIcon = g_plugin.getIconHandle(IDI_FILTER);
bbd.pwszText = LPGENW("&Filter");
bbd.pwszTooltip = LPGENW("Enable/disable the event filter (Ctrl+F)");
Srmm_AddButton(&bbd, &g_plugin);
diff --git a/src/core/stdmsg/src/stdafx.h b/src/core/stdmsg/src/stdafx.h index 37e5664275..b24778cf89 100644 --- a/src/core/stdmsg/src/stdafx.h +++ b/src/core/stdmsg/src/stdafx.h @@ -134,8 +134,6 @@ SESSION_INFO* SM_GetNextWindow(SESSION_INFO *si); // options.cpp
void AddIcons(void);
-HICON LoadIconEx(const char *pszIcoLibName, bool big);
-HANDLE GetIconHandle(const char *pszIcolibName);
// tools.cpp
void SetButtonsPos(HWND hwndDlg, bool bIsChat);
diff --git a/src/core/stdmsg/src/tabs.cpp b/src/core/stdmsg/src/tabs.cpp index f295a01338..a5f12c1c1b 100644 --- a/src/core/stdmsg/src/tabs.cpp +++ b/src/core/stdmsg/src/tabs.cpp @@ -279,7 +279,7 @@ void CTabbedWindow::FixTabIcons(CMsgDialog *pDlg) if (g_dat.bUseStatusWinIcon) Window_SetProtoIcon_IcoLib(m_hwnd, pDlg->GetProto(), pDlg->GetStatus()); else if (pDlg->isChat()) - Window_SetIcon_IcoLib(m_hwnd, GetIconHandle("window")); + Window_SetIcon_IcoLib(m_hwnd, g_plugin.getIconHandle(IDI_CHANMGR)); else Window_SetSkinIcon_IcoLib(m_hwnd, SKINICON_EVENT_MESSAGE); } diff --git a/src/mir_app/src/CMPluginBase.cpp b/src/mir_app/src/CMPluginBase.cpp index 062d89471e..3ced1cf459 100644 --- a/src/mir_app/src/CMPluginBase.cpp +++ b/src/mir_app/src/CMPluginBase.cpp @@ -24,6 +24,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "stdafx.h" #include "plugins.h" +#include "IcoLib.h" static int sttFakeID = -100; @@ -111,9 +112,15 @@ EXTERN_C MIR_APP_DLL(void) UnregisterPlugin(CMPluginBase *pPlugin) ///////////////////////////////////////////////////////////////////////////////////////// +static int CompareIcons(const IcolibItem *p1, const IcolibItem *p2) +{ + return p1->default_indx - p2->default_indx; +} + CMPluginBase::CMPluginBase(const char *moduleName, const PLUGININFOEX &pInfo) : m_szModuleName(moduleName), - m_pInfo(pInfo) + m_pInfo(pInfo), + m_arIcons(10, CompareIcons) { if (m_hInst != nullptr) g_arPlugins.insert(this); @@ -272,6 +279,33 @@ void CMPluginBase::debugLogW(LPCWSTR wszFormat, ...) ///////////////////////////////////////////////////////////////////////////////////////// +int CMPluginBase::addImgListIcon(HIMAGELIST himl, int iconId) +{ + HICON hIcon = getIcon(iconId); + int ret = ::ImageList_AddIcon(himl, hIcon); + IcoLib_ReleaseIcon(hIcon); + return ret; +} + +HICON CMPluginBase::getIcon(int iconId, bool big) +{ + return IcoLib_GetIconByHandle(getIconHandle(iconId), big); +} + +HANDLE CMPluginBase::getIconHandle(int iconId) +{ + IcolibItem *p = (IcolibItem*)alloca(sizeof(IcolibItem)); + p->default_indx = -iconId; + return m_arIcons.find(p); +} + +void CMPluginBase::releaseIcon(int iconId, bool big) +{ + IcoLib_ReleaseIcon(getIcon(iconId), big); +} + +///////////////////////////////////////////////////////////////////////////////////////// + void CMPluginBase::RegisterProtocol(int type, pfnInitProto fnInit, pfnUninitProto fnUninit) { if (isPluginBanned(m_pInfo.uuid)) diff --git a/src/mir_app/src/clistmod.cpp b/src/mir_app/src/clistmod.cpp index e56308f232..ed4c445e2a 100644 --- a/src/mir_app/src/clistmod.cpp +++ b/src/mir_app/src/clistmod.cpp @@ -135,7 +135,7 @@ MIR_APP_DLL(int) Clist_GetContactIcon(MCONTACT hContact) static void AddProtoIconIndex(PROTOACCOUNT *pa)
{
for (auto &it : g_statuses) {
- int iImg = ImageList_AddIcon_ProtoIconLibLoaded(hCListImages, pa->szModuleName, it.iStatus);
+ int iImg = ImageList_AddProtoIcon(hCListImages, pa->szModuleName, it.iStatus);
if (it.iStatus == ID_STATUS_OFFLINE)
pa->iIconBase = iImg;
}
diff --git a/src/mir_app/src/descbutton.cpp b/src/mir_app/src/descbutton.cpp index 965024ff65..0e737c2d33 100644 --- a/src/mir_app/src/descbutton.cpp +++ b/src/mir_app/src/descbutton.cpp @@ -26,8 +26,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "stdafx.h"
#include "m_descbutton.h"
-extern HINSTANCE hInst;
-
////////////////////////////////////////////////////////////////////////////////////
// Internals
diff --git a/src/mir_app/src/ei_baseIcon.cpp b/src/mir_app/src/ei_baseIcon.cpp index bc60215be9..0cca055e09 100644 --- a/src/mir_app/src/ei_baseIcon.cpp +++ b/src/mir_app/src/ei_baseIcon.cpp @@ -23,13 +23,16 @@ Boston, MA 02111-1307, USA. #include "extraicons.h" -BaseExtraIcon::BaseExtraIcon(const char *name, const wchar_t *description, const char *descIcon, MIRANDAHOOKPARAM OnClick, LPARAM param) : +BaseExtraIcon::BaseExtraIcon(const char *name, const wchar_t *description, HANDLE descIcon, MIRANDAHOOKPARAM OnClick, LPARAM param) : ExtraIcon(name), m_OnClick(OnClick), m_onClickParam(param), m_tszDescription(mir_wstrdup(description)), - m_szDescIcon(mir_strdup(descIcon)) + m_hDescIcon(descIcon) { + if (!IcoLib_IsManaged((HICON)descIcon)) + m_hDescIcon = IcoLib_GetIconHandle((const char *)descIcon); + m_id = registeredExtraIcons.getCount() + 1; } @@ -48,19 +51,9 @@ const wchar_t* BaseExtraIcon::getDescription() const return TranslateW_LP(m_tszDescription, m_pPlugin); } -void BaseExtraIcon::setDescription(const wchar_t *desc) -{ - m_tszDescription = mir_wstrdup(desc); -} - -const char* BaseExtraIcon::getDescIcon() const -{ - return m_szDescIcon; -} - -void BaseExtraIcon::setDescIcon(const char *icon) +HANDLE BaseExtraIcon::getDescIcon() const { - m_szDescIcon = mir_strdup(icon); + return m_hDescIcon; } void BaseExtraIcon::onClick(MCONTACT hContact) diff --git a/src/mir_app/src/ei_callbackIcon.cpp b/src/mir_app/src/ei_callbackIcon.cpp index 262ccc347d..2eb223c121 100644 --- a/src/mir_app/src/ei_callbackIcon.cpp +++ b/src/mir_app/src/ei_callbackIcon.cpp @@ -23,7 +23,7 @@ Boston, MA 02111-1307, USA. #include "extraicons.h" -CallbackExtraIcon::CallbackExtraIcon(const char *_name, const wchar_t *_description, const char *_descIcon, +CallbackExtraIcon::CallbackExtraIcon(const char *_name, const wchar_t *_description, HANDLE _descIcon, MIRANDAHOOK _RebuildIcons, MIRANDAHOOK _ApplyIcon, MIRANDAHOOKPARAM _OnClick, LPARAM _param) : BaseExtraIcon(_name, _description, _descIcon, _OnClick, _param), m_pfnRebuildIcons(_RebuildIcons), m_pfnApplyIcon(_ApplyIcon), m_needToRebuild(true) diff --git a/src/mir_app/src/ei_defaulticons.cpp b/src/mir_app/src/ei_defaulticons.cpp index 39cb7c273a..300e36bcdd 100644 --- a/src/mir_app/src/ei_defaulticons.cpp +++ b/src/mir_app/src/ei_defaulticons.cpp @@ -290,17 +290,17 @@ static int ProtocolOnClick(WPARAM wParam, LPARAM, LPARAM) void DefaultExtraIcons_Load() { hExtraChat = ExtraIcon_RegisterIcolib("chat_activity", LPGEN("Chat activity"), "ChatActivity"); - hExtraVisibility = ExtraIcon_RegisterIcolib("visibility", "Visibility", Skin_GetIconName(SKINICON_OTHER_VISIBLE_ALL)); + hExtraVisibility = ExtraIcon_RegisterIcolib("visibility", "Visibility", Skin_GetIconHandle(SKINICON_OTHER_VISIBLE_ALL)); hExtraGender = ExtraIcon_RegisterIcolib("gender", "Gender", "gender_male", nullptr, 0, EIF_DISABLED_BY_DEFAULT); - hExtraProto = ExtraIcon_RegisterCallback("protocol", "Account", Skin_GetIconName(SKINICON_OTHER_ACCMGR), + hExtraProto = ExtraIcon_RegisterCallback("protocol", "Account", Skin_GetIconHandle(SKINICON_OTHER_ACCMGR), &ProtocolRebuildIcons, &ProtocolApplyIcon, &ProtocolOnClick, 0, EIF_DISABLED_BY_DEFAULT); for (auto &p : infos) { p.hIcolib = Skin_GetIconHandle(p.iSkinIcon); if (p.OnClick) - p.hExtraIcon = ExtraIcon_RegisterIcolib(p.name, p.desc, Skin_GetIconName(p.iSkinIcon), DefaultOnClick, (LPARAM)&p, p.flags); + p.hExtraIcon = ExtraIcon_RegisterIcolib(p.name, p.desc, Skin_GetIconHandle(p.iSkinIcon), DefaultOnClick, (LPARAM)&p, p.flags); else - p.hExtraIcon = ExtraIcon_RegisterIcolib(p.name, p.desc, Skin_GetIconName(p.iSkinIcon), nullptr, 0, p.flags); + p.hExtraIcon = ExtraIcon_RegisterIcolib(p.name, p.desc, Skin_GetIconHandle(p.iSkinIcon), nullptr, 0, p.flags); } for (auto &hContact : Contacts()) { diff --git a/src/mir_app/src/ei_groupIcon.cpp b/src/mir_app/src/ei_groupIcon.cpp index fffea046f7..0f1313d297 100644 --- a/src/mir_app/src/ei_groupIcon.cpp +++ b/src/mir_app/src/ei_groupIcon.cpp @@ -177,13 +177,13 @@ const wchar_t* ExtraIconGroup::getDescription() const return m_tszDescription; } -const char *ExtraIconGroup::getDescIcon() const +HANDLE ExtraIconGroup::getDescIcon() const { for (auto &p : m_items) - if (!IsEmpty(p->getDescIcon())) - return p->getDescIcon(); + if (HANDLE ret = p->getDescIcon()) + return ret; - return ""; + return nullptr; } int ExtraIconGroup::getType() const diff --git a/src/mir_app/src/ei_icolibIcon.cpp b/src/mir_app/src/ei_icolibIcon.cpp index df9b33da05..bdb3b16125 100644 --- a/src/mir_app/src/ei_icolibIcon.cpp +++ b/src/mir_app/src/ei_icolibIcon.cpp @@ -26,7 +26,7 @@ Boston, MA 02111-1307, USA. #include "IcoLib.h" -IcolibExtraIcon::IcolibExtraIcon(const char *_name, const wchar_t *_description, const char *_descIcon, MIRANDAHOOKPARAM _OnClick, LPARAM _param) : +IcolibExtraIcon::IcolibExtraIcon(const char *_name, const wchar_t *_description, HANDLE _descIcon, MIRANDAHOOKPARAM _OnClick, LPARAM _param) : BaseExtraIcon(_name, _description, _descIcon, _OnClick, _param) { db_set_resident(EI_MODULE_NAME, _name); diff --git a/src/mir_app/src/ei_options.cpp b/src/mir_app/src/ei_options.cpp index 64137ece40..12621029be 100644 --- a/src/mir_app/src/ei_options.cpp +++ b/src/mir_app/src/ei_options.cpp @@ -117,7 +117,7 @@ class CExtraIconOptsDlg : public CDlgBase BaseExtraIcon *extra = registeredExtraIcons[group.data[i] - 1]; ids->add(extra->getID()); - if (img == 0 && !IsEmpty(extra->getDescIcon())) + if (img == 0 && extra->getDescIcon() != nullptr) img = extra->getID(); if (i > 0) @@ -414,23 +414,20 @@ public: void BuildIconList() { HIMAGELIST hImageList = ImageList_Create(g_iIconSX, g_iIconSX, ILC_COLOR32 | ILC_MASK, 2, 2); - - HICON hBlankIcon = (HICON)LoadImage(g_plugin.getInst(), MAKEINTRESOURCE(IDI_BLANK), IMAGE_ICON, g_iIconSX, g_iIconSX, 0); - ImageList_AddIcon(hImageList, hBlankIcon); + ImageList_AddIcon_NotShared(hImageList, MAKEINTRESOURCE(IDI_BLANK)); for (auto &extra : registeredExtraIcons) { extra->setID(registeredExtraIcons.indexOf(&extra)+1); - HICON hIcon = IcoLib_GetIcon(extra->getDescIcon()); + HICON hIcon = IcoLib_GetIconByHandle(extra->getDescIcon()); if (hIcon == nullptr) - ImageList_AddIcon(hImageList, hBlankIcon); + ImageList_AddIcon_NotShared(hImageList, MAKEINTRESOURCE(IDI_BLANK)); else { ImageList_AddIcon(hImageList, hIcon); IcoLib_ReleaseIcon(hIcon); } } m_tree.SetImageList(hImageList, TVSIL_NORMAL); - DestroyIcon(hBlankIcon); for (auto &extra : extraIconsBySlot) { if (extra->getType() == EXTRAICON_TYPE_GROUP) { diff --git a/src/mir_app/src/ei_services.cpp b/src/mir_app/src/ei_services.cpp index 65cab195c6..ab09af39ca 100644 --- a/src/mir_app/src/ei_services.cpp +++ b/src/mir_app/src/ei_services.cpp @@ -350,9 +350,8 @@ static void EI_PostCreate(BaseExtraIcon *extra, const char *name, int flags) } } -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 flags) +EXTERN_C MIR_APP_DLL(HANDLE) ExtraIcon_RegisterCallback(const char *name, const char *description, HANDLE descIcon, + MIRANDAHOOK RebuildIcons, MIRANDAHOOK ApplyIcon, MIRANDAHOOKPARAM OnClick, LPARAM onClickParam, int flags) { // EXTRAICON_TYPE_CALLBACK if (IsEmpty(name) || IsEmpty(description)) @@ -367,14 +366,13 @@ EXTERN_C MIR_APP_DLL(HANDLE) ExtraIcon_RegisterCallback(const char *name, const ptrW tszDesc(mir_a2u(description)); - BaseExtraIcon *extra = new CallbackExtraIcon(name, tszDesc, descIcon == nullptr ? "" : descIcon, RebuildIcons, ApplyIcon, OnClick, onClickParam); + BaseExtraIcon *extra = new CallbackExtraIcon(name, tszDesc, descIcon, RebuildIcons, ApplyIcon, OnClick, onClickParam); extra->m_pPlugin = &GetPluginByInstance(GetInstByAddress(RebuildIcons)); EI_PostCreate(extra, name, flags); return extra; } -EXTERN_C MIR_APP_DLL(HANDLE) ExtraIcon_RegisterIcolib(const char *name, const char *description, const char *descIcon, - MIRANDAHOOKPARAM OnClick, LPARAM onClickParam, int flags) +EXTERN_C MIR_APP_DLL(HANDLE) ExtraIcon_RegisterIcolib(const char *name, const char *description, HANDLE descIcon, MIRANDAHOOKPARAM OnClick, LPARAM onClickParam, int flags) { if (IsEmpty(name) || IsEmpty(description)) return nullptr; @@ -387,7 +385,7 @@ EXTERN_C MIR_APP_DLL(HANDLE) ExtraIcon_RegisterIcolib(const char *name, const ch return nullptr; // Found one, now merge it - if (!IsEmpty(descIcon)) + if (descIcon) extra->setDescIcon(descIcon); if (OnClick != nullptr) @@ -401,7 +399,7 @@ EXTERN_C MIR_APP_DLL(HANDLE) ExtraIcon_RegisterIcolib(const char *name, const ch } } else { - extra = new IcolibExtraIcon(name, tszDesc, descIcon == nullptr ? "" : descIcon, OnClick, onClickParam); + extra = new IcolibExtraIcon(name, tszDesc, descIcon, OnClick, onClickParam); extra->m_pPlugin = &GetPluginByInstance(GetInstByAddress((void*)name)); EI_PostCreate(extra, name, flags); } diff --git a/src/mir_app/src/extraicons.h b/src/mir_app/src/extraicons.h index 9c72dc3bad..67838ebdf0 100644 --- a/src/mir_app/src/extraicons.h +++ b/src/mir_app/src/extraicons.h @@ -60,7 +60,7 @@ public: virtual const char *getName() const;
virtual const wchar_t *getDescription() const = 0;
- virtual const char *getDescIcon() const = 0;
+ virtual HANDLE getDescIcon() const = 0;
virtual int getType() const = 0;
virtual int getSlot() const;
@@ -91,13 +91,19 @@ protected: class BaseExtraIcon : public ExtraIcon
{
public:
- BaseExtraIcon(const char *name, const wchar_t *description, const char *descIcon, MIRANDAHOOKPARAM OnClick, LPARAM param);
+ BaseExtraIcon(const char *name, const wchar_t *description, HANDLE descIcon, MIRANDAHOOKPARAM OnClick, LPARAM param);
virtual ~BaseExtraIcon();
virtual const wchar_t* getDescription() const;
- virtual void setDescription(const wchar_t *desc);
- virtual const char* getDescIcon() const;
- virtual void setDescIcon(const char *icon);
+ virtual void setDescription(const wchar_t *desc) {
+ m_tszDescription = mir_wstrdup(desc);
+ }
+
+ virtual HANDLE getDescIcon() const;
+ void setDescIcon(HANDLE icon) {
+ m_hDescIcon = icon;
+ }
+
virtual int getType() const = 0;
virtual void onClick(MCONTACT hContact);
@@ -107,7 +113,7 @@ public: protected:
ptrW m_tszDescription;
- ptrA m_szDescIcon;
+ HANDLE m_hDescIcon;
MIRANDAHOOKPARAM m_OnClick;
LPARAM m_onClickParam;
};
@@ -118,7 +124,7 @@ protected: class CallbackExtraIcon : public BaseExtraIcon
{
public:
- CallbackExtraIcon(const char *name, const wchar_t *description, const char *descIcon,
+ CallbackExtraIcon(const char *name, const wchar_t *description, HANDLE descIcon,
MIRANDAHOOK RebuildIcons, MIRANDAHOOK ApplyIcon, MIRANDAHOOKPARAM OnClick, LPARAM param);
virtual ~CallbackExtraIcon();
@@ -143,7 +149,7 @@ private: class IcolibExtraIcon : public BaseExtraIcon
{
public:
- IcolibExtraIcon(const char *name, const wchar_t *description, const char *descIcon, MIRANDAHOOKPARAM OnClick, LPARAM param);
+ IcolibExtraIcon(const char *name, const wchar_t *description, HANDLE descIcon, MIRANDAHOOKPARAM OnClick, LPARAM param);
virtual ~IcolibExtraIcon();
virtual int getType() const;
@@ -175,7 +181,7 @@ public: virtual int setIconByName(MCONTACT hContact, const char *icon);
virtual const wchar_t* getDescription() const;
- virtual const char* getDescIcon() const;
+ virtual HANDLE getDescIcon() const;
virtual int getType() const;
virtual int getPosition() const;
diff --git a/src/mir_app/src/findadd.cpp b/src/mir_app/src/findadd.cpp index fdd69d0ef4..aca9b86624 100644 --- a/src/mir_app/src/findadd.cpp +++ b/src/mir_app/src/findadd.cpp @@ -390,7 +390,7 @@ static INT_PTR CALLBACK DlgProcFindAdd(HWND hwndDlg, UINT msg, WPARAM wParam, LP GetTextExtentPoint32(hdc, cbei.pszText, (int)mir_wstrlen(cbei.pszText), &textSize); if (textSize.cx > cbwidth) cbwidth = textSize.cx; - cbei.iImage = cbei.iSelectedImage = ImageList_AddIcon_IconLibLoaded(dat->himlComboIcons, SKINICON_OTHER_SEARCHALL); + cbei.iImage = cbei.iSelectedImage = ImageList_AddSkinIcon(dat->himlComboIcons, SKINICON_OTHER_SEARCHALL); cbei.lParam = 0; SendDlgItemMessage(hwndDlg, IDC_PROTOLIST, CBEM_INSERTITEM, 0, (LPARAM)&cbei); cbei.iItem++; diff --git a/src/mir_app/src/headerbar.cpp b/src/mir_app/src/headerbar.cpp index 1257f67144..d317b789ed 100644 --- a/src/mir_app/src/headerbar.cpp +++ b/src/mir_app/src/headerbar.cpp @@ -24,9 +24,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "stdafx.h"
-#include "m_iconheader.h"
-
-extern HINSTANCE hInst;
static BOOL IsAeroMode()
{
@@ -42,8 +39,6 @@ static BOOL IsVSMode() ////////////////////////////////////////////////////////////////////////////////////
// Internals
-static LRESULT CALLBACK MHeaderbarWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
-
// structure is used for storing list of tab info
struct MHeaderbarCtrl : public MZeroedObject
{
@@ -68,19 +63,6 @@ struct MHeaderbarCtrl : public MZeroedObject HFONT hFont;
};
-int LoadHeaderbarModule()
-{
- WNDCLASSEX wc = { 0 };
- wc.cbSize = sizeof(wc);
- wc.lpszClassName = L"MHeaderbarCtrl";
- wc.lpfnWndProc = MHeaderbarWndProc;
- wc.hCursor = LoadCursor(nullptr, IDC_ARROW);
- wc.cbWndExtra = sizeof(MHeaderbarCtrl*);
- wc.style = CS_GLOBALCLASS|CS_SAVEBITS;
- RegisterClassEx(&wc);
- return 0;
-}
-
static void MHeaderbar_SetupColors(MHeaderbarCtrl *dat)
{
COLORREF cl = GetSysColor(COLOR_WINDOW);
@@ -342,3 +324,16 @@ static LRESULT CALLBACK MHeaderbarWndProc(HWND hwndDlg, UINT msg, WPARAM wParam }
return DefWindowProc(hwndDlg, msg, wParam, lParam);
}
+
+int LoadHeaderbarModule()
+{
+ WNDCLASSEX wc = { 0 };
+ wc.cbSize = sizeof(wc);
+ wc.lpszClassName = L"MHeaderbarCtrl";
+ wc.lpfnWndProc = MHeaderbarWndProc;
+ wc.hCursor = LoadCursor(nullptr, IDC_ARROW);
+ wc.cbWndExtra = sizeof(MHeaderbarCtrl*);
+ wc.style = CS_GLOBALCLASS | CS_SAVEBITS;
+ RegisterClassEx(&wc);
+ return 0;
+}
diff --git a/src/mir_app/src/hotkey_opts.cpp b/src/mir_app/src/hotkey_opts.cpp index ac1e2b23c4..58d07e1e5c 100644 --- a/src/mir_app/src/hotkey_opts.cpp +++ b/src/mir_app/src/hotkey_opts.cpp @@ -472,14 +472,14 @@ static INT_PTR CALLBACK sttOptionsDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, Hotkey_Subclass(GetDlgItem(hwndDlg, IDC_HOTKEY)); { HIMAGELIST hIml = ImageList_Create(16, 16, ILC_MASK | ILC_COLOR32, 3, 1); - ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_OTHER_WINDOWS); - ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_OTHER_MIRANDA); - ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_OTHER_WINDOW); - ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_OTHER_ADDCONTACT); - ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_OTHER_DELETE); - ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_OTHER_UNDO); - ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_OTHER_GROUPOPEN); - ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_OTHER_GROUPSHUT); + ImageList_AddSkinIcon(hIml, SKINICON_OTHER_WINDOWS); + ImageList_AddSkinIcon(hIml, SKINICON_OTHER_MIRANDA); + ImageList_AddSkinIcon(hIml, SKINICON_OTHER_WINDOW); + ImageList_AddSkinIcon(hIml, SKINICON_OTHER_ADDCONTACT); + ImageList_AddSkinIcon(hIml, SKINICON_OTHER_DELETE); + ImageList_AddSkinIcon(hIml, SKINICON_OTHER_UNDO); + ImageList_AddSkinIcon(hIml, SKINICON_OTHER_GROUPOPEN); + ImageList_AddSkinIcon(hIml, SKINICON_OTHER_GROUPSHUT); ListView_SetImageList(hwndHotkey, hIml, LVSIL_SMALL); } ListView_SetExtendedListViewStyle(hwndHotkey, LVS_EX_CHECKBOXES | LVS_EX_SUBITEMIMAGES | LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER | LVS_EX_INFOTIP); diff --git a/src/mir_app/src/icolib.cpp b/src/mir_app/src/icolib.cpp index e8605688c4..6069202925 100644 --- a/src/mir_app/src/icolib.cpp +++ b/src/mir_app/src/icolib.cpp @@ -522,6 +522,9 @@ MIR_APP_DLL(HANDLE) IcoLib_AddIcon(const SKINICONDESC *sid, HPLUGIN pPlugin) if (item->section)
item->section->flags = sid->flags & SIDF_SORTED;
+ if (pPlugin && item->default_indx)
+ ((CMPluginBase*)pPlugin)->addIcolib(item);
+
return item;
}
diff --git a/src/mir_app/src/iconheader.cpp b/src/mir_app/src/iconheader.cpp deleted file mode 100644 index 4ded67b2d9..0000000000 --- a/src/mir_app/src/iconheader.cpp +++ /dev/null @@ -1,525 +0,0 @@ -/*
-
-Miranda NG: the free IM client for Microsoft* Windows*
-
-Copyright (C) 2012-19 Miranda NG team (https://miranda-ng.org),
-Copyright (c) 2000-12 Miranda IM project,
-Copyright (c) 2007 Artem Shpynov
-all portions of this codebase are copyrighted to the people
-listed in contributors.txt.
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "stdafx.h"
-#include "m_iconheader.h"
-
-extern HINSTANCE hInst;
-
-static BOOL IsAeroMode()
-{
- BOOL result;
- return dwmIsCompositionEnabled && (dwmIsCompositionEnabled(&result) == S_OK) && result;
-}
-
-static BOOL IsVSMode()
-{
- return IsWinVerVistaPlus() && IsThemeActive();
-}
-
-////////////////////////////////////////////////////////////////////////////////////
-// Internals
-
-#define ITC_BORDER_SIZE 3
-
-// structure is used for storing list of tab info
-struct MIcoTabCtrl : public MZeroedObject
-{
- MIcoTabCtrl() : pList(1) {}
-
- HWND hwnd;
- int nSelectedIdx, nHotIdx;
- LIST<MIcoTab> pList;
-
- // UI info
- BOOL bMouseInside;
- RECT rc;
- int width, height;
- int itemWidth, itemHeight;
-
- //background bitmap
- HBITMAP hBkgBmp;
- HBITMAP hBkgOldBmp;
- HDC hBkgDC;
- SIZE BkgSize;
-
- // control colors
- RGBQUAD rgbBkgTop, rgbBkgBottom;
- RGBQUAD rgbSelTop, rgbSelBottom;
- RGBQUAD rgbHotTop, rgbHotBottom;
- COLORREF clText;
- COLORREF clSelText, clSelBorder;
- COLORREF clHotText, clHotBorder;
-
- // fonts
- HFONT hFont;
-};
-
-typedef void (*ItemDestuctor)(void*);
-
-static void MITListDestructor(void * adr)
-{
- MIcoTab *mit = (MIcoTab *)adr;
- mir_free(mit->tcsName);
- if (mit->hIcon && !(mit->flag&MITCF_SHAREDICON))
- DestroyIcon(mit->hIcon);
- mir_free(adr);
-}
-
-void li_ListDestruct(LIST<MIcoTab> &pList, ItemDestuctor pItemDestructor)
-{
- for (auto &p : pList)
- pItemDestructor(p);
- pList.destroy();
-}
-
-static void MIcoTab_SetupColors(MIcoTabCtrl *dat)
-{
- COLORREF cl = GetSysColor(COLOR_WINDOW);
- dat->rgbBkgBottom.rgbRed = (dat->rgbBkgTop.rgbRed = GetRValue(cl)) * .95;
- dat->rgbBkgBottom.rgbGreen = (dat->rgbBkgTop.rgbGreen = GetGValue(cl)) * .95;
- dat->rgbBkgBottom.rgbBlue = (dat->rgbBkgTop.rgbBlue = GetBValue(cl)) * .95;
-
- cl = GetSysColor(COLOR_HIGHLIGHT);
- dat->rgbSelTop.rgbRed = (dat->rgbSelBottom.rgbRed = GetRValue(cl)) * .75;
- dat->rgbSelTop.rgbGreen = (dat->rgbSelBottom.rgbGreen = GetGValue(cl)) * .75;
- dat->rgbSelTop.rgbBlue = (dat->rgbSelBottom.rgbBlue = GetBValue(cl)) * .75;
-
- dat->rgbHotTop.rgbRed = (dat->rgbSelTop.rgbRed + 255) / 2;
- dat->rgbHotTop.rgbGreen = (dat->rgbSelTop.rgbGreen + 255) / 2;
- dat->rgbHotTop.rgbBlue = (dat->rgbSelTop.rgbBlue + 255) / 2;
-
- dat->rgbHotBottom.rgbRed = (dat->rgbSelBottom.rgbRed + 255) / 2;
- dat->rgbHotBottom.rgbGreen = (dat->rgbSelBottom.rgbGreen + 255) / 2;
- dat->rgbHotBottom.rgbBlue = (dat->rgbSelBottom.rgbBlue + 255) / 2;
-
- dat->clText = GetSysColor(COLOR_WINDOWTEXT);
- dat->clSelText = GetSysColor(COLOR_HIGHLIGHTTEXT);
- dat->clSelBorder = RGB(dat->rgbSelTop.rgbRed, dat->rgbSelTop.rgbGreen, dat->rgbSelTop.rgbBlue);
- dat->clHotBorder = RGB(dat->rgbHotTop.rgbRed, dat->rgbHotTop.rgbGreen, dat->rgbHotTop.rgbBlue);
-
- if (!dat->hFont)
- dat->hFont = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
-}
-
-static void MIcoTab_FillRect(HDC hdc, int x, int y, int width, int height, COLORREF cl)
-{
- int oldMode = SetBkMode(hdc, OPAQUE);
- COLORREF oldColor = SetBkColor(hdc, cl);
-
- RECT rc; SetRect(&rc, x, y, x + width, y + height);
- ExtTextOutA(hdc, 0, 0, ETO_OPAQUE, &rc, "", 0, nullptr);
-
- SetBkMode(hdc, oldMode);
- SetBkColor(hdc, oldColor);
-}
-
-static void MIcoTab_DrawGradient(HDC hdc, int x, int y, int width, int height, RGBQUAD *rgb0, RGBQUAD *rgb1)
-{
- int oldMode = SetBkMode(hdc, OPAQUE);
- COLORREF oldColor = SetBkColor(hdc, 0);
-
- RECT rc;
- SetRect(&rc, x, 0, x + width, 0);
-
- for (int i = y + height; --i >= y;) {
- COLORREF color = RGB(
- ((height - i - 1)*rgb0->rgbRed + i*rgb1->rgbRed) / height,
- ((height - i - 1)*rgb0->rgbGreen + i*rgb1->rgbGreen) / height,
- ((height - i - 1)*rgb0->rgbBlue + i*rgb1->rgbBlue) / height);
- rc.top = rc.bottom = i;
- ++rc.bottom;
- SetBkColor(hdc, color);
- ExtTextOutA(hdc, 0, 0, ETO_OPAQUE, &rc, "", 0, nullptr);
- }
-
- SetBkMode(hdc, oldMode);
- SetBkColor(hdc, oldColor);
-}
-
-static void MIcoTab_DrawItem(HWND hwnd, HDC hdc, MIcoTabCtrl *dat, MIcoTab *tab, int i)
-{
- int iTopSpace = IsAeroMode() ? 0 : ITC_BORDER_SIZE;
- int itemX = ITC_BORDER_SIZE + dat->itemWidth * i;
- int iconTop = iTopSpace + 5;
- int textTop = iconTop + 32 + 3;
-
- HFONT hFntSave = nullptr;
-
- if (dat->nSelectedIdx == i) {
- LOGFONT lf;
- GetObject(GetCurrentObject(hdc, OBJ_FONT), sizeof(lf), &lf);
- lf.lfWeight = FW_BOLD;
- hFntSave = (HFONT)SelectObject(hdc, CreateFontIndirect(&lf));
-
- if (IsVSMode()) {
- RECT rc;
- rc.left = itemX;
- rc.top = iTopSpace;
- rc.right = itemX + dat->itemWidth;
- rc.bottom = iTopSpace + dat->itemHeight;
- HANDLE hTheme = OpenThemeData(hwnd, L"ListView");
- if (dat->nHotIdx == i || GetFocus() == hwnd)
- DrawThemeBackground(hTheme, hdc, LVP_LISTITEM, LISS_HOTSELECTED, &rc, nullptr);
- else
- DrawThemeBackground(hTheme, hdc, LVP_LISTITEM, LISS_SELECTED, &rc, nullptr);
-
- CloseThemeData(hTheme);
- }
- else {
- MIcoTab_FillRect(hdc, itemX, ITC_BORDER_SIZE, dat->itemWidth, dat->itemHeight, dat->clSelBorder);
- MIcoTab_DrawGradient(hdc, itemX + 1, ITC_BORDER_SIZE + 1, dat->itemWidth - 2, dat->itemHeight - 2, &dat->rgbSelTop, &dat->rgbSelBottom);
- }
- SetTextColor(hdc, dat->clSelText);
- }
- else if (dat->nHotIdx == i) {
- if (IsVSMode()) {
- RECT rc;
- rc.left = itemX;
- rc.top = iTopSpace;
- rc.right = itemX + dat->itemWidth;
- rc.bottom = iTopSpace + dat->itemHeight;
- SetWindowTheme(hwnd, L"explorer", nullptr);
- HANDLE hTheme = OpenThemeData(hwnd, L"ListView");
- DrawThemeBackground(hTheme, hdc, LVP_LISTITEM, LISS_HOT, &rc, nullptr);
- CloseThemeData(hTheme);
- }
- else {
- MIcoTab_FillRect(hdc, itemX, ITC_BORDER_SIZE, dat->itemWidth, dat->itemHeight, dat->clHotBorder);
- MIcoTab_DrawGradient(hdc, itemX + 1, ITC_BORDER_SIZE + 1, dat->itemWidth - 2, dat->itemHeight - 2, &dat->rgbHotTop, &dat->rgbHotBottom);
- }
- SetTextColor(hdc, dat->clHotText);
- }
- else SetTextColor(hdc, dat->clText);
-
- RECT textRect;
- textRect.left = itemX;
- textRect.right = itemX + dat->itemWidth;
- textRect.top = textTop;
- textRect.bottom = iconTop + dat->itemHeight;
- DrawIcon(hdc, itemX + dat->itemWidth / 2 - 16, iconTop, tab->hIcon);
-
- if (IsVSMode()) {
- DTTOPTS dto = { 0 };
- dto.dwSize = sizeof(dto);
- dto.dwFlags = DTT_COMPOSITED | DTT_GLOWSIZE;
- dto.iGlowSize = 10;
- HANDLE hTheme = OpenThemeData(hwnd, L"Window");
- drawThemeTextEx(hTheme, hdc, WP_CAPTION, CS_ACTIVE, tab->tcsName, -1, DT_VCENTER | DT_CENTER | DT_END_ELLIPSIS, &textRect, &dto);
- CloseThemeData(hTheme);
- }
- else DrawText(hdc, tab->tcsName, -1, &textRect, DT_VCENTER | DT_CENTER | DT_END_ELLIPSIS);
-
- if (hFntSave)
- DeleteObject(SelectObject(hdc, hFntSave));
-}
-
-static LRESULT MIcoTab_OnPaint(HWND hwndDlg, MIcoTabCtrl *mit)
-{
- PAINTSTRUCT ps;
-
- HDC hdc = BeginPaint(hwndDlg, &ps);
- HDC tempDC = CreateCompatibleDC(hdc);
-
- BITMAPINFO bmi = { 0 };
- bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- bmi.bmiHeader.biWidth = mit->width;
- bmi.bmiHeader.biHeight = -mit->height; // we need this for DrawThemeTextEx
- bmi.bmiHeader.biPlanes = 1;
- bmi.bmiHeader.biBitCount = 32;
- bmi.bmiHeader.biCompression = BI_RGB;
- HBITMAP hBmp = CreateDIBSection(tempDC, &bmi, DIB_RGB_COLORS, nullptr, nullptr, 0);
-
- HBITMAP hOldBmp = (HBITMAP)SelectObject(tempDC, hBmp);
-
- if (IsAeroMode()) {
- RECT temprc;
- temprc.left = 0;
- temprc.right = mit->width;
- temprc.top = 0;
- temprc.bottom = mit->width;
- FillRect(tempDC, &temprc, (HBRUSH)GetStockObject(BLACK_BRUSH));
- }
- else {
- if (mit->hBkgBmp)
- StretchBlt(tempDC, 0, 0, mit->width, mit->height, mit->hBkgDC, 0, 0, mit->BkgSize.cx, mit->BkgSize.cy, SRCCOPY);
- else {
- if (IsVSMode())
- MIcoTab_FillRect(tempDC, 0, 0, mit->width, mit->height, GetSysColor(COLOR_WINDOW));
- else
- MIcoTab_DrawGradient(tempDC, 0, 0, mit->width, mit->height, &mit->rgbBkgTop, &mit->rgbBkgBottom);
-
- MIcoTab_FillRect(tempDC, 0, mit->height - 2, mit->width, 1, GetSysColor(COLOR_BTNSHADOW));
- MIcoTab_FillRect(tempDC, 0, mit->height - 1, mit->width, 1, GetSysColor(COLOR_BTNHIGHLIGHT));
- }
- }
-
- //Draw Items
- HFONT hFont = mit->hFont;
- HFONT hOldFont = (HFONT)SelectObject(tempDC, hFont);
- SetBkMode(tempDC, TRANSPARENT);
-
- for (int i = 0; i < mit->pList.getCount(); i++)
- MIcoTab_DrawItem(hwndDlg, tempDC, mit, mit->pList[i], i);
-
- //Copy to output
- BitBlt(hdc, mit->rc.left, mit->rc.top, mit->width, mit->height, tempDC, 0, 0, SRCCOPY);
- SelectObject(tempDC, hOldBmp);
- DeleteObject(hBmp);
- SelectObject(tempDC, hOldFont);
- DeleteDC(tempDC);
-
- EndPaint(hwndDlg, &ps);
-
- return TRUE;
-}
-
-static LRESULT CALLBACK MIcoTabWndProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
-{
- MIcoTabCtrl* itc = (MIcoTabCtrl *)GetWindowLongPtr(hwndDlg, 0);
- switch (uMsg) {
- case WM_NCCREATE:
- itc = new MIcoTabCtrl; //(MIcoTabCtrl*)mir_alloc(sizeof(MIcoTabCtrl));
- itc->nSelectedIdx = -1;
- itc->nHotIdx = -1;
- itc->bMouseInside = FALSE;
- SetWindowLongPtr(hwndDlg, 0, (LONG_PTR)itc);
- MIcoTab_SetupColors(itc);
-
- if (IsAeroMode()) {
- RECT rc;
- GetWindowRect(hwndDlg, &rc);
-
- MARGINS margins = { 0, 0, rc.bottom - rc.top, 0 };
- dwmExtendFrameIntoClientArea(GetParent(hwndDlg), &margins);
- }
-
- return TRUE;
-
- case WM_SETFONT:
- itc->hFont = (HFONT)wParam;
- break;
-
- case WM_SIZE:
- GetClientRect(hwndDlg, &itc->rc);
- itc->width = itc->rc.right - itc->rc.left;
- itc->height = itc->rc.bottom - itc->rc.top;
-
- if (itc->pList.getCount()) {
- itc->itemWidth = (itc->width - 2 * ITC_BORDER_SIZE) / itc->pList.getCount();
- itc->itemHeight = itc->height - 2 * ITC_BORDER_SIZE - 2;
- }
- else itc->itemWidth = itc->itemHeight = 0;
- return TRUE;
-
- case WM_THEMECHANGED:
- case WM_STYLECHANGED:
- MIcoTab_SetupColors(itc);
- return TRUE;
-
- case WM_MOUSEMOVE:
- if (!itc->bMouseInside) {
- TRACKMOUSEEVENT tme = { 0 };
- tme.cbSize = sizeof(tme);
- tme.dwFlags = TME_LEAVE;
- tme.hwndTrack = hwndDlg;
- _TrackMouseEvent(&tme);
- itc->bMouseInside = TRUE;
- }
-
- itc->nHotIdx = -1;
- if (itc->itemWidth != 0) {
- int idx = (LOWORD(lParam) - ITC_BORDER_SIZE) / itc->itemWidth;
- if (idx >= itc->pList.getCount())
- itc->nHotIdx = idx;
- }
- RedrawWindow(hwndDlg, nullptr, nullptr, RDW_INVALIDATE);
- return 0;
-
- case WM_MOUSELEAVE:
- itc->bMouseInside = FALSE;
- itc->nHotIdx = -1;
- RedrawWindow(hwndDlg, nullptr, nullptr, RDW_INVALIDATE);
- return 0;
-
- case WM_LBUTTONUP:
- if ((itc->nHotIdx >= 0) && (itc->nHotIdx != itc->nSelectedIdx)) {
- itc->nSelectedIdx = itc->nHotIdx;
- SetWindowText(hwndDlg, itc->pList[itc->nSelectedIdx]->tcsName);
- RedrawWindow(hwndDlg, nullptr, nullptr, RDW_INVALIDATE);
- SendMessage(GetParent(hwndDlg), WM_COMMAND,
- MAKEWPARAM(GetWindowLongPtr(hwndDlg, GWL_ID), ITCN_SELCHANGED),
- itc->nSelectedIdx);
- }
- return 0;
-
- case WM_SETFOCUS:
- case WM_KILLFOCUS:
- RedrawWindow(hwndDlg, nullptr, nullptr, RDW_INVALIDATE);
- break;
-
- case WM_MOUSEACTIVATE:
- SetFocus(hwndDlg);
- return MA_ACTIVATE;
-
- case WM_GETDLGCODE:
- if (lParam) {
- MSG *msg = (MSG *)lParam;
- if (msg->message == WM_KEYDOWN) {
- if (msg->wParam == VK_TAB)
- return 0;
- if (msg->wParam == VK_ESCAPE)
- return 0;
- }
- else if (msg->message == WM_CHAR) {
- if (msg->wParam == '\t')
- return 0;
- if (msg->wParam == 27)
- return 0;
- }
- }
- return DLGC_WANTMESSAGE;
-
- case WM_KEYDOWN:
- {
- int newIdx = itc->nSelectedIdx;
- switch (wParam) {
- case VK_NEXT:
- case VK_RIGHT:
- newIdx++;
- break;
- case VK_PRIOR:
- case VK_LEFT:
- newIdx--;
- break;
- }
- if (newIdx >= 0 && newIdx < itc->pList.getCount() && newIdx != itc->nSelectedIdx) {
- itc->nSelectedIdx = newIdx;
- SetWindowText(hwndDlg, itc->pList[itc->nSelectedIdx]->tcsName);
- RedrawWindow(hwndDlg, nullptr, nullptr, RDW_INVALIDATE);
- SendMessage(GetParent(hwndDlg), WM_COMMAND,
- MAKEWPARAM(GetWindowLongPtr(hwndDlg, GWL_ID), ITCN_SELCHANGEDKBD),
- itc->nSelectedIdx);
- }
- }
- return 0;
-
- case WM_ERASEBKGND:
- return 1;
-
- case WM_NCPAINT:
- InvalidateRect(hwndDlg, nullptr, FALSE);
- break;
-
- case WM_PAINT:
- MIcoTab_OnPaint(hwndDlg, itc);
- break;
-
- case ITCM_SETBACKGROUND:
- itc->hBkgBmp = (HBITMAP)lParam;
- if (!itc->hBkgDC)
- itc->hBkgDC = CreateCompatibleDC(nullptr);
- itc->hBkgOldBmp = (HBITMAP)SelectObject(itc->hBkgDC, itc->hBkgBmp);
- {
- BITMAPINFO bmp;
- GetObject(itc->hBkgBmp, sizeof(bmp), &bmp);
- itc->BkgSize.cx = bmp.bmiHeader.biWidth;
- itc->BkgSize.cy = bmp.bmiHeader.biHeight;
- }
- return TRUE;
-
- case ITCM_ADDITEM:
- {
- MIcoTab* pMit = (MIcoTab *)wParam;
- if (!pMit)
- return FALSE;
-
- MIcoTab* pListMit = (MIcoTab *)mir_calloc(sizeof(MIcoTab));
- pListMit->flag = pMit->flag;
- pListMit->data = pMit->data;
- if (pMit->flag & MITCF_UNICODE)
- pListMit->tcsName = mir_wstrdup(pMit->lpwzName);
- else
- pListMit->tcsName = mir_a2u(pMit->lpzName);
- if (pMit->hIcon) {
- if (pListMit->flag&MITCF_SHAREDICON)
- pListMit->hIcon = pMit->hIcon;
- else
- pListMit->hIcon = CopyIcon(pMit->hIcon);
- }
- itc->pList.insert(pListMit);
-
- itc->itemWidth = (itc->width - 2 * ITC_BORDER_SIZE) / itc->pList.getCount();
- itc->itemHeight = itc->height - 2 * ITC_BORDER_SIZE - 2;
-
- RedrawWindow(hwndDlg, nullptr, nullptr, RDW_INVALIDATE);
- }
- return TRUE;
-
- case ITCM_SETSEL:
- if ((int)wParam >= 0 && (int)wParam < itc->pList.getCount()) {
- itc->nSelectedIdx = wParam;
- SetWindowText(hwndDlg, itc->pList[itc->nSelectedIdx]->tcsName);
- RedrawWindow(hwndDlg, nullptr, nullptr, RDW_INVALIDATE);
- SendMessage(GetParent(hwndDlg), WM_COMMAND,
- MAKEWPARAM(GetWindowLongPtr(hwndDlg, GWL_ID), ITCN_SELCHANGED),
- itc->nSelectedIdx);
- }
- return TRUE;
-
- case ITCM_GETSEL:
- return itc->nSelectedIdx;
-
- case ITCM_GETITEMDATA:
- if ((int)wParam >= 0 && (int)wParam < itc->pList.getCount())
- return ((MIcoTab *)itc->pList[wParam])->data;
- return 0;
-
- case WM_DESTROY:
- if (itc->hBkgDC) {
- SelectObject(itc->hBkgDC, itc->hBkgOldBmp);
- DeleteDC(itc->hBkgDC);
- }
- li_ListDestruct(itc->pList, MITListDestructor);
- delete itc;
- return TRUE;
- }
- return DefWindowProc(hwndDlg, uMsg, wParam, lParam);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-
-int LoadIcoTabsModule()
-{
- WNDCLASSEX wc = {};
- wc.cbSize = sizeof(wc);
- wc.lpszClassName = MIRANDAICOTABCLASS;
- wc.lpfnWndProc = MIcoTabWndProc;
- wc.hCursor = LoadCursor(nullptr, IDC_ARROW);
- wc.cbWndExtra = sizeof(MIcoTabCtrl*);
- wc.style = CS_GLOBALCLASS;
- RegisterClassEx(&wc);
- return 0;
-}
diff --git a/src/mir_app/src/ignore.cpp b/src/mir_app/src/ignore.cpp index 10ee55d64e..82a3772d17 100644 --- a/src/mir_app/src/ignore.cpp +++ b/src/mir_app/src/ignore.cpp @@ -208,14 +208,14 @@ static INT_PTR CALLBACK DlgProcIgnoreOpts(HWND hwndDlg, UINT msg, WPARAM, LPARAM TranslateDialogDefault(hwndDlg);
{
HIMAGELIST hIml = ImageList_Create(g_iIconSX, g_iIconSY, ILC_COLOR32 | ILC_MASK, 3 + IGNOREEVENT_MAX, 3 + IGNOREEVENT_MAX);
- ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_OTHER_SMALLDOT);
- ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_OTHER_FILLEDBLOB);
- ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_OTHER_EMPTYBLOB);
- ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_EVENT_MESSAGE);
- ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_EVENT_FILE);
- ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_OTHER_USERONLINE);
- ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_AUTH_REQUEST);
- ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_OTHER_TYPING);
+ ImageList_AddSkinIcon(hIml, SKINICON_OTHER_SMALLDOT);
+ ImageList_AddSkinIcon(hIml, SKINICON_OTHER_FILLEDBLOB);
+ ImageList_AddSkinIcon(hIml, SKINICON_OTHER_EMPTYBLOB);
+ ImageList_AddSkinIcon(hIml, SKINICON_EVENT_MESSAGE);
+ ImageList_AddSkinIcon(hIml, SKINICON_EVENT_FILE);
+ ImageList_AddSkinIcon(hIml, SKINICON_OTHER_USERONLINE);
+ ImageList_AddSkinIcon(hIml, SKINICON_AUTH_REQUEST);
+ ImageList_AddSkinIcon(hIml, SKINICON_OTHER_TYPING);
SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_SETEXTRAIMAGELIST, 0, (LPARAM)hIml);
for (int i = 0; i < _countof(hIcons); i++)
diff --git a/src/mir_app/src/menu_utils.cpp b/src/mir_app/src/menu_utils.cpp index b2328884d0..56681136af 100644 --- a/src/mir_app/src/menu_utils.cpp +++ b/src/mir_app/src/menu_utils.cpp @@ -1240,7 +1240,7 @@ static int MO_RegisterIcon(TMO_IntMenuItem *pmi, void*) sid.pszName = iconame;
sid.description.w = descr;
sid.hDefaultIcon = hIcon;
- pmi->hIcolibItem = IcoLib_AddIcon(&sid, 0);
+ pmi->hIcolibItem = IcoLib_AddIcon(&sid, pmi->mi.pPlugin);
Safe_DestroyIcon(hIcon);
if (hIcon = IcoLib_GetIcon(iconame)) {
diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def index b99133764f..c04d269389 100644 --- a/src/mir_app/src/mir_app.def +++ b/src/mir_app/src/mir_app.def @@ -14,7 +14,7 @@ IcoLib_GetIconHandle @12 IcoLib_IsManaged @13
IcoLib_ReleaseIcon @14
Window_FreeIcon_IcoLib @15
-Window_SetSkinIcon_IcoLib @16
+Window_SetSkinIcon_IcoLib @16
Window_SetProtoIcon_IcoLib @17
ProtoServiceExists @18
mir_main @19
@@ -22,7 +22,6 @@ IcoLib_RemoveIcon @20 IcoLib_RemoveIconByHandle @21
IcoLib_Release @22
IcoLib_AddRef @23
-Skin_GetIconName @24
??0CProtoIntDlgBase@@QAE@ABV0@@Z @25 NONAME
??0CProtoIntDlgBase@@QAE@PAUPROTO_INTERFACE@@H@Z @26 NONAME
??0PROTO_INTERFACE@@QAE@ABU0@@Z @27 NONAME
@@ -675,3 +674,10 @@ Popup_Add @764 Popup_Change @765
Skin_GetProtoIcon @766
Srmm_SetIconFlags @767
+?addIcolib@CMPluginBase@@QAEXPAX@Z @768 NONAME
+?getIcon@CMPluginBase@@QAEPAUHICON__@@H_N@Z @769 NONAME
+?getIconHandle@CMPluginBase@@QAEPAXH@Z @770 NONAME
+?releaseIcon@CMPluginBase@@QAEXH_N@Z @771 NONAME
+?addImgListIcon@CMPluginBase@@QAEHPAU_IMAGELIST@@H@Z @772 NONAME
+ImageList_AddProtoIcon @773
+ImageList_AddSkinIcon @774
diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def index 9b8928ccae..06c417483d 100644 --- a/src/mir_app/src/mir_app64.def +++ b/src/mir_app/src/mir_app64.def @@ -14,7 +14,7 @@ IcoLib_GetIconHandle @12 IcoLib_IsManaged @13
IcoLib_ReleaseIcon @14
Window_FreeIcon_IcoLib @15
-Window_SetSkinIcon_IcoLib @16
+Window_SetSkinIcon_IcoLib @16
Window_SetProtoIcon_IcoLib @17
ProtoServiceExists @18
mir_main @19
@@ -22,7 +22,6 @@ IcoLib_RemoveIcon @20 IcoLib_RemoveIconByHandle @21
IcoLib_Release @22
IcoLib_AddRef @23
-Skin_GetIconName @24
??0CProtoIntDlgBase@@QEAA@AEBV0@@Z @25 NONAME
??0CProtoIntDlgBase@@QEAA@PEAUPROTO_INTERFACE@@H@Z @26 NONAME
??0PROTO_INTERFACE@@QEAA@AEBU0@@Z @27 NONAME
@@ -675,3 +674,10 @@ Popup_Add @764 Popup_Change @765
Skin_GetProtoIcon @766
Srmm_SetIconFlags @767
+?addIcolib@CMPluginBase@@QEAAXPEAX@Z @768 NONAME
+?getIcon@CMPluginBase@@QEAAPEAUHICON__@@H_N@Z @769 NONAME
+?getIconHandle@CMPluginBase@@QEAAPEAXH@Z @770 NONAME
+?releaseIcon@CMPluginBase@@QEAAXH_N@Z @771 NONAME
+?addImgListIcon@CMPluginBase@@QEAAHPEAU_IMAGELIST@@H@Z @772 NONAME
+ImageList_AddProtoIcon @773
+ImageList_AddSkinIcon @774
diff --git a/src/mir_app/src/miranda.h b/src/mir_app/src/miranda.h index 0a737d81c7..cd25f39443 100644 --- a/src/mir_app/src/miranda.h +++ b/src/mir_app/src/miranda.h @@ -103,10 +103,7 @@ extern int g_iIconX, g_iIconY, g_iIconSX, g_iIconSY; HICON LoadIconEx(HINSTANCE hInstance, LPCTSTR lpIconName, BOOL bShared);
int ImageList_AddIcon_NotShared(HIMAGELIST hIml, LPCTSTR szResource);
-int ImageList_ReplaceIcon_NotShared(HIMAGELIST hIml, int iIndex, HINSTANCE hInstance, LPCTSTR szResource);
-int ImageList_AddIcon_IconLibLoaded(HIMAGELIST hIml, int iconId);
-int ImageList_AddIcon_ProtoIconLibLoaded(HIMAGELIST hIml, const char *szProto, int iconId);
int ImageList_ReplaceIcon_IconLibLoaded(HIMAGELIST hIml, int nIndex, HICON hIcon);
#define Safe_DestroyIcon(hIcon) if (hIcon) DestroyIcon(hIcon)
diff --git a/src/mir_app/src/modules.cpp b/src/mir_app/src/modules.cpp index 1f66b311f5..8bc7678013 100644 --- a/src/mir_app/src/modules.cpp +++ b/src/mir_app/src/modules.cpp @@ -76,7 +76,6 @@ void UnloadSkinHotkeys(void); void UnloadSrmmModule(void);
void UnloadUtilsModule(void);
-int LoadIcoTabsModule();
int LoadHeaderbarModule();
int LoadDescButtonModule();
@@ -87,7 +86,6 @@ int LoadDefaultModules(void) if (LoadLangPackModule()) return 1; // langpack will be a system module in the new order so this is moved here
if (CheckRestart()) return 1;
if (LoadUtilsModule()) return 1;
- if (LoadIcoTabsModule()) return 1;
if (LoadHeaderbarModule()) return 1;
if (LoadDbintfModule()) return 1;
diff --git a/src/mir_app/src/newplugins.cpp b/src/mir_app/src/newplugins.cpp index 4164f19ecc..72014fb9b7 100644 --- a/src/mir_app/src/newplugins.cpp +++ b/src/mir_app/src/newplugins.cpp @@ -528,11 +528,11 @@ static bool loadClistModule(wchar_t *exe, pluginEntry *p) // now all core skin icons are loaded via icon lib. so lets release them
for (auto &it : g_statuses)
- ImageList_AddIcon_IconLibLoaded(hCListImages, it.iSkinIcon);
+ ImageList_AddSkinIcon(hCListImages, it.iSkinIcon);
// see IMAGE_GROUP... in clist.h if you add more images above here
- ImageList_AddIcon_IconLibLoaded(hCListImages, SKINICON_OTHER_GROUPOPEN);
- ImageList_AddIcon_IconLibLoaded(hCListImages, SKINICON_OTHER_GROUPSHUT);
+ ImageList_AddSkinIcon(hCListImages, SKINICON_OTHER_GROUPOPEN);
+ ImageList_AddSkinIcon(hCListImages, SKINICON_OTHER_GROUPSHUT);
if (p->load() == 0) {
p->bLoaded = true;
diff --git a/src/mir_app/src/pluginopts.cpp b/src/mir_app/src/pluginopts.cpp index d7248a08b4..226fe9a9b2 100644 --- a/src/mir_app/src/pluginopts.cpp +++ b/src/mir_app/src/pluginopts.cpp @@ -290,8 +290,8 @@ public: bool OnInitDialog() override
{
HIMAGELIST hIml = ImageList_Create(16, 16, ILC_MASK | ILC_COLOR32, 4, 0);
- ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_OTHER_UNICODE);
- ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_OTHER_ANSI);
+ ImageList_AddSkinIcon(hIml, SKINICON_OTHER_UNICODE);
+ ImageList_AddSkinIcon(hIml, SKINICON_OTHER_ANSI);
m_plugList.SetImageList(hIml, LVSIL_SMALL);
LVCOLUMN col;
diff --git a/src/mir_app/src/skinicons.cpp b/src/mir_app/src/skinicons.cpp index 8daff88fa2..5c5c4b5a2b 100644 --- a/src/mir_app/src/skinicons.cpp +++ b/src/mir_app/src/skinicons.cpp @@ -159,7 +159,7 @@ int ImageList_AddIcon_NotShared(HIMAGELIST hIml, LPCTSTR szResource) return res;
}
-int ImageList_AddIcon_IconLibLoaded(HIMAGELIST hIml, int iconId)
+MIR_APP_DLL(int) ImageList_AddSkinIcon(HIMAGELIST hIml, int iconId)
{
HICON hIcon = Skin_LoadIcon(iconId);
int res = ImageList_AddIcon(hIml, hIcon);
@@ -167,7 +167,7 @@ int ImageList_AddIcon_IconLibLoaded(HIMAGELIST hIml, int iconId) return res;
}
-int ImageList_AddIcon_ProtoIconLibLoaded(HIMAGELIST hIml, const char *szProto, int iconId)
+MIR_APP_DLL(int) ImageList_AddProtoIcon(HIMAGELIST hIml, const char *szProto, int iconId)
{
HICON hIcon = Skin_LoadProtoIcon(szProto, iconId);
int res = ImageList_AddIcon(hIml, hIcon);
@@ -175,14 +175,6 @@ int ImageList_AddIcon_ProtoIconLibLoaded(HIMAGELIST hIml, const char *szProto, i return res;
}
-int ImageList_ReplaceIcon_NotShared(HIMAGELIST hIml, int iIndex, HINSTANCE hInstance, LPCTSTR szResource)
-{
- HICON hTempIcon = LoadIconEx(hInstance, szResource, 0);
- int res = ImageList_ReplaceIcon(hIml, iIndex, hTempIcon);
- Safe_DestroyIcon(hTempIcon);
- return res;
-}
-
int ImageList_ReplaceIcon_IconLibLoaded(HIMAGELIST hIml, int nIndex, HICON hIcon)
{
int res = ImageList_ReplaceIcon(hIml, nIndex, hIcon);
@@ -357,19 +349,6 @@ MIR_APP_DLL(HANDLE) Skin_GetIconHandle(int idx) return nullptr;
}
-MIR_APP_DLL(char*) Skin_GetIconName(int idx)
-{
- static char szIconName[100];
-
- for (int i = 0; i < _countof(mainIcons); i++) {
- if (idx == mainIcons[i].id) {
- mir_snprintf(szIconName, "%s%d", mainIconsFmt, i);
- return szIconName;
- }
- }
- return nullptr;
-}
-
MIR_APP_DLL(HICON) Skin_LoadIcon(int idx, bool big)
{
// Query for global status icons
diff --git a/src/mir_app/src/visibility.cpp b/src/mir_app/src/visibility.cpp index e4bc479b61..f3a36df1de 100644 --- a/src/mir_app/src/visibility.cpp +++ b/src/mir_app/src/visibility.cpp @@ -139,9 +139,9 @@ static INT_PTR CALLBACK DlgProcVisibilityOpts(HWND hwndDlg, UINT msg, WPARAM, LP TranslateDialogDefault(hwndDlg);
hIml = ImageList_Create(g_iIconSX, g_iIconSY, ILC_COLOR32 | ILC_MASK, 3, 3);
- ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_OTHER_SMALLDOT);
- ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_OTHER_VISIBLE_ALL);
- ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_OTHER_INVISIBLE_ALL);
+ ImageList_AddSkinIcon(hIml, SKINICON_OTHER_SMALLDOT);
+ ImageList_AddSkinIcon(hIml, SKINICON_OTHER_VISIBLE_ALL);
+ ImageList_AddSkinIcon(hIml, SKINICON_OTHER_INVISIBLE_ALL);
SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_SETEXTRAIMAGELIST, 0, (LPARAM)hIml);
hVisibleIcon = ImageList_GetIcon(hIml, 1, ILD_NORMAL);
SendDlgItemMessage(hwndDlg, IDC_VISIBLEICON, STM_SETICON, (WPARAM)hVisibleIcon, 0);
|