aboutsummaryrefslogtreecommitdiff
path: root/engines/sherlock/tattoo
diff options
context:
space:
mode:
authorPaul Gilbert2015-07-31 17:32:38 -0400
committerPaul Gilbert2015-07-31 17:32:38 -0400
commit4cc2bcabe1e59a2074a5aef466911ae1bbbf351f (patch)
tree99a6e7614030c2f7839b2b1bb92062b1212c5cba /engines/sherlock/tattoo
parent803969b928f85254e4518c44f20455ab0fdd7065 (diff)
downloadscummvm-rg350-4cc2bcabe1e59a2074a5aef466911ae1bbbf351f.tar.gz
scummvm-rg350-4cc2bcabe1e59a2074a5aef466911ae1bbbf351f.tar.bz2
scummvm-rg350-4cc2bcabe1e59a2074a5aef466911ae1bbbf351f.zip
SHERLOCK: RT: Fix inventory tooltips when in a scene with a mask
ScummVM simplifies tooltip handling by drawing tooltips directly to the screen surface. This works well in most cases, but in mask scenes, the screen is recopied at the end of rendering to apply the mask overlay, so the tooltip needs to be redrawn after again in order to be seen
Diffstat (limited to 'engines/sherlock/tattoo')
-rw-r--r--engines/sherlock/tattoo/tattoo_scene.cpp7
-rw-r--r--engines/sherlock/tattoo/tattoo_user_interface.h1
-rw-r--r--engines/sherlock/tattoo/widget_inventory.cpp6
3 files changed, 13 insertions, 1 deletions
diff --git a/engines/sherlock/tattoo/tattoo_scene.cpp b/engines/sherlock/tattoo/tattoo_scene.cpp
index f851a0ac05..13206f0dac 100644
--- a/engines/sherlock/tattoo/tattoo_scene.cpp
+++ b/engines/sherlock/tattoo/tattoo_scene.cpp
@@ -377,9 +377,14 @@ void TattooScene::doBgAnim() {
_doBgAnimDone = true;
ui._drawMenu = false;
- // Handle drawing the text tooltip if necessary
+ // Handle drawing tooltips
if (ui._menuMode == STD_MODE || ui._menuMode == LAB_MODE)
ui._tooltipWidget.draw();
+ if (!ui._postRenderWidgets.empty()) {
+ for (WidgetList::iterator i = ui._postRenderWidgets.begin(); i != ui._postRenderWidgets.end(); ++i)
+ (*i)->draw();
+ ui._postRenderWidgets.clear();
+ }
if (!vm._fastMode)
events.wait(3);
diff --git a/engines/sherlock/tattoo/tattoo_user_interface.h b/engines/sherlock/tattoo/tattoo_user_interface.h
index f8c0056903..a93743c9e4 100644
--- a/engines/sherlock/tattoo/tattoo_user_interface.h
+++ b/engines/sherlock/tattoo/tattoo_user_interface.h
@@ -110,6 +110,7 @@ public:
WidgetText _textWidget;
WidgetSceneTooltip _tooltipWidget;
WidgetVerbs _verbsWidget;
+ WidgetList _postRenderWidgets;
public:
TattooUserInterface(SherlockEngine *vm);
virtual ~TattooUserInterface();
diff --git a/engines/sherlock/tattoo/widget_inventory.cpp b/engines/sherlock/tattoo/widget_inventory.cpp
index c2de61fda8..88507d8231 100644
--- a/engines/sherlock/tattoo/widget_inventory.cpp
+++ b/engines/sherlock/tattoo/widget_inventory.cpp
@@ -122,6 +122,12 @@ void WidgetInventoryTooltip::handleEvents() {
Common::String strWith = fixedText.getText(kFixedText_With);
Common::String strUse = fixedText.getText(kFixedText_Use);
+ // Register the tooltip for requiring post-rendering drawing, since we draw directly to the screen if a scene
+ // mask is active, since the initial draw to the screen will be covered by the mask rendering
+ if (ui._mask) {
+ ui._postRenderWidgets.push_back(this);
+ }
+
// If we are using an inventory item on an object in the room, display the appropriate text above the mouse cursor
if (_owner->_invVerbMode == 3) {
select = ui._bgFound;