diff options
-rw-r--r-- | engines/wage/macwindow.cpp | 22 | ||||
-rw-r--r-- | engines/wage/macwindow.h | 6 |
2 files changed, 20 insertions, 8 deletions
diff --git a/engines/wage/macwindow.cpp b/engines/wage/macwindow.cpp index eac552245f..048b193db0 100644 --- a/engines/wage/macwindow.cpp +++ b/engines/wage/macwindow.cpp @@ -61,6 +61,9 @@ MacWindow::MacWindow(int id, bool scrollable) : _scrollable(scrollable), _id(id) _highlightedPart = kBorderNone; _scrollPos = _scrollSize = 0.0; + + _callback = 0; + _dataPtr = 0; } MacWindow::~MacWindow() { @@ -271,7 +274,7 @@ bool MacWindow::processEvent(Common::Event &event) { //mouseMove(event.mouse.x, event.mouse.y); break; case Common::EVENT_LBUTTONDOWN: - mouseDown(event.mouse.x, event.mouse.y); + mouseDown(event); break; case Common::EVENT_LBUTTONUP: #if 0 @@ -290,13 +293,16 @@ bool MacWindow::processEvent(Common::Event &event) { return true; } -void MacWindow::mouseDown(int x, int y) { - if (_innerDims.contains(x, y)) { - // (*callback)(x - _dims.left, y - dims.top); +void MacWindow::mouseDown(Common::Event &event) { + if (_innerDims.contains(event.mouse.x, event.mouse.y)) { + if (!_callback) + return; + + (*_callback)(kBorderInner, event, _dataPtr); return; } - WindowClick click = isInBorder(_innerDims, x, y); + WindowClick click = isInBorder(_innerDims, event.mouse.x, event.mouse.y); if (click == kBorderNone) return; @@ -304,9 +310,11 @@ void MacWindow::mouseDown(int x, int y) { setHighlight(click); if (click == kBorderScrollUp || click == kBorderScrollDown) { - // TODO - } + if (!_callback) + return; + (*_callback)(click, event, _dataPtr); + } } } // End of namespace Wage diff --git a/engines/wage/macwindow.h b/engines/wage/macwindow.h index fb2974a72f..1998bffe0c 100644 --- a/engines/wage/macwindow.h +++ b/engines/wage/macwindow.h @@ -86,6 +86,7 @@ public: void setDirty(bool dirty) { _contentIsDirty = dirty; } int getId() { return _id; } bool processEvent(Common::Event &event); + void setCallback(void (*callback)(WindowClick, Common::Event &, void *), void *data) { _callback = callback; _dataPtr = data; } private: void drawBorder(); @@ -94,7 +95,7 @@ private: const Graphics::Font *getTitleFont(); bool builtInFonts(); - void mouseDown(int x, int y); + void mouseDown(Common::Event &event); private: Graphics::ManagedSurface _surface; @@ -113,6 +114,9 @@ private: Common::Rect _innerDims; Common::String _title; + + void (*_callback)(WindowClick, Common::Event &, void *); + void *_dataPtr; }; } // End of namespace Wage |