diff options
-rw-r--r-- | engines/wage/gui.h | 4 | ||||
-rw-r--r-- | engines/wage/macwindow.cpp | 25 | ||||
-rw-r--r-- | engines/wage/macwindow.h | 6 |
3 files changed, 32 insertions, 3 deletions
diff --git a/engines/wage/gui.h b/engines/wage/gui.h index c337b1f9f3..4816dac634 100644 --- a/engines/wage/gui.h +++ b/engines/wage/gui.h @@ -150,6 +150,8 @@ public: bool _menuDirty; Scene *_scene; + + MacWindowManager _wm; MacWindow *_sceneWindow; MacWindow *_consoleWindow; @@ -178,8 +180,6 @@ private: Common::String _undobuffer; int _inputTextLineNum; - - MacWindowManager _wm; }; } // End of namespace Wage diff --git a/engines/wage/macwindow.cpp b/engines/wage/macwindow.cpp index 7b913355ac..36c4e1063d 100644 --- a/engines/wage/macwindow.cpp +++ b/engines/wage/macwindow.cpp @@ -65,6 +65,8 @@ MacWindow::MacWindow(int id, bool scrollable) : _scrollable(scrollable), _id(id) _callback = 0; _dataPtr = 0; + + _beingDragged = false; } MacWindow::~MacWindow() { @@ -284,6 +286,9 @@ static WindowClick isInBorder(Common::Rect &rect, int x, int y) { if (x >= rect.left - kBorderWidth && x < rect.left && y >= rect.top - kBorderWidth && y < rect.top) return kBorderCloseButton; + if (y >= rect.top - kBorderWidth && y < rect.top) + return kBorderHeader; + if (x >= rect.right && x < rect.right + kBorderWidth) { if (y < rect.top - kBorderWidth) return kBorderNone; @@ -305,11 +310,31 @@ bool MacWindow::processEvent(Common::Event &event) { switch (event.type) { case Common::EVENT_MOUSEMOVE: + if (_beingDragged) { + _dims.translate(event.mouse.x - _draggedX, event.mouse.y - _draggedY); + _draggedX = event.mouse.x; + _draggedY = event.mouse.y; + + _innerDims.setWidth(0); + + ((WageEngine *)g_engine)->_gui->_wm.setFullRefresh(true); + } break; case Common::EVENT_LBUTTONDOWN: setHighlight(click); + + if (click == kBorderHeader) { + _beingDragged = true; + + _draggedX = event.mouse.x; + _draggedY = event.mouse.y; + } + break; case Common::EVENT_LBUTTONUP: + if (_beingDragged) + _beingDragged = false; + setHighlight(kBorderNone); break; default: diff --git a/engines/wage/macwindow.h b/engines/wage/macwindow.h index 27ec196f95..96a0e237f3 100644 --- a/engines/wage/macwindow.h +++ b/engines/wage/macwindow.h @@ -66,7 +66,8 @@ enum WindowClick { kBorderScrollUp, kBorderScrollDown, kBorderCloseButton, - kBorderInner + kBorderInner, + kBorderHeader }; class MacWindow { @@ -105,6 +106,9 @@ private: bool _contentIsDirty; int _id; + bool _beingDragged; + int _draggedX, _draggedY; + WindowClick _highlightedPart; float _scrollPos, _scrollSize; |