[Scummvm-cvs-logs] CVS: scummvm/gui ListWidget.cpp,1.5,1.6 ScrollBarWidget.cpp,1.3,1.4 dialog.cpp,1.18,1.19 widget.cpp,1.14,1.15 ListWidget.h,1.5,1.6 ScrollBarWidget.h,1.2,1.3 dialog.h,1.9,1.10 widget.h,1.12,1.13

Max Horn fingolfin at users.sourceforge.net
Sat Jul 13 11:33:02 CEST 2002


Update of /cvsroot/scummvm/scummvm/gui
In directory usw-pr-cvs1:/tmp/cvs-serv7919/gui

Modified Files:
	ListWidget.cpp ScrollBarWidget.cpp dialog.cpp widget.cpp 
	ListWidget.h ScrollBarWidget.h dialog.h widget.h 
Log Message:
took painelf's change, modified it a lot, and now here's the result :-)

Index: ListWidget.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/ListWidget.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- ListWidget.cpp	13 Jul 2002 12:02:10 -0000	1.5
+++ ListWidget.cpp	13 Jul 2002 18:32:08 -0000	1.6
@@ -83,7 +83,7 @@
 {
 }
 
-void ListWidget::handleClick(int x, int y, int button)
+void ListWidget::handleMouseDown(int x, int y, int button)
 {
 	if (_flags & WIDGET_ENABLED) {
 		_selectedItem = (y - 2) / LINE_HEIGHT + _currentPos;
@@ -91,7 +91,7 @@
 	}
 }
 
-void ListWidget::handleKey(char key, int modifiers)
+void ListWidget::handleKeyDown(char key, int modifiers)
 {
 }
 

Index: ScrollBarWidget.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/ScrollBarWidget.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- ScrollBarWidget.cpp	12 Jul 2002 23:04:54 -0000	1.3
+++ ScrollBarWidget.cpp	13 Jul 2002 18:32:08 -0000	1.4
@@ -68,7 +68,7 @@
 
 }
 
-void ScrollBarWidget::handleClick(int x, int y, int button)
+void ScrollBarWidget::handleMouseDown(int x, int y, int button)
 {
 	int old_pos = _currentPos;
 
@@ -97,11 +97,14 @@
 	}
 }
 
-void ScrollBarWidget::handleMouseMoved(int x, int y, int button)
+void ScrollBarWidget::handleMouseUp(int x, int y, int button)
 {
-	if (button == 0)
+	if (_isDraggingSlider)
 		_isDraggingSlider = false;
+}
 
+void ScrollBarWidget::handleMouseMoved(int x, int y, int button)
+{
 	if (_isDraggingSlider) {
 		int old_pos = _currentPos;
 		_sliderPos = y - _sliderDeltaMouseDownPos;

Index: dialog.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/dialog.cpp,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- dialog.cpp	13 Jul 2002 12:02:10 -0000	1.18
+++ dialog.cpp	13 Jul 2002 18:32:08 -0000	1.19
@@ -80,25 +80,38 @@
 	}
 }
 
-void Dialog::handleClick(int x, int y, int button)
+void Dialog::handleMouseDown(int x, int y, int button)
 {
+	// FIXME: If outside focused widget, widget loses focus
+
 	Widget *w = findWidget(x - _x, y - _y);
 	if (w)
-		w->handleClick(x - _x - w->_x, y - _y - w->_y, button);
+		w->handleMouseDown(x - _x - w->_x, y - _y - w->_y, button);
 }
 
