summaryrefslogtreecommitdiff
path: root/src/mir_core
diff options
context:
space:
mode:
Diffstat (limited to 'src/mir_core')
-rw-r--r--src/mir_core/mir_core.def3
-rw-r--r--src/mir_core/subclass.cpp11
2 files changed, 13 insertions, 1 deletions
diff --git a/src/mir_core/mir_core.def b/src/mir_core/mir_core.def
index 3c1174c74b..a5978b9ddb 100644
--- a/src/mir_core/mir_core.def
+++ b/src/mir_core/mir_core.def
@@ -137,4 +137,5 @@ db_find_next @134
Icon_Register @135
Icon_RegisterT @136
mir_subclassWindow @137
-KillModuleSubclassing @138
+mir_callNextSubclass @138
+KillModuleSubclassing @139
diff --git a/src/mir_core/subclass.cpp b/src/mir_core/subclass.cpp
index 50cc8e3920..a526aeb9bf 100644
--- a/src/mir_core/subclass.cpp
+++ b/src/mir_core/subclass.cpp
@@ -69,6 +69,17 @@ MIR_CORE_DLL(void) mir_subclassWindow(HWND hWnd, WNDPROC wndProc)
p->m_hooks[p->m_iHooks++] = wndProc;
}
+MIR_CORE_DLL(LRESULT) mir_callNextSubclass(HWND hWnd, WNDPROC wndProc, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ MSubclassData *p = arSubclass.find((MSubclassData*)&hWnd);
+ if (p)
+ for (int i=0; i < p->m_iHooks-1; i++)
+ if (p->m_hooks[i] == wndProc)
+ return p->m_hooks[i+1](hWnd, uMsg, wParam, lParam);
+
+ return DefWindowProc(hWnd, uMsg, wParam, lParam);
+}
+
MIR_CORE_DLL(void) KillModuleSubclassing(HMODULE hInst)
{
for (int i=0; i < arSubclass.getCount(); i++) {