[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