diff options
author | Yotam Barnoy | 2010-11-18 07:17:53 +0000 |
---|---|---|
committer | Yotam Barnoy | 2010-11-18 07:17:53 +0000 |
commit | b77ef177ed6ccfb685ca88e7de568f9ff287d0d2 (patch) | |
tree | b12fe6733b68eac2bca2d9866f6b914f6338f41e | |
parent | 3631a5f90b031c7961557fa35e39c6d51bde090e (diff) | |
download | scummvm-rg350-b77ef177ed6ccfb685ca88e7de568f9ff287d0d2.tar.gz scummvm-rg350-b77ef177ed6ccfb685ca88e7de568f9ff287d0d2.tar.bz2 scummvm-rg350-b77ef177ed6ccfb685ca88e7de568f9ff287d0d2.zip |
GUI: changed tooltip to be deleted when inactive
Before, it could be instantiated after an engine loaded and then was never deleted, causing memory fragmentation. Also removed inner tooltip call to the GuiManager runloop, which makes the logic simpler since the tooltip is a bit of a hack. I had to remove it because deleting _tooltip in the inner loop (called from tooltip itself) is trouble.
svn-id: r54311
-rw-r--r-- | gui/Tooltip.cpp | 1 | ||||
-rw-r--r-- | gui/gui-manager.cpp | 6 |
2 files changed, 5 insertions, 2 deletions
diff --git a/gui/Tooltip.cpp b/gui/Tooltip.cpp index 067afb8246..457f53d011 100644 --- a/gui/Tooltip.cpp +++ b/gui/Tooltip.cpp @@ -72,7 +72,6 @@ bool Tooltip::tooltipModal(int x, int y) { _y = MIN<int16>(g_gui.getTopDialog()->_y + y + _ydelta, g_gui.getHeight() - _h - 3); open(); - g_gui.runLoop(); return true; } diff --git a/gui/gui-manager.cpp b/gui/gui-manager.cpp index 5109539158..4e33c446eb 100644 --- a/gui/gui-manager.cpp +++ b/gui/gui-manager.cpp @@ -381,10 +381,14 @@ void GuiManager::runLoop() { _tooltipCheck = false; _tooltip->tooltipModal(_lastMousePosition.x, _lastMousePosition.y); + activeDialog = getTopDialog(); } if (eventTookplace && _tooltip) { _tooltip->mustClose(); + delete _tooltip; + _tooltip = 0; + activeDialog = getTopDialog(); } // Delay for a moment @@ -399,7 +403,7 @@ void GuiManager::runLoop() { _theme->disable(); restoreState(); _useStdCursor = false; - } + } } #pragma mark - |