From: John M M. <jo...@us...> - 2004-09-22 18:54:40
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6982/squeak/platforms/Mac OS/vm Modified Files: sqMacWindow.c Log Message: 3.7.5b3 Alter full screen entry/exit logic to correct issues with restore and how it handles starting in full screen mode Index: sqMacWindow.c =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/vm/sqMacWindow.c,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** sqMacWindow.c 3 Sep 2004 00:18:28 -0000 1.33 --- sqMacWindow.c 22 Sep 2004 18:54:30 -0000 1.34 *************** *** 83,105 **** int ioSetFullScreen(int fullScreen) { #endif ! Rect screen,portRect,ignore; int width, height, maxWidth, maxHeight; int oldWidth, oldHeight; ! static Rect rememberOldLocation = {44,8,0,0}; GDHandle dominantGDevice; ! #if TARGET_API_MAC_CARBON ! GetWindowGreatestAreaDevice(getSTWindow(),kWindowContentRgn,&dominantGDevice,&ignore); if (dominantGDevice == null) { success(false); return 0; } screen = (**dominantGDevice).gdRect; #else - dominantGDevice = getDominateDevice(getSTWindow(),&ignore); - if (dominantGDevice == null) { - success(false); - return 0; - } getDominateGDeviceRect(dominantGDevice,&screen,true); #endif --- 83,101 ---- int ioSetFullScreen(int fullScreen) { #endif ! Rect screen,portRect; int width, height, maxWidth, maxHeight; int oldWidth, oldHeight; ! static Rect rememberOldLocation = {0,0,0,0}; GDHandle dominantGDevice; ! dominantGDevice = getThatDominateGDevice(); if (dominantGDevice == null) { success(false); return 0; } + + #if TARGET_API_MAC_CARBON screen = (**dominantGDevice).gdRect; #else getDominateGDeviceRect(dominantGDevice,&screen,true); #endif *************** *** 107,110 **** --- 103,110 ---- if (fullScreen) { GetPortBounds(GetWindowPort(getSTWindow()),&rememberOldLocation); + if (gWindowsIsInvisible) { + rememberOldLocation.top = 44; + rememberOldLocation.left = 8; + } LocalToGlobal((Point*) &rememberOldLocation.top); LocalToGlobal((Point*) &rememberOldLocation.bottom); *************** *** 115,122 **** width = screen.right - screen.left; height = (screen.bottom - screen.top); - if ((oldWidth < width) || (oldHeight < height)) { - /* save old size if it wasn't already full-screen */ - setSavedWindowSize((oldWidth << 16) + (oldHeight & 0xFFFF)); - } MoveWindow(getSTWindow(), screen.left, screen.top, true); SizeWindow(getSTWindow(), width, height, true); --- 115,118 ---- *************** *** 125,135 **** MenuBarRestore(); ! /* get old window size */ ! width = (unsigned) getSavedWindowSize() >> 16; ! height = getSavedWindowSize() & 0xFFFF; ! /* minimum size is 64 x 64 */ ! width = (width > 64) ? width : 64; ! height = (height > 64) ? height : 64; /* maximum size is screen size inset slightly */ --- 121,132 ---- MenuBarRestore(); ! if (EmptyRect(&rememberOldLocation)) { ! /* get old window size */ ! width = (unsigned) getSavedWindowSize() >> 16; ! height = getSavedWindowSize() & 0xFFFF; ! /* minimum size is 1 x 1 */ ! width = (width > 0) ? width : 64; ! height = (height > 0) ? height : 64; /* maximum size is screen size inset slightly */ *************** *** 138,143 **** width = (width <= maxWidth) ? width : maxWidth; height = (height <= maxHeight) ? height : maxHeight; MoveWindow(getSTWindow(), rememberOldLocation.left, rememberOldLocation.top, true); ! SizeWindow(getSTWindow(), width, height, true); setFullScreenFlag(false); } --- 135,145 ---- width = (width <= maxWidth) ? width : maxWidth; height = (height <= maxHeight) ? height : maxHeight; + MoveWindow(getSTWindow(), 8, 44, true); + SizeWindow(getSTWindow(), width, height, true); + } else { MoveWindow(getSTWindow(), rememberOldLocation.left, rememberOldLocation.top, true); ! SizeWindow(getSTWindow(), rememberOldLocation.right - rememberOldLocation.left, rememberOldLocation.bottom - rememberOldLocation.top, true); ! } ! setFullScreenFlag(false); } *************** *** 561,565 **** void SetUpWindow(void) { ! Rect windowBounds = {44, 8, 300, 500}; #ifndef IHAVENOHEAD --- 563,575 ---- void SetUpWindow(void) { ! Rect windowBounds = {44, 8, 0, 0}; ! int width,height; ! ! /* get old window size */ ! width = (unsigned) getSavedWindowSize() >> 16; ! height = getSavedWindowSize() & 0xFFFF; ! ! windowBounds.bottom = windowBounds.top+height; ! windowBounds.right = windowBounds.left+width; #ifndef IHAVENOHEAD *************** *** 611,622 **** int ioScreenDepth(void) { - Rect ignore; GDHandle mainDevice; ! #if TARGET_API_MAC_CARBON ! GetWindowGreatestAreaDevice(getSTWindow(),kWindowContentRgn,&mainDevice,&ignore); ! #else ! mainDevice = getDominateDevice(getSTWindow(),&ignore); ! #endif if (mainDevice == null) --- 621,627 ---- int ioScreenDepth(void) { GDHandle mainDevice; ! mainDevice = getThatDominateGDevice(); if (mainDevice == null) *************** *** 749,753 **** GDHandle dominantGDevice; - Rect ignore; Handle displayState; UInt32 depthMode=depth; --- 754,757 ---- *************** *** 769,777 **** } ! #if TARGET_API_MAC_CARBON ! GetWindowGreatestAreaDevice(getSTWindow(),kWindowContentRgn,&dominantGDevice,&ignore); ! #else ! dominantGDevice = getDominateDevice(getSTWindow(),&ignore); ! #endif if (dominantGDevice == null) { success(false); --- 773,777 ---- } ! dominantGDevice = getThatDominateGDevice(); if (dominantGDevice == null) { success(false); *************** *** 812,815 **** --- 812,826 ---- } + GDHandle getThatDominateGDevice() { + GDHandle dominantGDevice; + Rect ignore; + #if TARGET_API_MAC_CARBON + GetWindowGreatestAreaDevice(getSTWindow(),kWindowContentRgn,&dominantGDevice,&ignore); + #else + dominantGDevice = getDominateDevice(getSTWindow(),&ignore); + #endif + return dominantGDevice; + } + #if !I_AM_CARBON_EVENT || defined(BROWSERPLUGIN) |