-void Dialog::handleKey(char key, int modifiers)
+void Dialog::handleMouseUp(int x, int y, int button)
+{
+	Widget *w = findWidget(x - _x, y - _y);
+	if (w)
+		w->handleMouseUp(x - _x - w->_x, y - _y - w->_y, button);
+}
+
+void Dialog::handleKeyDown(char key, int modifiers)
 {
 	// ESC closes all dialogs by default
 	if (key == 27)
 		close();
 	
+	// FIXME: Only if not focused widget
+
 	// Hotkey handling
 	Widget *w = _firstWidget;
 	key = toupper(key);
 	while (w) {
 		if (w->_type == kButtonWidget && key == toupper(((ButtonWidget *)w)->_hotkey)) {
-			w->handleClick(0, 0, 1);
+			// FIXME: Calling both handlers is bad style, but we don't really know which one we're supposed to call
+			w->handleMouseDown(0, 0, 1);
+			w->handleMouseUp(0, 0, 1);
 			break;
 		}
 		w = w->_next;
@@ -109,6 +122,11 @@
 	// and also for an editable list widget.
 }
 
+void Dialog::handleKeyUp(char key, int modifiers)
+{
+	// FIXME: Focused widget recieves keyup
+}
+
 void Dialog::handleMouseMoved(int x, int y, int button)
 {
 	Widget *w = findWidget(x - _x, y - _y);
@@ -127,6 +145,8 @@
 	if (w->getFlags() & WIDGET_TRACK_MOUSE) {
 		w->handleMouseMoved(x - _x - w->_x, y - _y - w->_y, button);
 	}
+
+	//FIXME: Focused widget recieves mouseup
 }
 
 

Index: widget.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/widget.cpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- widget.cpp	12 Jul 2002 16:24:11 -0000	1.14
+++ widget.cpp	13 Jul 2002 18:32:08 -0000	1.15
@@ -127,7 +127,7 @@
 	}
 }
 
-void ButtonWidget::handleClick(int x, int y, int button)
+void ButtonWidget::handleMouseDown(int x, int y, int button)
 {
 	if (_flags & WIDGET_ENABLED)
 		sendCommand(_cmd, 0);
@@ -155,7 +155,7 @@
 	_type = kCheckboxWidget;
 }
 
