diff options
Diffstat (limited to 'plugins/BasicHistory/src')
-rw-r--r-- | plugins/BasicHistory/src/HistoryWindow.cpp | 11 | ||||
-rw-r--r-- | plugins/BasicHistory/src/HistoryWindow.h | 1 | ||||
-rw-r--r-- | plugins/BasicHistory/src/HotkeyHelper.cpp | 141 | ||||
-rw-r--r-- | plugins/BasicHistory/src/HotkeyHelper.h | 1 |
4 files changed, 66 insertions, 88 deletions
diff --git a/plugins/BasicHistory/src/HistoryWindow.cpp b/plugins/BasicHistory/src/HistoryWindow.cpp index 98ca26771c..8fefc1062b 100644 --- a/plugins/BasicHistory/src/HistoryWindow.cpp +++ b/plugins/BasicHistory/src/HistoryWindow.cpp @@ -40,7 +40,6 @@ void ResetCList(HWND hWnd); HistoryWindow::HistoryWindow(HANDLE _hContact) :
isDestroyed(true),
- OldSplitterProc(0),
splitterY(0),
splitterOrgY(0),
splitterX(0),
@@ -1174,8 +1173,8 @@ void HistoryWindow::Initialise() {
splitterXhWnd = GetDlgItem(hWnd, IDC_SPLITTER);
splitterYhWnd = GetDlgItem(hWnd, IDC_SPLITTERV);
- OldSplitterProc = (WNDPROC)SetWindowLongPtr(splitterXhWnd, GWLP_WNDPROC, (LONG_PTR) SplitterSubclassProc);
- SetWindowLongPtr(splitterYhWnd, GWLP_WNDPROC, (LONG_PTR) SplitterSubclassProc);
+ mir_subclassWindow(splitterXhWnd, SplitterSubclassProc);
+ mir_subclassWindow(splitterYhWnd, SplitterSubclassProc);
editWindow = GetDlgItem(hWnd, IDC_EDIT);
findWindow = GetDlgItem(hWnd, IDC_FIND_TEXT);
@@ -1327,10 +1326,6 @@ void HistoryWindow::Destroy() hIcon = (HICON)SendMessage(hWnd, WM_SETICON, ICON_SMALL, 0);
Skin_ReleaseIcon(hIcon);
-
- UnregisterHotkeyControl(GetDlgItem(hWnd, IDC_SHOWHIDE));
- UnregisterHotkeyControl(GetDlgItem(hWnd, IDC_LIST_CONTACTS));
- UnregisterHotkeyControl(findWindow);
isDestroyed = true;
HistoryWindow::Close(this);
@@ -1749,7 +1744,7 @@ LRESULT CALLBACK HistoryWindow::SplitterSubclassProc(HWND hwnd, UINT msg, WPARAM return 0;
}
}
- return CallWindowProc(dat->OldSplitterProc, hwnd, msg, wParam, lParam);
+ return mir_callNextSubclass(hwnd, HistoryWindow::SplitterSubclassProc, msg, wParam, lParam);
}
void HistoryWindow::EnableWindows(BOOL enable)
diff --git a/plugins/BasicHistory/src/HistoryWindow.h b/plugins/BasicHistory/src/HistoryWindow.h index afc00c787d..66202937b4 100644 --- a/plugins/BasicHistory/src/HistoryWindow.h +++ b/plugins/BasicHistory/src/HistoryWindow.h @@ -59,7 +59,6 @@ private: HICON *eventIcons;
int allIconNumber;
HICON plusIco, minusIco, findNextIco, findPrevIco, configIco, deleteIco;
- WNDPROC OldSplitterProc;
bool isContactList;
LONG listOryginalPos;
bool isLoading;
diff --git a/plugins/BasicHistory/src/HotkeyHelper.cpp b/plugins/BasicHistory/src/HotkeyHelper.cpp index 29f916ea3c..89db08013e 100644 --- a/plugins/BasicHistory/src/HotkeyHelper.cpp +++ b/plugins/BasicHistory/src/HotkeyHelper.cpp @@ -21,91 +21,76 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "resource.h"
#include "Options.h"
-LRESULT CALLBACK HotkeySubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
-
-void RegisterHotkeyControl(HWND control)
-{
- WNDPROC oldProc = (WNDPROC)SetWindowLongPtr(control, GWLP_WNDPROC, (LONG_PTR) HotkeySubclassProc);
- SetWindowLongPtr(control, GWLP_USERDATA, (LONG_PTR) oldProc);
-}
-
-void UnregisterHotkeyControl(HWND control)
-{
- WNDPROC oldProc = (WNDPROC)GetWindowLongPtr(control, GWLP_USERDATA);
- if(oldProc != NULL)
- {
- SetWindowLongPtr(control, GWLP_WNDPROC, (LONG_PTR) oldProc);
- SetWindowLongPtr(control, GWLP_USERDATA, NULL);
- }
-}
-
static bool isPresed = false;
-LRESULT CALLBACK HotkeySubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
+static LRESULT CALLBACK HotkeySubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
- WNDPROC oldProc = (WNDPROC)GetWindowLongPtr(hwnd, GWLP_USERDATA);
-
switch (msg) {
- case WM_NCPAINT:
- if(Options::instance->noFindBorder && GetDlgCtrlID(hwnd) == IDC_FIND_TEXT)
- return 0;
- break;
- case WM_CHAR:
- case WM_SYSCHAR:
- case WM_UNICHAR:
- case WM_DEADCHAR:
- case WM_SYSDEADCHAR:
- if(isPresed)
- return 0;
- break;
- case WM_KEYUP:
- case WM_SYSKEYUP:
- if(isPresed)
+ case WM_NCPAINT:
+ if(Options::instance->noFindBorder && GetDlgCtrlID(hwnd) == IDC_FIND_TEXT)
+ return 0;
+ break;
+ case WM_CHAR:
+ case WM_SYSCHAR:
+ case WM_UNICHAR:
+ case WM_DEADCHAR:
+ case WM_SYSDEADCHAR:
+ if(isPresed)
+ return 0;
+ break;
+ case WM_KEYUP:
+ case WM_SYSKEYUP:
+ if(isPresed)
+ {
+ isPresed = false;
+ return 0;
+ }
+ break;
+ case WM_KEYDOWN:
+ case WM_SYSKEYDOWN:
+ {
+ isPresed = false;
+ HWND hwndParent = GetParent(hwnd);
+ MSGFILTER filter;
+ filter.msg = msg;
+ filter.lParam = lParam;
+ filter.wParam = wParam;
+ filter.nmhdr.hwndFrom = hwnd;
+ filter.nmhdr.code = EN_MSGFILTER;
+ filter.nmhdr.idFrom = GetDlgCtrlID(hwnd);
+ if(SendMessage(hwndParent, WM_NOTIFY, NULL, (LPARAM)&filter))
{
- isPresed = false;
+ isPresed = true;
return 0;
}
- break;
- case WM_KEYDOWN:
- case WM_SYSKEYDOWN:
- {
- isPresed = false;
- HWND hwndParent = GetParent(hwnd);
- MSGFILTER filter;
- filter.msg = msg;
- filter.lParam = lParam;
- filter.wParam = wParam;
- filter.nmhdr.hwndFrom = hwnd;
- filter.nmhdr.code = EN_MSGFILTER;
- filter.nmhdr.idFrom = GetDlgCtrlID(hwnd);
- if(SendMessage(hwndParent, WM_NOTIFY, NULL, (LPARAM)&filter))
- {
- isPresed = true;
- return 0;
- }
- LRESULT res = CallWindowProc(oldProc, hwnd, msg, wParam, lParam);
- filter.nmhdr.code = CLN_MYSELCHANGED;
- SendMessage(hwndParent, WM_NOTIFY, NULL, (LPARAM)&filter);
- return res;
- }
- break;
- case WM_LBUTTONDOWN:
- {
- HWND hwndParent = GetParent(hwnd);
- MSGFILTER filter;
- filter.msg = msg;
- filter.lParam = lParam;
- filter.wParam = wParam;
- filter.nmhdr.hwndFrom = hwnd;
- filter.nmhdr.code = CLN_MYSELCHANGED;
- filter.nmhdr.idFrom = GetDlgCtrlID(hwnd);
+ LRESULT res = mir_callNextSubclass(hwnd, HotkeySubclassProc, msg, wParam, lParam);
+ filter.nmhdr.code = CLN_MYSELCHANGED;
+ SendMessage(hwndParent, WM_NOTIFY, NULL, (LPARAM)&filter);
+ return res;
+ }
+ break;
+ case WM_LBUTTONDOWN:
+ {
+ HWND hwndParent = GetParent(hwnd);
+ MSGFILTER filter;
+ filter.msg = msg;
+ filter.lParam = lParam;
+ filter.wParam = wParam;
+ filter.nmhdr.hwndFrom = hwnd;
+ filter.nmhdr.code = CLN_MYSELCHANGED;
+ filter.nmhdr.idFrom = GetDlgCtrlID(hwnd);
- LRESULT res = CallWindowProc(oldProc, hwnd, msg, wParam, lParam);
- SendMessage(hwndParent, WM_NOTIFY, NULL, (LPARAM)&filter);
- return res;
- }
- break;
+ LRESULT res = mir_callNextSubclass(hwnd, HotkeySubclassProc, msg, wParam, lParam);
+ SendMessage(hwndParent, WM_NOTIFY, NULL, (LPARAM)&filter);
+ return res;
+ }
+ break;
}
- return CallWindowProc(oldProc, hwnd, msg, wParam, lParam);
-}
\ No newline at end of file + return mir_callNextSubclass(hwnd, HotkeySubclassProc, msg, wParam, lParam);
+}
+
+void RegisterHotkeyControl(HWND control)
+{
+ mir_subclassWindow(control, HotkeySubclassProc);
+}
diff --git a/plugins/BasicHistory/src/HotkeyHelper.h b/plugins/BasicHistory/src/HotkeyHelper.h index f31b1c6666..ab2b80b977 100644 --- a/plugins/BasicHistory/src/HotkeyHelper.h +++ b/plugins/BasicHistory/src/HotkeyHelper.h @@ -21,4 +21,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #define CLN_MYSELCHANGED (CLN_FIRST-50)
void RegisterHotkeyControl(HWND control);
-void UnregisterHotkeyControl(HWND control);
|