#include <decorator.h>
// === IMPORTS ===
-extern void IPC_SendWMMessage(tIPC_Client *Client, uint32_t Src, uint32_t Dst, int Msg, int Len, void *Data);
+extern void IPC_SendWMMessage(tIPC_Client *Client, uint32_t Src, uint32_t Dst, int Msg, int Len, const void *Data);
// === GLOBALS ===
tWMRenderer *gpWM_Renderers;
WM_FocusWindow(Window->Parent);
}
// Just a little memory saving for large hidden windows
- if(Window->RenderBuffer)
+ if(Window->RenderBuffer) {
free(Window->RenderBuffer);
+ Window->RenderBuffer = NULL;
+ }
WM_Invalidate(Window);
}
Window->Flags |= WINFLAG_NODECORATE;
// Needed because the window size changes
- if(Window->RenderBuffer)
+ if(Window->RenderBuffer) {
free(Window->RenderBuffer);
+ Window->RenderBuffer = NULL;
+ }
WM_Invalidate(Window);
}
Window->W = W; Window->H = H;
- if(Window->RenderBuffer)
+ if(Window->RenderBuffer) {
free(Window->RenderBuffer);
+ Window->RenderBuffer = NULL;
+ }
WM_Invalidate(Window);
{
return 0;
}
-int WM_SendMessage(tWindow *Source, tWindow *Dest, int Message, int Length, void *Data)
+int WM_SendMessage(tWindow *Source, tWindow *Dest, int Message, int Length, const void *Data)
{
if(Dest == NULL) return -2;
if(Length > 0 && Data == NULL) return -1;
+
+ if( Decorator_HandleMessage(Dest, Message, Length, Data) != 1 )
+ {
+ // TODO: Catch errors from ->HandleMessage
+ return 0;
+ }
// ->HandleMessage returns 1 when the message was not handled
if( Dest->Renderer->HandleMessage(Dest, Message, Length, Data) != 1 )