// === IMPORTS ===
extern tWindow *gpWM_RootWindow;
+extern tWindow *gpWM_FocusedWindow;
// === GLOBALS ===
//! Window in which the mouse button was originally pressed
struct sWndMsg_MouseMove msg;
win = WM_int_GetWindowAtPos(OldX, OldY);
- msg.X = NewX - win->X;
- msg.Y = NewY - win->Y;
+ msg.X = NewX - win->X - win->BorderL;
+ msg.Y = NewY - win->Y - win->BorderT;
msg.dX = NewX - OldX;
msg.dY = NewY - OldY;
WM_SendMessage(NULL, win, WNDMSG_MOUSEMOVE, sizeof(msg), &msg);
// TODO: Send mouseup to match mousedown if the cursor moves out of a window?
win = newWin;
- msg.X = NewX - win->X;
- msg.Y = NewY - win->Y;
+ msg.X = NewX - win->X - win->BorderL;
+ msg.Y = NewY - win->Y - win->BorderT;
msg.dX = NewX - OldX;
msg.dY = NewY - OldY;
WM_SendMessage(NULL, win, WNDMSG_MOUSEMOVE, sizeof(msg), &msg);
{
struct sWndMsg_MouseButton msg;
- msg.X = X - Win->X;
- msg.Y = Y - Win->Y;
+ msg.X = X - Win->X - Win->BorderL;
+ msg.Y = Y - Win->Y - Win->BorderT;
msg.Button = Index;
msg.bPressed = !!Pressed;
// Handle press of primary button to change focus
if( ButtonIndex == 0 && Pressed == 1 )
{
- _SysDebug("Gave focus to %p", win);
+// _SysDebug("Gave focus to %p", win);
WM_FocusWindow(win);
WM_RaiseWindow(win);
}
WM_Input_int_SendBtnMsg(win, X, Y, ButtonIndex, Pressed);
}
+void WM_Input_KeyDown(uint32_t Character, uint32_t Scancode)
+{
+ struct sWndMsg_KeyAction msg;
+ msg.KeySym = Scancode;
+ msg.UCS32 = Character;
+ WM_SendMessage(NULL, gpWM_FocusedWindow, WNDMSG_KEYDOWN, sizeof(msg), &msg);
+}
+
+void WM_Input_KeyFire(uint32_t Character, uint32_t Scancode)
+{
+ struct sWndMsg_KeyAction msg;
+ msg.KeySym = Scancode;
+ msg.UCS32 = Character;
+ WM_SendMessage(NULL, gpWM_FocusedWindow, WNDMSG_KEYFIRE, sizeof(msg), &msg);
+}
+
+void WM_Input_KeyUp(uint32_t Character, uint32_t Scancode)
+{
+ struct sWndMsg_KeyAction msg;
+ msg.KeySym = Scancode;
+ msg.UCS32 = Character;
+ WM_SendMessage(NULL, gpWM_FocusedWindow, WNDMSG_KEYUP, sizeof(msg), &msg);
+}
+