aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/gui
diff options
context:
space:
mode:
authorFilippos Karapetis2009-10-05 08:19:43 +0000
committerFilippos Karapetis2009-10-05 08:19:43 +0000
commit93833ee86a48e53ae2d38fc66a3539b9cf727f2e (patch)
tree52491b220cf10da1cc799558d8f03159092107e9 /engines/sci/gui
parent7f053e3a62e8558d98faed1bc477c1a469e7210f (diff)
downloadscummvm-rg350-93833ee86a48e53ae2d38fc66a3539b9cf727f2e.tar.gz
scummvm-rg350-93833ee86a48e53ae2d38fc66a3539b9cf727f2e.tar.bz2
scummvm-rg350-93833ee86a48e53ae2d38fc66a3539b9cf727f2e.zip
Window shadows are also taken into account when storing their bits. This fixes the issue where window shadows were left on screen when windows were closed
svn-id: r44654
Diffstat (limited to 'engines/sci/gui')
-rw-r--r--engines/sci/gui/gui_windowmgr.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/engines/sci/gui/gui_windowmgr.cpp b/engines/sci/gui/gui_windowmgr.cpp
index 46ead18fda..0092e878e7 100644
--- a/engines/sci/gui/gui_windowmgr.cpp
+++ b/engines/sci/gui/gui_windowmgr.cpp
@@ -191,6 +191,12 @@ void SciGuiWindowMgr::DrawWindow(GuiWindow *pWnd) {
GuiPort *oldport = _gfx->SetPort(_wmgrPort);
_gfx->PenColor(0);
if ((wndStyle & kTransparent) == 0) {
+ // Store the shadow, if it exists
+ if ((wndStyle & kUser) == 0) {
+ pWnd->restoreRect.bottom++;
+ pWnd->restoreRect.right++;
+ }
+
pWnd->hSaved1 = _gfx->SaveBits(pWnd->restoreRect, 1);
if (pWnd->uSaveFlag & 2) {
pWnd->hSaved2 = _gfx->SaveBits(pWnd->restoreRect, 2);
@@ -207,6 +213,7 @@ void SciGuiWindowMgr::DrawWindow(GuiWindow *pWnd) {
_gfx->FrameRect(r);// shadow
r.translate(-1, -1);
_gfx->FrameRect(r);// window frame
+
if (wndStyle & kTitle) {
_gfx->FrameRect(r);
r.grow(-1);
@@ -227,6 +234,7 @@ void SciGuiWindowMgr::DrawWindow(GuiWindow *pWnd) {
if ((wndStyle & kTransparent) == 0)
_gfx->FillRect(r, 1, pWnd->backClr);
+
_gfx->ShowBits(pWnd->dims, 1);
}
_gfx->SetPort(oldport);