winex11: Move the SendMessage(WM_SYSCOMMAND, SC_MAXIMIZE/SC_RESTORE) call after the window extents check.

This commit is contained in:
Dmitry Timoshkov 2011-04-05 18:31:27 +09:00 committed by Alexandre Julliard
parent 81aa05eab6
commit 6eed4c4241
1 changed files with 24 additions and 20 deletions

View File

@ -912,25 +912,6 @@ void X11DRV_ConfigureNotify( HWND hwnd, XEvent *xev )
hwnd, data->whole_window, rect.left, rect.top, rect.right-rect.left, rect.bottom-rect.top,
event->x, event->y, event->width, event->height );
if (is_net_wm_state_maximized( event->display, data ))
{
if (!IsZoomed( data->hwnd ))
{
TRACE( "win %p/%lx is maximized\n", data->hwnd, data->whole_window );
SendMessageW( data->hwnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0 );
return;
}
}
else
{
if (IsZoomed( data->hwnd ))
{
TRACE( "window %p/%lx is no longer maximized\n", data->hwnd, data->whole_window );
SendMessageW( data->hwnd, WM_SYSCOMMAND, SC_RESTORE, 0 );
return;
}
}
X11DRV_X_to_window_rect( data, &rect );
if (root_coords) MapWindowPoints( 0, parent, (POINT *)&rect, 2 );
@ -953,7 +934,11 @@ void X11DRV_ConfigureNotify( HWND hwnd, XEvent *xev )
data->window_rect.bottom - data->window_rect.top == cy) ||
(IsRectEmpty( &data->window_rect ) && event->width == 1 && event->height == 1))
{
if (flags & SWP_NOMOVE) return; /* if nothing changed, don't do anything */
if (flags & SWP_NOMOVE) /* if nothing changed, don't do anything */
{
TRACE( "Nothing has changed, ignoring event\n" );
return;
}
flags |= SWP_NOSIZE;
}
else
@ -961,6 +946,25 @@ void X11DRV_ConfigureNotify( HWND hwnd, XEvent *xev )
hwnd, data->window_rect.right - data->window_rect.left,
data->window_rect.bottom - data->window_rect.top, cx, cy );
if (is_net_wm_state_maximized( event->display, data ))
{
if (!IsZoomed( data->hwnd ))
{
TRACE( "win %p/%lx is maximized\n", data->hwnd, data->whole_window );
SendMessageW( data->hwnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0 );
return;
}
}
else
{
if (IsZoomed( data->hwnd ))
{
TRACE( "window %p/%lx is no longer maximized\n", data->hwnd, data->whole_window );
SendMessageW( data->hwnd, WM_SYSCOMMAND, SC_RESTORE, 0 );
return;
}
}
SetWindowPos( hwnd, 0, x, y, cx, cy, flags );
}