Usermode/AxWin3 - Working on input code
[tpg/acess2.git] / Usermode / Applications / axwin3_src / WM / wm_input.c
diff --git a/Usermode/Applications/axwin3_src/WM/wm_input.c b/Usermode/Applications/axwin3_src/WM/wm_input.c
new file mode 100644 (file)
index 0000000..c2ebb9e
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Acess2 Window Manager v3
+ * - By John Hodge (thePowersGang)
+ *
+ * wm.c
+ * - Window manager core
+ */
+#include <common.h>
+#include <wm_internals.h>
+
+// === IMPORTS ===
+extern tWindow *gpWM_RootWindow;
+
+// === CODE ===
+tWindow *WM_int_GetWindowAtPos(int X, int Y)
+{
+       tWindow *win, *next_win, *ret;
+       
+       next_win = gpWM_RootWindow;
+
+       while(next_win)
+       {
+               ret = next_win;
+               next_win = NULL;
+               for(win = ret->FirstChild; win; win = win->NextSibling)
+               {
+                       if( !(win->Flags & WINFLAG_SHOW) )      continue ;
+                       if( X < win->X || X >= win->X + win->W )        continue;
+                       if( Y < win->Y || Y >= win->Y + win->H )        continue;
+                       next_win = win; // Overwrite as we want the final rendered window
+               }
+       }
+       
+       return ret;
+}
+
+void WM_Input_MouseMoved(int OldX, int OldY, int NewX, int NewY)
+{
+       // TODO: Mouse motion events
+       // TODO: Send mouseup to match mousedown if the cursor moves out of a window?
+}
+
+void WM_Input_MouseButton(int X, int Y, int ButtonIndex, int Pressed)
+{
+//     tWindow *win = WM_int_GetWindowAtPos(X, Y);
+       
+       // Send Press/Release message
+}
+

UCC git Repository :: git.ucc.asn.au