[Scummvm-cvs-logs] scummvm master -> 99fbda5842c331a1431172d285641fc2e8ce3257

sev- sev at scummvm.org
Sat Apr 23 22:31:58 CEST 2016


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
99fbda5842 WAGE: Implement window dragging


Commit: 99fbda5842c331a1431172d285641fc2e8ce3257
    https://github.com/scummvm/scummvm/commit/99fbda5842c331a1431172d285641fc2e8ce3257
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-04-23T22:31:38+02:00

Commit Message:
WAGE: Implement window dragging

Changed paths:
    engines/wage/gui.h
    engines/wage/macwindow.cpp
    engines/wage/macwindow.h



diff --git a/engines/wage/gui.h b/engines/wage/gui.h
index c337b1f..4816dac 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 7b91335..36c4e10 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 27ec196..96a0e23 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;
 






More information about the Scummvm-git-logs mailing list