X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Faxwin3_src%2FWM%2Fwm.c;h=cc7e86ea96d20e22f924ff268ced3033e1c1dc82;hb=98bd9c0c8985c50c42231c116a4e18fedd47761e;hp=e20070003a4d21e4768809138231875760436afb;hpb=6f00be304598cbaac2ed145f4d2079574717e984;p=tpg%2Facess2.git diff --git a/Usermode/Applications/axwin3_src/WM/wm.c b/Usermode/Applications/axwin3_src/WM/wm.c index e2007000..cc7e86ea 100644 --- a/Usermode/Applications/axwin3_src/WM/wm.c +++ b/Usermode/Applications/axwin3_src/WM/wm.c @@ -13,6 +13,7 @@ #include #include #include +#include // === IMPORTS === extern int Renderer_Menu_Init(void); @@ -24,6 +25,7 @@ extern int Renderer_RichText_Init(void); extern void IPC_SendWMMessage(tIPC_Client *Client, uint32_t Src, uint32_t Dst, int Msg, int Len, const void *Data); extern void IPC_SendReply(tIPC_Client *Client, uint32_t WinID, int MsgID, size_t Len, const void *Data); extern tWindow *IPC_int_GetWindow(tIPC_Client *Client, uint32_t ID); +extern void IPC_int_SetWindow(tIPC_Client *Client, uint32_t ID, tWindow *Window); // === GLOBALS === tWMRenderer *gpWM_Renderers; @@ -145,7 +147,8 @@ void WM_DestroyWindow(tWindow *Window) Window->Parent->LastChild = prev; } // - Full invalidate - WM_Invalidate(Window, 1); + WM_Invalidate(Window, 0); + Window->Parent->Flags &= ~WINFLAG_CLEAN; // Mark parent as unclean, forcing redraw // - Remove from inheritance tree? @@ -176,6 +179,7 @@ void WM_DestroyWindow(tWindow *Window) free(Window->Title); free(Window->RenderBuffer); free(Window); + IPC_int_SetWindow(Window->Client, Window->ID, NULL); } tWindow *WM_GetWindowByID(tWindow *Requester, uint32_t ID) @@ -598,6 +602,7 @@ void WM_int_BlitWindow(tWindow *Window, int bForceReblit) bForceReblit = 1; } + // Draw cursor if( Window == gpWM_FocusedWindow && Window->CursorW ) { Video_FillRect(