Window->PrevSibling = parent->LastChild;
Window->NextSibling = NULL;
parent->LastChild = Window;
+
+ _SysDebug("Raised %p", Window);
}
/*
WM_Invalidate(gpWM_FocusedWindow);
WM_Invalidate(Destination);
- WM_RaiseWindow(Destination);
-
gpWM_FocusedWindow = Destination;
}
WM_SendMessage(NULL, Window, WNDMSG_SHOW, sizeof(_msg), &_msg);
// Update the flag
- if(bShow)
+ if(bShow) {
Window->Flags |= WINFLAG_SHOW;
+ _SysDebug("Window %p shown", Window);
+ }
else
{
Window->Flags &= ~WINFLAG_SHOW;
free(Window->RenderBuffer);
Window->RenderBuffer = NULL;
}
+ _SysDebug("Window %p hidden", Window);
}
WM_Invalidate(Window);
if( (Window->Flags & WINFLAG_RELATIVE) && Window->Parent )
{
- Window->RealX = Window->Parent->X + Window->Parent->BorderL + Window->X;
- Window->RealY = Window->Parent->Y + Window->Parent->BorderT + Window->Y;
+ Window->RealX = Window->Parent->RealX + Window->Parent->BorderL + Window->X;
+ Window->RealY = Window->Parent->RealY + Window->Parent->BorderT + Window->Y;
}
else
{
for(win = ret->FirstChild; win; win = win->NextSibling)
{
if( !(win->Flags & WINFLAG_SHOW) ) continue ;
- if( X < win->X || X >= win->X + win->RealW ) continue;
- if( Y < win->Y || Y >= win->Y + win->RealH ) continue;
+ if( X < win->RealX || X >= win->RealX + win->RealW ) continue;
+ if( Y < win->RealY || Y >= win->RealY + win->RealH ) continue;
next_win = win; // Overwrite as we want the final rendered window
}
}
struct sWndMsg_MouseMove msg;
win = WM_int_GetWindowAtPos(OldX, OldY);
- msg.X = NewX - win->X - win->BorderL;
- msg.Y = NewY - win->Y - win->BorderT;
+ msg.X = NewX - win->RealX - win->BorderL;
+ msg.Y = NewY - win->RealY - 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 - win->BorderL;
- msg.Y = NewY - win->Y - win->BorderT;
+ msg.X = NewX - win->RealX - win->BorderL;
+ msg.Y = NewY - win->RealY - 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 - Win->BorderL;
- msg.Y = Y - Win->Y - Win->BorderT;
+ msg.X = X - Win->RealX - Win->BorderL;
+ msg.Y = Y - Win->RealY - Win->BorderT;
msg.Button = Index;
msg.bPressed = !!Pressed;
{
// _SysDebug("Gave focus to %p", win);
WM_FocusWindow(win);
- WM_RaiseWindow(win);
+ tWindow *tmpwin = win;
+ while( tmpwin )
+ {
+ WM_RaiseWindow(tmpwin);
+ tmpwin = tmpwin->Parent;
+ }
}
// Make sure that even if the mouse has moved out of the original window,