+void WM_SetWindowTitle(tWindow *Window, const char *Title)
+{
+ if(Window->Title)
+ free(Window->Title);
+ Window->Title = strdup(Title);
+ _SysDebug("Window %p title set to '%s'", Window, Title);
+}
+
+void WM_RaiseWindow(tWindow *Window)
+{
+ tWindow *parent = Window->Parent;
+ if(!Window->Parent) return ;
+
+ // Remove from list
+ if(Window->PrevSibling)
+ Window->PrevSibling->NextSibling = Window->NextSibling;
+ if(Window->NextSibling)
+ Window->NextSibling->PrevSibling = Window->PrevSibling;
+ if(parent->FirstChild == Window)
+ parent->FirstChild = Window->NextSibling;
+ if(parent->LastChild == Window)
+ parent->LastChild = Window->PrevSibling;
+
+ // Append to end
+ if(parent->LastChild)
+ parent->LastChild->NextSibling = Window;
+ else
+ parent->FirstChild = Window;
+ Window->PrevSibling = parent->LastChild;
+ Window->NextSibling = NULL;
+ parent->LastChild = Window;
+}
+
+void WM_FocusWindow(tWindow *Destination)
+{
+ struct sWndMsg_Bool _msg;
+
+ if( gpWM_FocusedWindow == Destination )
+ return ;
+ if( Destination && !(Destination->Flags & WINFLAG_SHOW) )
+ return ;
+
+ _msg.Val = 0;
+ WM_SendMessage(NULL, gpWM_FocusedWindow, WNDMSG_FOCUS, sizeof(_msg), &_msg);
+ _msg.Val = 1;
+ WM_SendMessage(NULL, Destination, WNDMSG_FOCUS, sizeof(_msg), &_msg);
+
+ WM_Invalidate(gpWM_FocusedWindow);
+ WM_Invalidate(Destination);
+ gpWM_FocusedWindow = Destination;
+
+
+ // Get the owner of the focused window
+// while(Destination && Destination->Owner) Destination = Destination->Owner;
+// gpWM_HilightedWindow = Destination;
+}
+
+