summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Lantsev <aunsane@gmail.com>2015-09-19 21:17:17 +0000
committerAlexander Lantsev <aunsane@gmail.com>2015-09-19 21:17:17 +0000
commite2cbb427d5225aac2af633dabc0f929d1257fcc8 (patch)
tree186bf050adfcfc12612fd1bbcb9633b9f906f7a6
parentb741839a3b40ef50eaab1b745bdf5a9c0456ec45 (diff)
MirLua: added OnMsgWindowEvent to m_message
git-svn-id: http://svn.miranda-ng.org/main/trunk@15405 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
-rw-r--r--plugins/MirLua/src/m_message.cpp55
-rw-r--r--plugins/MirLua/src/version.h2
2 files changed, 56 insertions, 1 deletions
diff --git a/plugins/MirLua/src/m_message.cpp b/plugins/MirLua/src/m_message.cpp
index 87e8e1a353..e53403d2bc 100644
--- a/plugins/MirLua/src/m_message.cpp
+++ b/plugins/MirLua/src/m_message.cpp
@@ -49,11 +49,66 @@ static int lua_Send(lua_State *L)
return 1;
}
+int MsgWindowEventHookEventObjParam(void *obj, WPARAM wParam, LPARAM lParam, LPARAM param)
+{
+ lua_State *L = (lua_State*)obj;
+
+ int ref = param;
+ lua_rawgeti(L, LUA_REGISTRYINDEX, ref);
+
+ lua_pushnumber(L, wParam);
+
+ MessageWindowEventData *ev = (MessageWindowEventData*)lParam;
+
+ lua_newtable(L);
+ lua_pushliteral(L, "Module");
+ lua_pushstring(L, ptrA(mir_utf8encode(ev->szModule)));
+ lua_settable(L, -3);
+ lua_pushliteral(L, "Type");
+ lua_pushinteger(L, ev->uType);
+ lua_settable(L, -3);
+ lua_pushliteral(L, "hContact");
+ lua_pushinteger(L, ev->hContact);
+ lua_settable(L, -3);
+ lua_pushliteral(L, "Flags");
+ lua_pushinteger(L, ev->uFlags);
+ lua_settable(L, -3);
+
+ if (lua_pcall(L, 2, 1, 0))
+ printf("%s\n", lua_tostring(L, -1));
+
+ int res = (int)lua_tointeger(L, 1);
+
+ return res;
+}
+
+static int lua_OnMsgWindowEvent(lua_State *L)
+{
+ if (!lua_isfunction(L, 1))
+ {
+ lua_pushlightuserdata(L, NULL);
+ return 1;
+ }
+
+ lua_pushvalue(L, 1);
+ int ref = luaL_ref(L, LUA_REGISTRYINDEX);
+
+ HANDLE res = ::HookEventObjParam(ME_MSG_WINDOWEVENT, MsgWindowEventHookEventObjParam, L, ref);
+ lua_pushlightuserdata(L, res);
+
+ CMLua::Hooks.insert(res);
+ CMLua::HookRefs.insert(new HandleRefParam(L, res, ref));
+
+ return 1;
+}
+
static luaL_Reg messageApi[] =
{
{ "Paste", lua_Paste },
{ "Send", lua_Send },
+ { "OnMsgWindowEvent", lua_OnMsgWindowEvent },
+
{ NULL, NULL }
};
diff --git a/plugins/MirLua/src/version.h b/plugins/MirLua/src/version.h
index 0fff245087..5e29a1a083 100644
--- a/plugins/MirLua/src/version.h
+++ b/plugins/MirLua/src/version.h
@@ -1,7 +1,7 @@
#define __MAJOR_VERSION 0
#define __MINOR_VERSION 11
#define __RELEASE_NUM 4
-#define __BUILD_NUM 4
+#define __BUILD_NUM 5
#include <stdver.h>