diff options
author | Paul Gilbert | 2015-07-31 17:32:38 -0400 |
---|---|---|
committer | Paul Gilbert | 2015-07-31 17:32:38 -0400 |
commit | 4cc2bcabe1e59a2074a5aef466911ae1bbbf351f (patch) | |
tree | 99a6e7614030c2f7839b2b1bb92062b1212c5cba /engines | |
parent | 803969b928f85254e4518c44f20455ab0fdd7065 (diff) | |
download | scummvm-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')
-rw-r--r-- | engines/sherlock/tattoo/tattoo_scene.cpp | 7 | ||||
-rw-r--r-- | engines/sherlock/tattoo/tattoo_user_interface.h | 1 | ||||
-rw-r--r-- | engines/sherlock/tattoo/widget_inventory.cpp | 6 |
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; |