aboutsummaryrefslogtreecommitdiff
path: root/engines/wage/macwindowmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/wage/macwindowmanager.cpp')
-rw-r--r--engines/wage/macwindowmanager.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/engines/wage/macwindowmanager.cpp b/engines/wage/macwindowmanager.cpp
index 02e47a148e..5717361527 100644
--- a/engines/wage/macwindowmanager.cpp
+++ b/engines/wage/macwindowmanager.cpp
@@ -45,14 +45,60 @@
*
*/
+#include "common/list.h"
+#include "common/array.h"
+
+#include "graphics/surface.h"
+#include "wage/macwindow.h"
#include "wage/macwindowmanager.h"
namespace Wage {
MacWindowManager::MacWindowManager() {
+ _lastId = 0;
+ _activeWindow = -1;
}
MacWindowManager::~MacWindowManager() {
+ for (uint i = 0; i < _lastId; i++)
+ delete _windows[i];
+}
+
+int MacWindowManager::add(bool scrollable) {
+ MacWindow *w = new MacWindow(scrollable, _lastId);
+
+ _windows.push_back(w);
+ _windowStack.push_back(w);
+
+ _activeWindow = _lastId;
+
+ _lastId++;
+
+ return _activeWindow;
+}
+
+void MacWindowManager::setActive(int id) {
+ if (_activeWindow == id)
+ return;
+
+ if (_activeWindow != -1)
+ _windows[_activeWindow]->setActive(false);
+
+ _windows[id]->setActive(true);
+
+ _windowStack.remove(_windows[id]);
+ _windowStack.push_back(_windows[id]);
+
+ _fullRefresh = true;
+}
+
+void MacWindowManager::draw(Graphics::Surface *g) {
+ if (_fullRefresh) {
+ for (Common::List<MacWindow *>::const_iterator it = _windowStack.begin(); it != _windowStack.end(); it++)
+ (*it)->draw(g);
+ } else {
+ _windowStack.back()->draw(g);
+ }
}
} // End of namespace Wage