aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;