diff --git a/client/Windows/wf_event.c b/client/Windows/wf_event.c index cb2b952a9..29a729f67 100644 --- a/client/Windows/wf_event.c +++ b/client/Windows/wf_event.c @@ -31,6 +31,7 @@ #include "wf_gdi.h" #include "wf_event.h" +#include "freerdp/event.h" static HWND g_focus_hWnd; @@ -576,6 +577,8 @@ BOOL wf_scale_blt(wfContext* wfc, HDC hdc, int x, int y, int w, int h, HDC hdcSr void wf_scale_mouse_event(wfContext* wfc, rdpInput* input, UINT16 flags, UINT16 x, UINT16 y) { int ww, wh, dw, dh; + rdpContext* context; + MouseEventEventArgs eventArgs; if (!wfc->client_width) wfc->client_width = wfc->width; @@ -592,4 +595,10 @@ void wf_scale_mouse_event(wfContext* wfc, rdpInput* input, UINT16 flags, UINT16 input->MouseEvent(input, flags, x + wfc->xCurrentScroll, y + wfc->yCurrentScroll); else input->MouseEvent(input, flags, x * dw / ww + wfc->xCurrentScroll, y * dh / wh + wfc->yCurrentScroll); + + eventArgs.flags = flags; + eventArgs.x = x; + eventArgs.y = y; + context = (rdpContext*) wfc; + PubSub_OnMouseEvent(context->pubSub, context, &eventArgs); } diff --git a/include/freerdp/event.h b/include/freerdp/event.h index 633ea79d5..0100d6988 100644 --- a/include/freerdp/event.h +++ b/include/freerdp/event.h @@ -83,6 +83,12 @@ DEFINE_EVENT_BEGIN(ChannelDisconnected) void* pInterface; DEFINE_EVENT_END(ChannelDisconnected) +DEFINE_EVENT_BEGIN(MouseEvent) + UINT16 flags; + UINT16 x; + UINT16 y; +DEFINE_EVENT_END(MouseEvent) + #ifdef __cplusplus } #endif diff --git a/libfreerdp/core/freerdp.c b/libfreerdp/core/freerdp.c index 2910a0eff..224a1ad83 100644 --- a/libfreerdp/core/freerdp.c +++ b/libfreerdp/core/freerdp.c @@ -368,6 +368,7 @@ static wEventType FreeRDP_Events[] = DEFINE_EVENT_ENTRY(ConnectionResult) DEFINE_EVENT_ENTRY(ChannelConnected) DEFINE_EVENT_ENTRY(ChannelDisconnected) + DEFINE_EVENT_ENTRY(MouseEvent) }; /** Allocator function for a rdp context.