From b68bca0e99a3b1857a8b85dd3b0576a81e59da13 Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Fri, 26 Dec 2003 00:47:18 +0000 Subject: [PATCH] fixed hardcoded workarea size svn path=/trunk/; revision=7242 --- reactos/subsys/win32k/ntuser/desktop.c | 20 ++++++++++++++++---- reactos/subsys/win32k/ntuser/misc.c | 25 ++++++++++++++++++++++++- 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/reactos/subsys/win32k/ntuser/desktop.c b/reactos/subsys/win32k/ntuser/desktop.c index 73dda1a315e..c2b84b7ca50 100644 --- a/reactos/subsys/win32k/ntuser/desktop.c +++ b/reactos/subsys/win32k/ntuser/desktop.c @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: desktop.c,v 1.6 2003/12/22 15:30:21 navaraf Exp $ + * $Id: desktop.c,v 1.7 2003/12/26 00:47:18 weiden Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -357,11 +357,23 @@ NtUserCreateDesktop( return NULL; } - /* FIXME: Set correct dimensions. */ DesktopObject->WorkArea.left = 0; DesktopObject->WorkArea.top = 0; - DesktopObject->WorkArea.right = 640; - DesktopObject->WorkArea.bottom = 480; + DesktopObject->WorkArea.right = -1; + DesktopObject->WorkArea.bottom = -1; + if(ScreenDeviceContext) + { + PDC dc; + PSURFOBJ SurfObj; + dc = DC_LockDc(ScreenDeviceContext); + SurfObj = (PSURFOBJ)AccessUserObject((ULONG) dc->Surface); + if(SurfObj) + { + DesktopObject->WorkArea.right = SurfObj->sizlBitmap.cx; + DesktopObject->WorkArea.bottom = SurfObj->sizlBitmap.cy; + } + DC_UnlockDc(ScreenDeviceContext); + } /* Initialize some local (to win32k) desktop state. */ DesktopObject->ActiveMessageQueue = NULL; diff --git a/reactos/subsys/win32k/ntuser/misc.c b/reactos/subsys/win32k/ntuser/misc.c index d8f23729df8..a1edaacc149 100644 --- a/reactos/subsys/win32k/ntuser/misc.c +++ b/reactos/subsys/win32k/ntuser/misc.c @@ -1,4 +1,4 @@ -/* $Id: misc.c,v 1.39 2003/12/26 00:31:22 weiden Exp $ +/* $Id: misc.c,v 1.40 2003/12/26 00:47:18 weiden Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -448,6 +448,7 @@ NtUserSystemParametersInfo( } case SPI_GETWORKAREA: { + PRECT Rect; PDESKTOP_OBJECT Desktop = PsGetWin32Thread()->Desktop; if(!Desktop) @@ -456,6 +457,28 @@ NtUserSystemParametersInfo( return FALSE; } + Rect = (PRECT)Desktop->WorkArea; + if(Rect->right == -1) + { + HDC hDC; + PDC dc; + PSURFOBJ SurfObj; + + hDC = IntGetScreenDC(); + if(hDC) + { + dc = DC_LockDc(hDC); + if(dc && (SurfObj = (PSURFOBJ)AccessUserObject((ULONG) dc->Surface))) + { + Rect->left = 0; + Rect->top = 0; + Rect->right = SurfObj->sizlBitmap.cx; + Rect->bottom = SurfObj->sizlBitmap.cy; + DC_UnlockDc(hDC); + } + } + } + Status = MmCopyToCaller((PRECT)pvParam, Desktop->WorkArea, sizeof(RECT)); if(!NT_SUCCESS(Status)) {