aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2016-04-23 22:31:38 +0200
committerEugene Sandulenko2016-04-23 22:31:38 +0200
commit99fbda5842c331a1431172d285641fc2e8ce3257 (patch)
tree61f7bec94fc39808501bbd8859d85b5aa72a1338
parent7af4a1a05f5a36937413027996bd8d239b7eeadc (diff)
downloadscummvm-rg350-99fbda5842c331a1431172d285641fc2e8ce3257.tar.gz
scummvm-rg350-99fbda5842c331a1431172d285641fc2e8ce3257.tar.bz2
scummvm-rg350-99fbda5842c331a1431172d285641fc2e8ce3257.zip
WAGE: Implement window dragging
-rw-r--r--engines/wage/gui.h4
-rw-r--r--engines/wage/macwindow.cpp25
-rw-r--r--engines/wage/macwindow.h6
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;