From 68c6990c527cd335a3d4ff9a4232141eb1ebc4bb Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 9 Oct 2020 12:11:34 +0300 Subject: =?UTF-8?q?fixes=20#2584=20(Jabber:=20=D1=83=D0=BB=D1=83=D1=87?= =?UTF-8?q?=D1=88=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=83=D0=B4=D0=BE=D0=B1=D1=81?= =?UTF-8?q?=D1=82=D0=B2=D0=B0=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=20=D1=81?= =?UTF-8?q?=D0=BE=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B0=D0=BC=D0=B8=20?= =?UTF-8?q?=D1=83=D1=87=D0=B0=D1=81=D1=82=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- protocols/JabberG/res/jabber.rc | 2 +- protocols/JabberG/src/jabber_iqid_muc.cpp | 33 +++++++++++++++++-------------- 2 files changed, 19 insertions(+), 16 deletions(-) (limited to 'protocols/JabberG') diff --git a/protocols/JabberG/res/jabber.rc b/protocols/JabberG/res/jabber.rc index 51f66f62f2..a5733f1ccd 100644 --- a/protocols/JabberG/res/jabber.rc +++ b/protocols/JabberG/res/jabber.rc @@ -391,7 +391,7 @@ EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CONTROLPARENT CAPTION "JID List" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - CONTROL "",IDC_LIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_NOLABELWRAP | LVS_AUTOARRANGE | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,5,5,198,136 + CONTROL "",IDC_LIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_NOLABELWRAP | LVS_AUTOARRANGE | LVS_SORTASCENDING | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,5,5,198,136 EDITTEXT IDC_FILTER,5,147,161,12,ES_AUTOHSCROLL CONTROL "Apply Filter",IDC_BTN_FILTERAPPLY,"MButtonClass",WS_TABSTOP,171,146,16,14 CONTROL "Reset Filter",IDC_BTN_FILTERRESET,"MButtonClass",WS_TABSTOP,187,146,16,14 diff --git a/protocols/JabberG/src/jabber_iqid_muc.cpp b/protocols/JabberG/src/jabber_iqid_muc.cpp index 9f1bcf7d1f..791b271b85 100644 --- a/protocols/JabberG/src/jabber_iqid_muc.cpp +++ b/protocols/JabberG/src/jabber_iqid_muc.cpp @@ -89,18 +89,12 @@ class CJabberMucJidListDlg : public CJabberDlgBase m_list.DeleteAllItems(); } - void FillJidList() + void FillJidList(bool bFilter) { - wchar_t *filter = nullptr; - if (GetWindowLongPtr(GetDlgItem(m_hwnd, IDC_FILTER), GWLP_USERDATA)) { - int filterLength = GetWindowTextLength(GetDlgItem(m_hwnd, IDC_FILTER)) + 1; - filter = (wchar_t *)_alloca(filterLength * sizeof(wchar_t)); - GetDlgItemText(m_hwnd, IDC_FILTER, filter, filterLength); - } - if (!m_info) return; + ptrW filter(bFilter ? edtFilter.GetText() : nullptr); m_list.SendMsg(WM_SETREDRAW, FALSE, 0); FreeList(); @@ -162,6 +156,7 @@ class CJabberMucJidListDlg : public CJabberDlgBase JABBER_MUC_JIDLIST_INFO *m_info; + CCtrlEdit edtFilter; CCtrlButton btnReset, btnApply; CCtrlListView m_list; @@ -171,7 +166,8 @@ public: m_info(pInfo), m_list(this, IDC_LIST), btnApply(this, IDC_BTN_FILTERAPPLY), - btnReset(this, IDC_BTN_FILTERRESET) + btnReset(this, IDC_BTN_FILTERRESET), + edtFilter(this, IDC_FILTER) { m_list.OnClick = Callback(this, &CJabberMucJidListDlg::list_OnClick); @@ -210,6 +206,16 @@ public: return true; } + bool OnApply() override + { + if (GetFocus() == edtFilter.GetHwnd()) { + ptrW wszFilter(edtFilter.GetText()); + FillJidList(mir_wstrlen(wszFilter) != 0); + return false; + } + return true; + } + void OnDestroy() override { Utils_SaveWindowPosition(m_hwnd, 0, m_proto->m_szModuleName, "jidListWnd_"); @@ -268,8 +274,7 @@ public: } SetWindowText(m_hwnd, title); - SetWindowLongPtr(GetDlgItem(m_hwnd, IDC_FILTER), GWLP_USERDATA, 0); - FillJidList(); + FillJidList(false); } void list_OnClick(CCtrlListView::TEventInfo*) @@ -325,14 +330,12 @@ public: void onClick_Apply(CCtrlButton*) { - SetWindowLongPtr(GetDlgItem(m_hwnd, IDC_FILTER), GWLP_USERDATA, 1); - FillJidList(); + FillJidList(true); } void onClick_Reset(CCtrlButton*) { - SetWindowLongPtr(GetDlgItem(m_hwnd, IDC_FILTER), GWLP_USERDATA, 0); - FillJidList(); + FillJidList(false); } }; -- cgit v1.2.3