diff options
author | Paul Gilbert | 2015-07-26 21:15:57 -0400 |
---|---|---|
committer | Paul Gilbert | 2015-07-26 21:15:57 -0400 |
commit | c2d13695463bd6e98910a3fac6d42853cc29a668 (patch) | |
tree | 4bbcaca57185f1b13c4299cb253451480d898a10 /engines/sherlock/tattoo | |
parent | 20a067a66266ab63270b65994a8ab35ff398c7d2 (diff) | |
download | scummvm-rg350-c2d13695463bd6e98910a3fac6d42853cc29a668.tar.gz scummvm-rg350-c2d13695463bd6e98910a3fac6d42853cc29a668.tar.bz2 scummvm-rg350-c2d13695463bd6e98910a3fac6d42853cc29a668.zip |
SHERLOCK: RT: Stop windows from going off-screen to the right
Diffstat (limited to 'engines/sherlock/tattoo')
-rw-r--r-- | engines/sherlock/tattoo/tattoo_scene.cpp | 9 | ||||
-rw-r--r-- | engines/sherlock/tattoo/tattoo_scene.h | 5 | ||||
-rw-r--r-- | engines/sherlock/tattoo/tattoo_user_interface.cpp | 2 | ||||
-rw-r--r-- | engines/sherlock/tattoo/widget_base.cpp | 4 |
4 files changed, 18 insertions, 2 deletions
diff --git a/engines/sherlock/tattoo/tattoo_scene.cpp b/engines/sherlock/tattoo/tattoo_scene.cpp index 2a90a51bec..1ecc997f42 100644 --- a/engines/sherlock/tattoo/tattoo_scene.cpp +++ b/engines/sherlock/tattoo/tattoo_scene.cpp @@ -292,6 +292,15 @@ void TattooScene::checkBgShapes() { } } +void TattooScene::freeScene() { + TattooUserInterface &ui = *(TattooUserInterface *)_vm->_ui; + Scene::freeScene(); + + delete ui._mask; + delete ui._mask1; + ui._mask = ui._mask1 = nullptr; +} + void TattooScene::doBgAnimCheckCursor() { Events &events = *_vm->_events; TattooUserInterface &ui = *(TattooUserInterface *)_vm->_ui; diff --git a/engines/sherlock/tattoo/tattoo_scene.h b/engines/sherlock/tattoo/tattoo_scene.h index b75f7e70eb..ade4b00a38 100644 --- a/engines/sherlock/tattoo/tattoo_scene.h +++ b/engines/sherlock/tattoo/tattoo_scene.h @@ -118,6 +118,11 @@ public: int getScaleVal(const Point32 &pt); /** + * Fres all the graphics and other dynamically allocated data for the scene + */ + virtual void freeScene(); + + /** * Draw all objects and characters. */ virtual void doBgAnim(); diff --git a/engines/sherlock/tattoo/tattoo_user_interface.cpp b/engines/sherlock/tattoo/tattoo_user_interface.cpp index 16cd6f261c..d8faa3e0ae 100644 --- a/engines/sherlock/tattoo/tattoo_user_interface.cpp +++ b/engines/sherlock/tattoo/tattoo_user_interface.cpp @@ -65,6 +65,8 @@ TattooUserInterface::TattooUserInterface(SherlockEngine *vm): UserInterface(vm), TattooUserInterface::~TattooUserInterface() { delete _interfaceImages; + delete _mask; + delete _mask1; } void TattooUserInterface::initScrollVars() { diff --git a/engines/sherlock/tattoo/widget_base.cpp b/engines/sherlock/tattoo/widget_base.cpp index 57d2fe0d6c..539d4a2f02 100644 --- a/engines/sherlock/tattoo/widget_base.cpp +++ b/engines/sherlock/tattoo/widget_base.cpp @@ -177,8 +177,8 @@ void WidgetBase::restrictToScreen() { _bounds.moveTo(screen._currentScroll.x, _bounds.top); if (_bounds.top < 0) _bounds.moveTo(_bounds.left, 0); - if (_bounds.right > screen._backBuffer1.w()) - _bounds.moveTo(screen._backBuffer1.w() - _bounds.width(), _bounds.top); + if (_bounds.right > (screen._currentScroll.x + SHERLOCK_SCREEN_WIDTH)) + _bounds.moveTo(screen._currentScroll.x + SHERLOCK_SCREEN_WIDTH - _bounds.width(), _bounds.top); if (_bounds.bottom > screen._backBuffer1.h()) _bounds.moveTo(_bounds.left, screen._backBuffer1.h() - _bounds.height()); } |