-void CheckboxWidget::handleClick(int x, int y, int button)
+void CheckboxWidget::handleMouseDown(int x, int y, int button)
 {
 	if (_flags & WIDGET_ENABLED) {
 		_state = !_state;
@@ -190,8 +190,8 @@
 	_type = kSliderWidget;
 }
 
-void SliderWidget::handleMouseMoved(int x, int y, int state) { 
-	if (state == 1) {
+void SliderWidget::handleMouseMoved(int x, int y, int button) { 
+	if (_isDragging) {
 		int newvalue = x * 100 / _w;
 
 		if (newvalue != _value) {
@@ -216,4 +216,19 @@
 
 	// Draw the 'bar'
 	gui->fillRect(_x + 2 + ((_w - 5) * _value / 100), _y + 2, 2, _h - 4, hilite ? gui->_textcolorhi : gui->_textcolor);
+}
+
+void SliderWidget::handleMouseDown(int x, int y, int button) {
+	int barx;
+
+	barx=2 + ((_w - 5) * _old_value / 100);
+	
+	// only start dragging if mouse is over bar
+	if (x > (barx-3) && x < (barx+3))
+		_isDragging=true;
+}
+
+void SliderWidget::handleMouseUp(int x, int y, int button) {
+	if (_isDragging)
+		_isDragging=false;
 }

Index: ListWidget.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/ListWidget.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- ListWidget.h	13 Jul 2002 12:02:10 -0000	1.5
+++ ListWidget.h	13 Jul 2002 18:32:08 -0000	1.6
@@ -51,8 +51,8 @@
 	int getSelected() const						{ return _selectedItem; }
 	void setNumberingMode(int numberingMode)	{ _numberingMode = numberingMode; }
 	
-	virtual void handleClick(int x, int y, int button);
-	virtual void handleKey(char key, int modifiers);
+	virtual void handleMouseDown(int x, int y, int button);
+	virtual void handleKeyDown(char key, int modifiers);
 	virtual void handleCommand(CommandSender *sender, uint32 cmd, uint32 data);
 
 protected:

Index: ScrollBarWidget.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/ScrollBarWidget.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- ScrollBarWidget.h	12 Jul 2002 23:00:35 -0000	1.2
+++ ScrollBarWidget.h	13 Jul 2002 18:32:08 -0000	1.3
@@ -54,13 +54,14 @@
 	int		_currentPos;
 public:
 	ScrollBarWidget(Dialog *boss, int x, int y, int w, int h);
-//	virtual ~ScrollBarWidget();
 
-	void handleClick(int x, int y, int button);
+	void handleMouseDown(int x, int y, int button);
+	void handleMouseUp(int x, int y, int button);
 	void handleMouseMoved(int x, int y, int button);
 	void handleMouseEntered(int button)	{ setFlags(WIDGET_HILITED); }
-	void handleMouseLeft(int button)	{ clearFlags(WIDGET_HILITED); _part = kNoPart; _isDraggingSlider = false; draw(); }
+	void handleMouseLeft(int button)	{ clearFlags(WIDGET_HILITED); _part = kNoPart; draw(); }
 
+	// FIXME: Shouldn't these be private?
 	void recalc();
 
 protected:

Index: dialog.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/dialog.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- dialog.h	13 Jul 2002 09:19:23 -0000	1.9
+++ dialog.h	13 Jul 2002 18:32:08 -0000	1.10
@@ -53,8 +53,10 @@
 	virtual void draw();
 
 	//virtual void handleIdle(); // Called periodically
-	virtual void handleClick(int x, int y, int button);
-	virtual void handleKey(char key, int modifiers); // modifiers = alt/shift/ctrl etc.
+	virtual void handleMouseDown(int x, int y, int button);
+	virtual void handleMouseUp(int x, int y, int button);
+	virtual void handleKeyDown(char key, int modifiers); // modifiers = alt/shift/ctrl etc.
+	virtual void handleKeyUp(char key, int modifiers); // modifiers = alt/shift/ctrl etc.
 	virtual void handleMouseMoved(int x, int y, int button);
 	virtual void handleCommand(CommandSender *sender, uint32 cmd, uint32 data);
 	
@@ -102,14 +104,14 @@
 public:
 	PauseDialog(NewGui *gui);
 
-	virtual void handleClick(int x, int y, int button)
+	virtual void handleMouseDown(int x, int y, int button)
 		{ close(); }
-	virtual void handleKey(char key, int modifiers)
+	virtual void handleKeyDown(char key, int modifiers)
 		{
 			if (key == 32)
 				close();
 			else
-				Dialog::handleKey(key, modifiers);
+				Dialog::handleKeyDown(key, modifiers);
 		}
 };
 

Index: widget.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/widget.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- widget.h	13 Jul 2002 09:19:23 -0000	1.12
+++ widget.h	13 Jul 2002 18:32:08 -0000	1.13
@@ -86,11 +86,13 @@
 	Widget(Dialog *boss, int x, int y, int w, int h);
 	virtual ~Widget() {}
 
-	virtual void handleClick(int x, int y, int button) {}
+	virtual void handleMouseDown(int x, int y, int button) {}
+	virtual void handleMouseUp(int x, int y, int button) {}
 	virtual void handleMouseEntered(int button) {}
 	virtual void handleMouseLeft(int button) {}
 	virtual void handleMouseMoved(int x, int y, int button) {}
-	virtual void handleKey(char key, int modifiers) {}
+	virtual void handleKeyDown(char key, int modifiers) {}
+	virtual void handleKeyUp(char key, int modifiers) {}
 	void draw();
 
 	void setFlags(int flags)	{ _flags |= flags; }
@@ -130,7 +132,7 @@
 	void setCmd(uint32 cmd)					{ _cmd = cmd; }
 	uint32 getCmd() const					{ return _cmd; }
 
-	void handleClick(int x, int y, int button);
+	void handleMouseDown(int x, int y, int button);
 	void handleMouseEntered(int button)	{ setFlags(WIDGET_HILITED); draw(); }
 	void handleMouseLeft(int button)	{ clearFlags(WIDGET_HILITED); draw(); }
 };
@@ -144,7 +146,7 @@
 	void setState(bool state)	{ _state = state; }
 	bool getState() const		{ return _state; }
 
-	void handleClick(int x, int y, int button);
+	void handleMouseDown(int x, int y, int button);
 	virtual void handleMouseEntered(int button)	{}
 	virtual void handleMouseLeft(int button)	{}
 
@@ -156,12 +158,15 @@
 class SliderWidget : public ButtonWidget {
 protected:
 	uint8	_value, _old_value;
+	bool	_isDragging;
 public:
 	SliderWidget(Dialog *boss, int x, int y, int w, int h, const char *label, uint32 cmd = 0, uint8 hotkey = 0);
 	void setValue(uint8 value)	{ _value = value; }
 	uint8 getValue() const		{ return _value; }
 
 	void handleMouseMoved(int x, int y, int button);
+	void handleMouseDown(int x, int y, int button);
+	void handleMouseUp(int x, int y, int button);
 
 protected:
 	void drawWidget(bool hilite);





More information about the Scummvm-git-logs mailing list