From 12c0a01bc1826949fa9e146b668a400cab679a63 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Wed, 16 May 2018 12:57:09 +0300 Subject: merge with master till IRC fixes #1342 (broken search in channel browser); --- plugins/CrashDumper/src/dumper.cpp | 68 +++++++++++++++++--------------------- plugins/CrashDumper/src/version.h | 2 +- plugins/Popup/src/config.cpp | 2 -- plugins/Popup/src/config.h | 1 - plugins/Popup/src/main.cpp | 4 --- plugins/Popup/src/popup_thread.cpp | 3 +- plugins/Popup/src/services.cpp | 13 ++++---- plugins/Popup/src/version.h | 2 +- plugins/SmileyAdd/src/smileys.cpp | 2 +- protocols/IRCG/src/irc_dlg.h | 6 ++-- protocols/IRCG/src/version.h | 4 +-- protocols/IRCG/src/windows.cpp | 14 ++++---- 12 files changed, 55 insertions(+), 66 deletions(-) diff --git a/plugins/CrashDumper/src/dumper.cpp b/plugins/CrashDumper/src/dumper.cpp index 1eb4113e24..4e2123733a 100644 --- a/plugins/CrashDumper/src/dumper.cpp +++ b/plugins/CrashDumper/src/dumper.cpp @@ -262,62 +262,56 @@ static void GetPluginsString(CMStringW &buffer, unsigned &flags) } } -struct ProtoCount +///////////////////////////////////////////////////////////////////////////////////////// + +struct ProtoCount : public MZeroedObject { - int countse; - int countsd; - bool nloaded; + ProtoCount(char *p) : + szProto(p) + {} + + char *szProto; + int countse; + int countsd; + bool nloaded; + + static int Compare(const ProtoCount *p1, const ProtoCount *p2) + { return mir_strcmp(p1->szProto, p2->szProto); + } }; static void GetProtocolStrings(CMStringW &buffer) { - int accCount; - PROTOACCOUNT **accList; - Proto_EnumAccounts(&accCount, &accList); - int protoCount; PROTOCOLDESCRIPTOR **protoList; Proto_EnumProtocols(&protoCount, &protoList); - int protoCountMy = 0; - char **protoListMy = (char**)alloca((protoCount + accCount) * sizeof(char*)); + OBJLIST arProtos(10, &ProtoCount::Compare); + // add first all declared protocols, both old & new for (int i = 0; i < protoCount; i++) switch (protoList[i]->type) { case PROTOTYPE_PROTOCOL: case PROTOTYPE_PROTOWITHACCS: - protoListMy[protoCountMy++] = protoList[i]->szName; + arProtos.insert(new ProtoCount(protoList[i]->szName)); } - for (int j = 0; j < accCount; j++) { - int i; - for (i = 0; i < protoCountMy; i++) - if (!mir_strcmp(protoListMy[i], accList[j]->szProtoName)) - break; + // try to gather all missing protocols from accounts + for (auto &pa : Accounts()) { + ProtoCount *p = arProtos.find((ProtoCount*)&pa->szProtoName); + if (p == nullptr) + continue; - if (i == protoCountMy) - protoListMy[protoCountMy++] = accList[j]->szProtoName; + p->nloaded = pa->bDynDisabled; + if (pa->IsEnabled()) + ++p->countse; + else + ++p->countsd; } - ProtoCount *protos = (ProtoCount*)alloca(sizeof(ProtoCount) * protoCountMy); - memset(protos, 0, sizeof(ProtoCount) * protoCountMy); - - for (int j = 0; j < accCount; j++) - for (int i = 0; i < protoCountMy; i++) - if (!mir_strcmp(protoListMy[i], accList[j]->szProtoName)) { - protos[i].nloaded = accList[j]->bDynDisabled != 0; - if (accList[j]->IsEnabled()) - ++protos[i].countse; - else - ++protos[i].countsd; - break; - } - - for (int i = 0; i < protoCountMy; i++) { - auto &p = protos[i]; - buffer.AppendFormat(L"%-24s %d - Enabled %d - Disabled %sLoaded\r\n", - (wchar_t*)_A2T(protoListMy[i]), p.countse, p.countsd, p.nloaded ? L"Not " : L""); - } + for (auto &p : arProtos) + if (p->countsd != 0 || p->countse != 0) + buffer.AppendFormat(L"%-24S %d - Enabled %d - Disabled %sLoaded\r\n", p->szProto, p->countse, p->countsd, p->nloaded ? L"Not " : L""); } static void GetWeatherStrings(CMStringW &buffer, unsigned flags) diff --git a/plugins/CrashDumper/src/version.h b/plugins/CrashDumper/src/version.h index af1c0543f6..390610fc81 100644 --- a/plugins/CrashDumper/src/version.h +++ b/plugins/CrashDumper/src/version.h @@ -1,7 +1,7 @@ #define __MAJOR_VERSION 0 #define __MINOR_VERSION 1 #define __RELEASE_NUM 0 -#define __BUILD_NUM 1 +#define __BUILD_NUM 2 #include diff --git a/plugins/Popup/src/config.cpp b/plugins/Popup/src/config.cpp index fc276a1b63..eafca08668 100644 --- a/plugins/Popup/src/config.cpp +++ b/plugins/Popup/src/config.cpp @@ -25,8 +25,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // ===== General Plugin ===== HINSTANCE hInst; -HANDLE hMainThread; -// MNOTIFYLINK *notifyLink; // deprecatet HANDLE hSemaphore; BOOL closing = FALSE; diff --git a/plugins/Popup/src/config.h b/plugins/Popup/src/config.h index 07e9d6d86c..ae2d599e42 100644 --- a/plugins/Popup/src/config.h +++ b/plugins/Popup/src/config.h @@ -126,7 +126,6 @@ void LoadOptions(); //===== General Plugin ===== extern HINSTANCE hInst; -extern HANDLE hMainThread; extern HANDLE hEventNotify; extern HANDLE hSemaphore; extern BOOL closing; diff --git a/plugins/Popup/src/main.cpp b/plugins/Popup/src/main.cpp index 7471eddb29..aaff53315c 100644 --- a/plugins/Popup/src/main.cpp +++ b/plugins/Popup/src/main.cpp @@ -315,8 +315,6 @@ static int OnShutdown(WPARAM, LPARAM) // Called when the plugin is loaded into Miranda MIRAPI int Load(void) { - DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), GetCurrentProcess(), &hMainThread, THREAD_SET_CONTEXT, FALSE, 0); - mir_getLP(&pluginInfoEx); pcli = Clist_GetInterface(); @@ -438,7 +436,5 @@ MIRAPI int Unload(void) UnloadActions(); UnloadTreeData(); - - CloseHandle(hMainThread); return 0; } diff --git a/plugins/Popup/src/popup_thread.cpp b/plugins/Popup/src/popup_thread.cpp index 5caede1cf1..508bece260 100644 --- a/plugins/Popup/src/popup_thread.cpp +++ b/plugins/Popup/src/popup_thread.cpp @@ -229,7 +229,7 @@ static unsigned __stdcall PopupThread(void *) wcl.lpszMenuName = nullptr; wcl.lpszClassName = L"PopupThreadManagerWnd"; wcl.hIconSm = (HICON)LoadImage(hInst, MAKEINTRESOURCE(IDI_POPUP), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_DEFAULTCOLOR); - g_wndClass.cPopupThreadManagerWnd = RegisterClassEx(&wcl); + g_wndClass.cPopupThreadManagerWnd = RegisterClassExW(&wcl); err = GetLastError(); if (!g_wndClass.cPopupThreadManagerWnd) { wchar_t msg[1024]; @@ -247,6 +247,7 @@ static unsigned __stdcall PopupThread(void *) } DestroyWindow(gHwndManager); gHwndManager = nullptr; + UnregisterClassW(wcl.lpszClassName, hInst); return 0; } diff --git a/plugins/Popup/src/services.cpp b/plugins/Popup/src/services.cpp index d545d5ff9e..fab7339724 100644 --- a/plugins/Popup/src/services.cpp +++ b/plugins/Popup/src/services.cpp @@ -330,12 +330,13 @@ struct SafeUnhookEventParam HANDLE hEvent; }; -static void CALLBACK SafeUnhookEventFunc(ULONG_PTR dwParam) +static void CALLBACK SafeUnhookEventFunc(void *param) { - UnhookEvent(((SafeUnhookEventParam *)dwParam)->hEvent); - PostMessage(((SafeUnhookEventParam *)dwParam)->hwndPopup, UM_POPUPUNHOOKCOMPLETE, 0, - (LPARAM)((SafeUnhookEventParam *)dwParam)->hEvent); - delete (SafeUnhookEventParam *)dwParam; + SafeUnhookEventParam *p = (SafeUnhookEventParam*)param; + + UnhookEvent(p->hEvent); + PostMessage(p->hwndPopup, UM_POPUPUNHOOKCOMPLETE, 0, (LPARAM)p->hEvent); + delete p; } INT_PTR Popup_UnhookEventAsync(WPARAM wParam, LPARAM lParam) @@ -343,7 +344,7 @@ INT_PTR Popup_UnhookEventAsync(WPARAM wParam, LPARAM lParam) SafeUnhookEventParam *param = new SafeUnhookEventParam; param->hwndPopup = (HWND)wParam; param->hEvent = (HANDLE)lParam; - QueueUserAPC(SafeUnhookEventFunc, hMainThread, (ULONG_PTR)param); + CallFunctionAsync(SafeUnhookEventFunc, param); return 0; } diff --git a/plugins/Popup/src/version.h b/plugins/Popup/src/version.h index cbbaf99aa8..d8239c112b 100644 --- a/plugins/Popup/src/version.h +++ b/plugins/Popup/src/version.h @@ -1,7 +1,7 @@ #define __MAJOR_VERSION 2 #define __MINOR_VERSION 1 #define __RELEASE_NUM 1 -#define __BUILD_NUM 12 +#define __BUILD_NUM 14 #include diff --git a/plugins/SmileyAdd/src/smileys.cpp b/plugins/SmileyAdd/src/smileys.cpp index 6c19d195f0..570b15469b 100644 --- a/plugins/SmileyAdd/src/smileys.cpp +++ b/plugins/SmileyAdd/src/smileys.cpp @@ -470,7 +470,7 @@ bool SmileyPackType::LoadSmileyFileXEP(CMStringW &tbuf, bool onlyInfo) SmileyType *dat = new SmileyType; dat->SetRegEx(true); dat->SetImList(m_hSmList, _wtoi(pStr)); - dat->m_ToolText = xmlGetText(nRec); + dat->m_ToolText = FilterQuotes(xmlGetText(nRec)); if (node = xmlGetChildByPath(nRec, L"Expression", 0)) dat->m_TriggerText = FilterQuotes(xmlGetText(node)); diff --git a/protocols/IRCG/src/irc_dlg.h b/protocols/IRCG/src/irc_dlg.h index c84cde8aac..0d74f61258 100644 --- a/protocols/IRCG/src/irc_dlg.h +++ b/protocols/IRCG/src/irc_dlg.h @@ -88,7 +88,6 @@ struct CListDlg : public CProtoDlgBase < CIrcProto > CListDlg(CIrcProto* _pro); virtual void OnInitDialog(); - virtual void OnChange(CCtrlBase* ctrl); virtual INT_PTR DlgProc(UINT msg, WPARAM wParam, LPARAM lParam); virtual void OnDestroy(); virtual int Resizer(UTILRESIZECONTROL *urc); @@ -98,9 +97,10 @@ struct CListDlg : public CProtoDlgBase < CIrcProto > UINT_PTR m_timer; CCtrlButton m_Join; - void OnJoin(CCtrlButton*); + void onClick_Join(CCtrlButton*); - void List_OnColumnClick(CCtrlListView::TEventInfo* ev); + void onChange_Filter(CCtrlEdit *ctrl); + void onColumnClick_List(CCtrlListView::TEventInfo* ev); void UpdateList(void); }; diff --git a/protocols/IRCG/src/version.h b/protocols/IRCG/src/version.h index fa3c95b189..03de9ba40d 100644 --- a/protocols/IRCG/src/version.h +++ b/protocols/IRCG/src/version.h @@ -1,7 +1,7 @@ #define __MAJOR_VERSION 0 #define __MINOR_VERSION 95 -#define __RELEASE_NUM 7 -#define __BUILD_NUM 2 +#define __RELEASE_NUM 8 +#define __BUILD_NUM 1 #include diff --git a/protocols/IRCG/src/windows.cpp b/protocols/IRCG/src/windows.cpp index 72831b3a3c..6810e439b8 100644 --- a/protocols/IRCG/src/windows.cpp +++ b/protocols/IRCG/src/windows.cpp @@ -258,8 +258,9 @@ CListDlg::CListDlg(CIrcProto *_pro) m_status(this, IDC_TEXT), m_filter(this, IDC_FILTER_STRING) { - m_list2.OnDoubleClick = m_list.OnDoubleClick = m_Join.OnClick = Callback(this, &CListDlg::OnJoin); - m_list.OnColumnClick = Callback(this, &CListDlg::List_OnColumnClick); + m_list.OnColumnClick = Callback(this, &CListDlg::onColumnClick_List); + m_list2.OnDoubleClick = m_list.OnDoubleClick = m_Join.OnClick = Callback(this, &CListDlg::onClick_Join); + m_filter.OnChange = Callback(this, &CListDlg::onChange_Filter); } void CListDlg::OnInitDialog() @@ -390,10 +391,9 @@ INT_PTR CListDlg::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) return CProtoDlgBase::DlgProc(msg, wParam, lParam); } -void CListDlg::OnChange(CCtrlBase *ctrl) +void CListDlg::onChange_Filter(CCtrlEdit*) { - if (ctrl->GetCtrlId() == IDC_FILTER_STRING) - m_timer = ::SetTimer(m_hwnd, LIST_TIMER, 200, nullptr); + m_timer = ::SetTimer(m_hwnd, LIST_TIMER, 200, nullptr); } void CListDlg::OnDestroy() @@ -454,14 +454,14 @@ int CListDlg::Resizer(UTILRESIZECONTROL *urc) return RD_ANCHORX_RIGHT | RD_ANCHORY_BOTTOM; } -void CListDlg::List_OnColumnClick(CCtrlListView::TEventInfo *ev) +void CListDlg::onColumnClick_List(CCtrlListView::TEventInfo *ev) { ListViewSortParam param = { &m_list, ev->nmlv->iSubItem }; m_list.SortItems(ListViewSort, (LPARAM)¶m); UpdateList(); } -void CListDlg::OnJoin(CCtrlButton*) +void CListDlg::onClick_Join(CCtrlButton*) { wchar_t szTemp[255]; m_filter.GetText(szTemp, _countof(szTemp)); -- cgit v1.2.3