diff -r 4b65895bbb6b -r e082b3fa71c8 WinWorkstation.st --- a/WinWorkstation.st Fri Sep 08 15:41:38 2006 +0200 +++ b/WinWorkstation.st Fri Sep 08 16:18:40 2006 +0200 @@ -6421,188 +6421,195 @@ int arg; if (__isSmallInteger(aNumberOrSymbol)) { - arg = __intVal(aNumberOrSymbol); + arg = __intVal(aNumberOrSymbol); } else if ((aNumberOrSymbol == @symbol(swapButton)) || (aNumberOrSymbol == @symbol(SM_SWAPBUTTON))) { - arg = SM_SWAPBUTTON; - isBool = 1; + arg = SM_SWAPBUTTON; + isBool = 1; } else if ((aNumberOrSymbol == @symbol(mousePresent)) || (aNumberOrSymbol == @symbol(SM_MOUSEPRESENT))) { - arg = SM_MOUSEPRESENT; - isBool = 1; + arg = SM_MOUSEPRESENT; + isBool = 1; } else if ((aNumberOrSymbol == @symbol(mouseButtons)) || (aNumberOrSymbol == @symbol(SM_CMOUSEBUTTONS))) { - arg = SM_CMOUSEBUTTONS; + arg = SM_CMOUSEBUTTONS; } else if ((aNumberOrSymbol == @symbol(iconWidth)) || (aNumberOrSymbol == @symbol(SM_CXICON))) { - arg = SM_CXICON; + arg = SM_CXICON; } else if ((aNumberOrSymbol == @symbol(iconHeight)) || (aNumberOrSymbol == @symbol(SM_CYICON))) { - arg = SM_CYICON; + arg = SM_CYICON; } else if ((aNumberOrSymbol == @symbol(iconWidth)) || (aNumberOrSymbol == @symbol(SM_CXDOUBLECLK))) { - arg = SM_CXDOUBLECLK; + arg = SM_CXDOUBLECLK; } else if ((aNumberOrSymbol == @symbol(iconHeight)) || (aNumberOrSymbol == @symbol(SM_CYDOUBLECLK))) { - arg = SM_CYDOUBLECLK; + arg = SM_CYDOUBLECLK; } else if ((aNumberOrSymbol == @symbol(cursorWidth)) || (aNumberOrSymbol == @symbol(SM_CXCURSOR))) { - arg = SM_CXCURSOR; + arg = SM_CXCURSOR; } else if ((aNumberOrSymbol == @symbol(cursorHeight)) || (aNumberOrSymbol == @symbol(SM_CYCURSOR))) { - arg = SM_CYCURSOR; + arg = SM_CYCURSOR; } else if ((aNumberOrSymbol == @symbol(captionHeight)) || (aNumberOrSymbol == @symbol(SM_CYCAPTION))) { - arg = SM_CYCAPTION; + arg = SM_CYCAPTION; } else if ((aNumberOrSymbol == @symbol(resizeFrameWidth)) || (aNumberOrSymbol == @symbol(SM_CXFRAME))) { - arg = SM_CXFRAME; + arg = SM_CXFRAME; } else if ((aNumberOrSymbol == @symbol(resizeFrameHeight)) || (aNumberOrSymbol == @symbol(SM_CYFRAME))) { - arg = SM_CYFRAME; + arg = SM_CYFRAME; } else if ((aNumberOrSymbol == @symbol(borderFrameWidth)) || (aNumberOrSymbol == @symbol(SM_CXBORDER))) { - arg = SM_CXBORDER; + arg = SM_CXBORDER; } else if ((aNumberOrSymbol == @symbol(borderFrameHeight)) || (aNumberOrSymbol == @symbol(SM_CYBORDER))) { - arg = SM_CYBORDER; + arg = SM_CYBORDER; } else if (aNumberOrSymbol == @symbol(SM_CXDLGFRAME)) { - arg = SM_CXDLGFRAME; + arg = SM_CXDLGFRAME; } else if (aNumberOrSymbol == @symbol(SM_CYDLGFRAME)) { - arg = SM_CYDLGFRAME; + arg = SM_CYDLGFRAME; } else if ((aNumberOrSymbol == @symbol(fullScreenWindowWidth)) || (aNumberOrSymbol == @symbol(SM_CXFULLSCREEN))) { - arg = SM_CXFULLSCREEN; + arg = SM_CXFULLSCREEN; } else if ((aNumberOrSymbol == @symbol(fullScreenWindowHeight)) || (aNumberOrSymbol == @symbol(SM_CYFULLSCREEN))) { - arg = SM_CYFULLSCREEN; + arg = SM_CYFULLSCREEN; } else if ((aNumberOrSymbol == @symbol(screenWidth)) || (aNumberOrSymbol == @symbol(SM_CXSCREEN))) { - arg = SM_CXSCREEN; + arg = SM_CXSCREEN; } else if ((aNumberOrSymbol == @symbol(screenHeight)) || (aNumberOrSymbol == @symbol(SM_CYSCREEN))) { - arg = SM_CYSCREEN; + arg = SM_CYSCREEN; } else if ((aNumberOrSymbol == @symbol(minWindowWidth)) || (aNumberOrSymbol == @symbol(SM_CXMIN))) { - arg = SM_CXMIN; + arg = SM_CXMIN; } else if ((aNumberOrSymbol == @symbol(minWindowHeight)) || (aNumberOrSymbol == @symbol(SM_CYMIN))) { - arg = SM_CYMIN; + arg = SM_CYMIN; } else if ((aNumberOrSymbol == @symbol(vScrollbarWidth)) || (aNumberOrSymbol == @symbol(SM_CXVSCROLL))) { - arg = SM_CXVSCROLL; + arg = SM_CXVSCROLL; } else if ((aNumberOrSymbol == @symbol(hScrollbarHeight)) || (aNumberOrSymbol == @symbol(SM_CYHSCROLL))) { - arg = SM_CYHSCROLL; + arg = SM_CYHSCROLL; } else if ((aNumberOrSymbol == @symbol(vThumbHeight)) || (aNumberOrSymbol == @symbol(SM_CYVTHUMB))) { - arg = SM_CYVTHUMB; + arg = SM_CYVTHUMB; } else if ((aNumberOrSymbol == @symbol(hThumbWidth)) || (aNumberOrSymbol == @symbol(SM_CXHTHUMB))) { - arg = SM_CXHTHUMB; + arg = SM_CXHTHUMB; } else if ((aNumberOrSymbol == @symbol(SM_CXSIZE))) { - arg = SM_CXSIZE; + arg = SM_CXSIZE; } else if ((aNumberOrSymbol == @symbol(SM_CYSIZE))) { - arg = SM_CYSIZE; + arg = SM_CYSIZE; } else if ((aNumberOrSymbol == @symbol(SM_CYVSCROLL))) { - arg = SM_CYVSCROLL; + arg = SM_CYVSCROLL; } else if ((aNumberOrSymbol == @symbol(SM_CXHSCROLL))) { - arg = SM_CXHSCROLL; + arg = SM_CXHSCROLL; } else if ((aNumberOrSymbol == @symbol(SM_CXMINTRACK))) { - arg = SM_CXMINTRACK; + arg = SM_CXMINTRACK; } else if ((aNumberOrSymbol == @symbol(SM_CYMINTRACK))) { - arg = SM_CYMINTRACK; + arg = SM_CYMINTRACK; } else if ((aNumberOrSymbol == @symbol(SM_CXICONSPACING))) { - arg = SM_CXICONSPACING; + arg = SM_CXICONSPACING; } else if ((aNumberOrSymbol == @symbol(SM_CYICONSPACING))) { - arg = SM_CYICONSPACING; + arg = SM_CYICONSPACING; } else if ((aNumberOrSymbol == @symbol(SM_CYMENU))) { - arg = SM_CYMENU; + arg = SM_CYMENU; } else if ((aNumberOrSymbol == @symbol(SM_MENUDROPALIGNMENT))) { - arg = SM_MENUDROPALIGNMENT; + arg = SM_MENUDROPALIGNMENT; } else if ((aNumberOrSymbol == @symbol(SM_PENWINDOWS))) { - arg = SM_PENWINDOWS; + arg = SM_PENWINDOWS; } else if ((aNumberOrSymbol == @symbol(SM_DBCSENABLED))) { - arg = SM_DBCSENABLED; + arg = SM_DBCSENABLED; } else if ((aNumberOrSymbol == @symbol(SM_CXFIXEDFRAME))) { - arg = SM_CXFIXEDFRAME; + arg = SM_CXFIXEDFRAME; } else if ((aNumberOrSymbol == @symbol(SM_CYFIXEDFRAME))) { - arg = SM_CYFIXEDFRAME; + arg = SM_CYFIXEDFRAME; } else if ((aNumberOrSymbol == @symbol(SM_CXSIZEFRAME))) { - arg = SM_CXSIZEFRAME; + arg = SM_CXSIZEFRAME; } else if ((aNumberOrSymbol == @symbol(SM_CYSIZEFRAME))) { - arg = SM_CYSIZEFRAME; + arg = SM_CYSIZEFRAME; } else if ((aNumberOrSymbol == @symbol(SM_CYKANJIWINDOW))) { - arg = SM_CYKANJIWINDOW; + arg = SM_CYKANJIWINDOW; } else if ((aNumberOrSymbol == @symbol(SM_SECURE))) { - arg = SM_SECURE; + arg = SM_SECURE; } else if ((aNumberOrSymbol == @symbol(SM_CXEDGE))) { - arg = SM_CXEDGE; + arg = SM_CXEDGE; } else if ((aNumberOrSymbol == @symbol(SM_CYEDGE))) { - arg = SM_CYEDGE; + arg = SM_CYEDGE; } else if ((aNumberOrSymbol == @symbol(SM_CXMINSPACING))) { - arg = SM_CXMINSPACING; + arg = SM_CXMINSPACING; } else if ((aNumberOrSymbol == @symbol(SM_CYMINSPACING))) { - arg = SM_CYMINSPACING; + arg = SM_CYMINSPACING; } else if ((aNumberOrSymbol == @symbol(SM_CXSMICON))) { - arg = SM_CXSMICON; + arg = SM_CXSMICON; } else if ((aNumberOrSymbol == @symbol(SM_CYSMICON))) { - arg = SM_CYSMICON; + arg = SM_CYSMICON; } else if ((aNumberOrSymbol == @symbol(SM_CYSMCAPTION))) { - arg = SM_CYSMCAPTION; + arg = SM_CYSMCAPTION; } else if ((aNumberOrSymbol == @symbol(SM_CXSMSIZE))) { - arg = SM_CXSMSIZE; + arg = SM_CXSMSIZE; } else if ((aNumberOrSymbol == @symbol(SM_CYSMSIZE))) { - arg = SM_CYSMSIZE; + arg = SM_CYSMSIZE; } else if ((aNumberOrSymbol == @symbol(SM_CXMENUSIZE))) { - arg = SM_CXMENUSIZE; + arg = SM_CXMENUSIZE; } else if ((aNumberOrSymbol == @symbol(SM_CYMENUSIZE))) { - arg = SM_CYMENUSIZE; + arg = SM_CYMENUSIZE; } else if ((aNumberOrSymbol == @symbol(SM_ARRANGE))) { - arg = SM_ARRANGE; + arg = SM_ARRANGE; } else if ((aNumberOrSymbol == @symbol(SM_CXMINIMIZED))) { - arg = SM_CXMINIMIZED; + arg = SM_CXMINIMIZED; } else if ((aNumberOrSymbol == @symbol(SM_CYMINIMIZED))) { - arg = SM_CYMINIMIZED; + arg = SM_CYMINIMIZED; } else if ((aNumberOrSymbol == @symbol(SM_CXMAXTRACK))) { - arg = SM_CXMAXTRACK; + arg = SM_CXMAXTRACK; } else if ((aNumberOrSymbol == @symbol(SM_CYMAXTRACK))) { - arg = SM_CYMAXTRACK; + arg = SM_CYMAXTRACK; } else if ((aNumberOrSymbol == @symbol(SM_CXMAXIMIZED))) { - arg = SM_CXMAXIMIZED; + arg = SM_CXMAXIMIZED; } else if ((aNumberOrSymbol == @symbol(SM_CYMAXIMIZED))) { - arg = SM_CYMAXIMIZED; + arg = SM_CYMAXIMIZED; } else if ((aNumberOrSymbol == @symbol(SM_NETWORK))) { - arg = SM_NETWORK; + arg = SM_NETWORK; } else if ((aNumberOrSymbol == @symbol(SM_CXDRAG))) { - arg = SM_CXDRAG; + arg = SM_CXDRAG; } else if ((aNumberOrSymbol == @symbol(SM_CYDRAG))) { - arg = SM_CYDRAG; + arg = SM_CYDRAG; } else if ((aNumberOrSymbol == @symbol(SM_NETWORK))) { - arg = SM_NETWORK; + arg = SM_NETWORK; } else if ((aNumberOrSymbol == @symbol(SM_SHOWSOUNDS))) { - arg = SM_SHOWSOUNDS; + arg = SM_SHOWSOUNDS; } else if ((aNumberOrSymbol == @symbol(SM_CXMENUCHECK))) { - arg = SM_CXMENUCHECK; + arg = SM_CXMENUCHECK; } else if ((aNumberOrSymbol == @symbol(SM_CYMENUCHECK))) { - arg = SM_CYMENUCHECK; + arg = SM_CYMENUCHECK; } else if ((aNumberOrSymbol == @symbol(SM_SLOWMACHINE))) { - arg = SM_SLOWMACHINE; + arg = SM_SLOWMACHINE; } else if ((aNumberOrSymbol == @symbol(SM_MIDEASTENABLED))) { - arg = SM_MIDEASTENABLED; + arg = SM_MIDEASTENABLED; } else if ((aNumberOrSymbol == @symbol(SM_MOUSEWHEELPRESENT))) { - arg = SM_MOUSEWHEELPRESENT; + arg = SM_MOUSEWHEELPRESENT; } else if ((aNumberOrSymbol == @symbol(SM_XVIRTUALSCREEN))) { - arg = SM_XVIRTUALSCREEN; + arg = SM_XVIRTUALSCREEN; } else if ((aNumberOrSymbol == @symbol(SM_YVIRTUALSCREEN))) { - arg = SM_YVIRTUALSCREEN; + arg = SM_YVIRTUALSCREEN; } else if ((aNumberOrSymbol == @symbol(SM_CXVIRTUALSCREEN))) { - arg = SM_CXVIRTUALSCREEN; + arg = SM_CXVIRTUALSCREEN; } else if ((aNumberOrSymbol == @symbol(SM_CYVIRTUALSCREEN))) { - arg = SM_CYVIRTUALSCREEN; + arg = SM_CYVIRTUALSCREEN; } else if ((aNumberOrSymbol == @symbol(SM_CMONITORS))) { - arg = SM_CMONITORS; + arg = SM_CMONITORS; } else if ((aNumberOrSymbol == @symbol(SM_SAMEDISPLAYFORMAT))) { - arg = SM_SAMEDISPLAYFORMAT; + arg = SM_SAMEDISPLAYFORMAT; #ifdef SM_IMMENABLED } else if ((aNumberOrSymbol == @symbol(SM_IMMENABLED))) { - arg = SM_IMMENABLED; + arg = SM_IMMENABLED; #endif } else if ((aNumberOrSymbol == @symbol(SM_DEBUG))) { - arg = SM_DEBUG; + arg = SM_DEBUG; #ifdef SM_REMOTESESSION } else if ((aNumberOrSymbol == @symbol(SM_REMOTESESSION))) { - arg = SM_REMOTESESSION; + arg = SM_REMOTESESSION; #endif } else { - RETURN (nil); + RETURN (nil); } info = GetSystemMetrics(arg); if (isBool) { - RETURN (info ? true : false); + RETURN (info ? true : false); } RETURN (__MKSMALLINT(info)); %} " Screen current getSystemMetrics:#SM_MOUSEWHEELPRESENT Screen current getSystemMetrics:#SM_ARRANGE - " + Screen current getSystemMetrics:#SM_XVIRTUALSCREEN + Screen current getSystemMetrics:#SM_CXVIRTUALSCREEN + Screen current getSystemMetrics:#SM_CYVIRTUALSCREEN + Screen current getSystemMetrics:#SM_CMONITORS + Screen current getSystemMetrics:#SM_SAMEDISPLAYFORMAT + " + + "Modified: / 08-09-2006 / 15:36:32 / cg" ! getSystemParametersInfo:aNumberOrSymbol @@ -7133,7 +7140,9 @@ "return the height in pixels of any caption (title-bar) in standard topWindows." - ^ self getSystemMetrics:#captionHeight + ^ self getSystemMetrics:#SM_CYCAPTION + + "Modified: / 08-09-2006 / 15:39:24 / cg" ! iconSizes @@ -7141,8 +7150,8 @@ |d w h| - w := self getSystemMetrics:#iconWidth. - h := self getSystemMetrics:#iconHeight. + w := self getSystemMetrics:#SM_CXICON. + h := self getSystemMetrics:#SM_CYICON. d := IdentityDictionary new. d at:#minWidth put:w. @@ -7155,8 +7164,10 @@ ^ OrderedCollection with:d " - Display iconSizes - " + Display iconSizes + " + + "Modified: / 08-09-2006 / 15:40:18 / cg" ! preferredIconSize @@ -7278,13 +7289,22 @@ Normally, the same as extent, but may be smaller, in case some menu space is taken up by the window manager (windows)" - ^ (self getSystemMetrics:#fullScreenWindowWidth) - @ - (self getSystemMetrics:#fullScreenWindowHeight) - - " - Display usableExtent - " + |w h | + + w := self getSystemMetrics:#SM_CXVIRTUALSCREEN. + h := self getSystemMetrics:#SM_CYVIRTUALSCREEN. + (w isNil or:[h isNil]) ifTrue:[ + "/ not supported under win95 and win-nt4 - fallback to real extent + w := self getSystemMetrics:#SM_CXFULLSCREEN. + h := self getSystemMetrics:#SM_CYFULLSCREEN. + ]. + ^ w @ h. + + " + Display usableExtent + " + + "Modified: / 08-09-2006 / 16:18:49 / cg" ! ! !WinWorkstation methodsFor:'bitmap/window creation'! @@ -7662,7 +7682,6 @@ %} ! - primCreateBitmapFromArray:anArray width:w height:h %{ @@ -8981,8 +9000,8 @@ |padding bpl bplPadded srcOffs dstOffs src mask srcPadded maskPadded cW cH nB nR cursor | - cW := self getSystemMetrics:#cursorWidth. - cH := self getSystemMetrics:#cursorHeight. + cW := self getSystemMetrics:#SM_CXCURSOR. + cH := self getSystemMetrics:#SM_CYCURSOR. "/ ('cursorWidth ',cW printString,'cursorHeight ',cH printString) infoPrintCR. src := sourceBytes. @@ -8994,50 +9013,52 @@ bplPadded := (cW + padding - 1) // padding * 2. bpl ~~ bplPadded ifTrue:[ - "/ 'repad cursor bits' infoPrintCR. - srcPadded := ByteArray new:(bplPadded * cH). - nB := bpl min: bplPadded. - nR := cH min: h. - - dstOffs := srcOffs := 1. - 1 to:nR do:[:row | - srcPadded - replaceFrom:dstOffs - to:(dstOffs+nB-1) - with:src - startingAt:srcOffs. - dstOffs := dstOffs + bplPadded. - srcOffs := srcOffs + bpl. - ]. - - maskPadded := ByteArray new:(bplPadded * cH). - dstOffs := srcOffs := 1. - 1 to:nR do:[:row | - maskPadded - replaceFrom:dstOffs - to:(dstOffs+nB-1) - with:mask - startingAt:srcOffs. - dstOffs := dstOffs + bplPadded. - srcOffs := srcOffs + bpl. - ]. - src := srcPadded. - mask := maskPadded. + "/ 'repad cursor bits' infoPrintCR. + srcPadded := ByteArray new:(bplPadded * cH). + nB := bpl min: bplPadded. + nR := cH min: h. + + dstOffs := srcOffs := 1. + 1 to:nR do:[:row | + srcPadded + replaceFrom:dstOffs + to:(dstOffs+nB-1) + with:src + startingAt:srcOffs. + dstOffs := dstOffs + bplPadded. + srcOffs := srcOffs + bpl. + ]. + + maskPadded := ByteArray new:(bplPadded * cH). + dstOffs := srcOffs := 1. + 1 to:nR do:[:row | + maskPadded + replaceFrom:dstOffs + to:(dstOffs+nB-1) + with:mask + startingAt:srcOffs. + dstOffs := dstOffs + bplPadded. + srcOffs := srcOffs + bpl. + ]. + src := srcPadded. + mask := maskPadded. ]. src invert. 1 to:src size do:[:index | - src byteAt:index put:((src byteAt:index) bitAnd:(mask byteAt:index)). + src byteAt:index put:((src byteAt:index) bitAnd:(mask byteAt:index)). ]. mask invert. cursor := self - primCreateCursorSourceBits:src - maskBits:mask - hotX:hx hotY:hy - width:cW height:cH. + primCreateCursorSourceBits:src + maskBits:mask + hotX:hx hotY:hy + width:cW height:cH. cursor notNil ifTrue:[^ cursor ]. 'WinWorkstation [warning]: could not create bitmap cursor' infoPrintCR. + + "Modified: / 08-09-2006 / 15:39:42 / cg" ! cursorBitmapPadding @@ -16858,7 +16879,7 @@ !WinWorkstation class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libview/WinWorkstation.st,v 1.328 2006-07-28 21:44:57 cg Exp $' + ^ '$Header: /cvs/stx/stx/libview/WinWorkstation.st,v 1.329 2006-09-08 14:18:40 cg Exp $' ! ! WinWorkstation initialize!