aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2007-06-30 12:26:59 +0000
committerMax Horn2007-06-30 12:26:59 +0000
commit2243197f502c06076f493151429e3188b9c2a760 (patch)
treee80f331d5cdd944cec632a74dd081a166858b093
parent9720742722bc61bb3cb0c8240417816855ea4ef7 (diff)
downloadscummvm-rg350-2243197f502c06076f493151429e3188b9c2a760.tar.gz
scummvm-rg350-2243197f502c06076f493151429e3188b9c2a760.tar.bz2
scummvm-rg350-2243197f502c06076f493151429e3188b9c2a760.zip
Changed GUI system to use Common::KeyState state
svn-id: r27786
-rw-r--r--engines/scumm/dialogs.cpp32
-rw-r--r--engines/scumm/dialogs.h14
-rw-r--r--gui/KeysDialog.cpp14
-rw-r--r--gui/KeysDialog.h4
-rw-r--r--gui/ListWidget.cpp18
-rw-r--r--gui/ListWidget.h4
-rw-r--r--gui/PopUpWidget.cpp10
-rw-r--r--gui/TabWidget.cpp4
-rw-r--r--gui/TabWidget.h2
-rw-r--r--gui/about.cpp8
-rw-r--r--gui/about.h4
-rw-r--r--gui/console.cpp22
-rw-r--r--gui/console.h2
-rw-r--r--gui/dialog.cpp16
-rw-r--r--gui/dialog.h4
-rw-r--r--gui/editable.cpp6
-rw-r--r--gui/editable.h2
-rw-r--r--gui/launcher.cpp8
-rw-r--r--gui/launcher.h4
-rw-r--r--gui/newgui.cpp4
-rw-r--r--gui/widget.h5
21 files changed, 95 insertions, 92 deletions
diff --git a/engines/scumm/dialogs.cpp b/engines/scumm/dialogs.cpp
index 85a7a4b675..16fe72531b 100644
--- a/engines/scumm/dialogs.cpp
+++ b/engines/scumm/dialogs.cpp
@@ -825,26 +825,26 @@ PauseDialog::PauseDialog(ScummEngine *scumm, int res)
: InfoDialog(scumm, res) {
}
-void PauseDialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
- if (ascii == ' ') // Close pause dialog if space key is pressed
+void PauseDialog::handleKeyDown(Common::KeyState state) {
+ if (state.ascii == ' ') // Close pause dialog if space key is pressed
close();
else
- ScummDialog::handleKeyDown(ascii, keycode, modifiers);
+ ScummDialog::handleKeyDown(state);
}
ConfirmDialog::ConfirmDialog(ScummEngine *scumm, int res)
: InfoDialog(scumm, res) {
}
-void ConfirmDialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
- if (tolower(ascii) == 'n') {
+void ConfirmDialog::handleKeyDown(Common::KeyState state) {
+ if (state.keycode == Common::KEYCODE_n) {
setResult(0);
close();
- } else if (tolower(ascii) == 'y') {
+ } else if (state.keycode == Common::KEYCODE_y) {
setResult(1);
close();
} else
- ScummDialog::handleKeyDown(ascii, keycode, modifiers);
+ ScummDialog::handleKeyDown(state);
}
#pragma mark -
@@ -892,11 +892,11 @@ void ValueDisplayDialog::reflowLayout() {
_h = height;
}
-void ValueDisplayDialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
- if (ascii == _incKey || ascii == _decKey) {
- if (ascii == _incKey && _value < _max)
+void ValueDisplayDialog::handleKeyDown(Common::KeyState state) {
+ if (state.ascii == _incKey || state.ascii == _decKey) {
+ if (state.ascii == _incKey && _value < _max)
_value++;
- else if (ascii == _decKey && _value > _min)
+ else if (state.ascii == _decKey && _value > _min)
_value--;
setResult(_value);
@@ -924,8 +924,8 @@ void SubtitleSettingsDialog::handleTickle() {
close();
}
-void SubtitleSettingsDialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
- if (keycode == 't' && modifiers == Common::KBD_CTRL) {
+void SubtitleSettingsDialog::handleKeyDown(Common::KeyState state) {
+ if (state.keycode == 't' && state.flags == Common::KBD_CTRL) {
cycleValue();
reflowLayout();
@@ -959,11 +959,11 @@ Indy3IQPointsDialog::Indy3IQPointsDialog(ScummEngine *scumm, char* text)
: InfoDialog(scumm, text) {
}
-void Indy3IQPointsDialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
- if (ascii == 'i')
+void Indy3IQPointsDialog::handleKeyDown(Common::KeyState state) {
+ if (state.ascii == 'i')
close();
else
- ScummDialog::handleKeyDown(ascii, keycode, modifiers);
+ ScummDialog::handleKeyDown(state);
}
} // End of namespace Scumm
diff --git a/engines/scumm/dialogs.h b/engines/scumm/dialogs.h
index b69e989f8a..23c63d8992 100644
--- a/engines/scumm/dialogs.h
+++ b/engines/scumm/dialogs.h
@@ -169,8 +169,8 @@ public:
setResult(0);
close();
}
- virtual void handleKeyDown(uint16 ascii, int keycode, int modifiers) {
- setResult(ascii);
+ virtual void handleKeyDown(Common::KeyState state) {
+ setResult(state.ascii);
close();
}
@@ -189,7 +189,7 @@ protected:
class PauseDialog : public InfoDialog {
public:
PauseDialog(ScummEngine *scumm, int res);
- virtual void handleKeyDown(uint16 ascii, int keycode, int modifiers);
+ virtual void handleKeyDown(Common::KeyState state);
};
/**
@@ -199,7 +199,7 @@ public:
class ConfirmDialog : public InfoDialog {
public:
ConfirmDialog(ScummEngine *scumm, int res);
- virtual void handleKeyDown(uint16 ascii, int keycode, int modifiers);
+ virtual void handleKeyDown(Common::KeyState state);
};
/**
@@ -216,7 +216,7 @@ public:
virtual void handleMouseDown(int x, int y, int button, int clickCount) {
close();
}
- virtual void handleKeyDown(uint16 ascii, int keycode, int modifiers);
+ virtual void handleKeyDown(Common::KeyState state);
virtual void reflowLayout();
@@ -247,7 +247,7 @@ public:
virtual void handleMouseDown(int x, int y, int button, int clickCount) {
close();
}
- virtual void handleKeyDown(uint16 ascii, int keycode, int modifiers);
+ virtual void handleKeyDown(Common::KeyState state);
protected:
int _value;
uint32 _timer;
@@ -259,7 +259,7 @@ protected:
class Indy3IQPointsDialog : public InfoDialog {
public:
Indy3IQPointsDialog(ScummEngine *scumm, char* text);
- virtual void handleKeyDown(uint16 ascii, int keycode, int modifiers);
+ virtual void handleKeyDown(Common::KeyState state);
};
} // End of namespace Scumm
diff --git a/gui/KeysDialog.cpp b/gui/KeysDialog.cpp
index 33d09e4e69..9586950669 100644
--- a/gui/KeysDialog.cpp
+++ b/gui/KeysDialog.cpp
@@ -126,23 +126,23 @@ void KeysDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data) {
}
}
-void KeysDialog::handleKeyDown(uint16 ascii, int keycode, int modifiers){
+void KeysDialog::handleKeyDown(Common::KeyState state){
if (!Actions::Instance()->mappingActive())
- Dialog::handleKeyDown(ascii,keycode,modifiers);
+ Dialog::handleKeyDown(state);
}
-void KeysDialog::handleKeyUp(uint16 ascii, int keycode, int modifiers) {
+void KeysDialog::handleKeyUp(Common::KeyState state) {
#ifdef __SYMBIAN32__
if (Actions::Instance()->mappingActive()) {
#else
- if (modifiers == 0xff && Actions::Instance()->mappingActive()) { // GAPI key was selected
+ if (state.flags == 0xff && Actions::Instance()->mappingActive()) { // GAPI key was selected
#endif
char selection[100];
- Actions::Instance()->setMapping((ActionType)_actionSelected, ascii);
+ Actions::Instance()->setMapping((ActionType)_actionSelected, state.ascii);
if (ascii != 0)
- sprintf(selection, "Associated key : %s", SDL_GetKeyName((SDLKey) keycode));
+ sprintf(selection, "Associated key : %s", SDL_GetKeyName((SDLKey) state.keycode));
else
sprintf(selection, "Associated key : none");
@@ -154,7 +154,7 @@ void KeysDialog::handleKeyUp(uint16 ascii, int keycode, int modifiers) {
_actionsList->setEnabled(true);
Actions::Instance()->beginMapping(false);
} else
- Dialog::handleKeyUp(ascii,keycode,modifiers);
+ Dialog::handleKeyUp(state);
}
} // namespace GUI
diff --git a/gui/KeysDialog.h b/gui/KeysDialog.h
index f4fa4d9419..6d780e665a 100644
--- a/gui/KeysDialog.h
+++ b/gui/KeysDialog.h
@@ -38,8 +38,8 @@ public:
KeysDialog(const Common::String &title = "Choose an action to map");
virtual void handleCommand(GUI::CommandSender *sender, uint32 cmd, uint32 data);
- virtual void handleKeyUp(uint16 ascii, int keycode, int modifiers);
- virtual void handleKeyDown(uint16 ascii, int keycode, int modifiers);
+ virtual void handleKeyUp(Common::KeyState state);
+ virtual void handleKeyDown(Common::KeyState state);
protected:
diff --git a/gui/ListWidget.cpp b/gui/ListWidget.cpp
index 271cbccd94..3d5c3dee62 100644
--- a/gui/ListWidget.cpp
+++ b/gui/ListWidget.cpp
@@ -186,12 +186,12 @@ static int matchingCharsIgnoringCase(const char *x, const char *y, bool &stop) {
return match;
}
-bool ListWidget::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
+bool ListWidget::handleKeyDown(Common::KeyState state) {
bool handled = true;
bool dirty = false;
int oldSelectedItem = _selectedItem;
- if (!_editMode && isprint((char)ascii)) {
+ if (!_editMode && isprint((char)state.ascii)) {
// Quick selection mode: Go to first list item starting with this key
// (or a substring accumulated from the last couple key presses).
// Only works in a useful fashion if the list entries are sorted.
@@ -199,9 +199,9 @@ bool ListWidget::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
// method "enableQuickSelect()" or so ?
uint32 time = getMillis();
if (_quickSelectTime < time) {
- _quickSelectStr = (char)ascii;
+ _quickSelectStr = (char)state.ascii;
} else {
- _quickSelectStr += (char)ascii;
+ _quickSelectStr += (char)state.ascii;
}
_quickSelectTime = time + 300; // TODO: Turn this into a proper constant (kQuickSelectDelay ?)
@@ -227,11 +227,11 @@ bool ListWidget::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
scrollToCurrent();
} else if (_editMode) {
// Class EditableWidget handles all text editing related key presses for us
- handled = EditableWidget::handleKeyDown(ascii, keycode, modifiers);
+ handled = EditableWidget::handleKeyDown(state);
} else {
// not editmode
- switch (keycode) {
+ switch (state.keycode) {
case Common::KEYCODE_RETURN:
case Common::KEYCODE_KP_ENTER:
if (_selectedItem >= 0) {
@@ -285,14 +285,14 @@ bool ListWidget::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
#if !defined(PALMOS_MODE)
// not done on PalmOS because keyboard is emulated and keyup is not generated
- _currentKeyDown = keycode;
+ _currentKeyDown = state.keycode;
#endif
return handled;
}
-bool ListWidget::handleKeyUp(uint16 ascii, int keycode, int modifiers) {
- if (keycode == _currentKeyDown)
+bool ListWidget::handleKeyUp(Common::KeyState state) {
+ if (state.keycode == _currentKeyDown)
_currentKeyDown = 0;
return true;
}
diff --git a/gui/ListWidget.h b/gui/ListWidget.h
index a8656061d3..fe3dd4cd7e 100644
--- a/gui/ListWidget.h
+++ b/gui/ListWidget.h
@@ -92,8 +92,8 @@ public:
virtual void handleMouseDown(int x, int y, int button, int clickCount);
virtual void handleMouseUp(int x, int y, int button, int clickCount);
virtual void handleMouseWheel(int x, int y, int direction);
- virtual bool handleKeyDown(uint16 ascii, int keycode, int modifiers);
- virtual bool handleKeyUp(uint16 ascii, int keycode, int modifiers);
+ virtual bool handleKeyDown(Common::KeyState state);
+ virtual bool handleKeyUp(Common::KeyState state);
virtual void handleCommand(CommandSender *sender, uint32 cmd, uint32 data);
virtual void reflowLayout();
diff --git a/gui/PopUpWidget.cpp b/gui/PopUpWidget.cpp
index d40a01c981..ac91376269 100644
--- a/gui/PopUpWidget.cpp
+++ b/gui/PopUpWidget.cpp
@@ -58,7 +58,7 @@ public:
void handleMouseUp(int x, int y, int button, int clickCount);
void handleMouseWheel(int x, int y, int direction); // Scroll through entries with scroll wheel
void handleMouseMoved(int x, int y, int button); // Redraw selections depending on mouse position
- void handleKeyDown(uint16 ascii, int keycode, int modifiers); // Scroll through entries with arrow keys etc.
+ void handleKeyDown(Common::KeyState state); // Scroll through entries with arrow keys etc.
protected:
void drawMenuEntry(int entry, bool hilite);
@@ -210,8 +210,8 @@ void PopUpDialog::handleMouseMoved(int x, int y, int button) {
setSelection(item);
}
-void PopUpDialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
- if (keycode == Common::KEYCODE_ESCAPE) {
+void PopUpDialog::handleKeyDown(Common::KeyState state) {
+ if (state.keycode == Common::KEYCODE_ESCAPE) {
// Don't change the previous selection
setResult(-1);
close();
@@ -221,7 +221,7 @@ void PopUpDialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
if (isMouseDown())
return;
- switch (keycode) {
+ switch (state.keycode) {
case Common::KEYCODE_RETURN:
case Common::KEYCODE_KP_ENTER:
setResult(_selection);
@@ -239,6 +239,8 @@ void PopUpDialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
case Common::KEYCODE_END:
setSelection(_popUpBoss->_entries.size()-1);
break;
+ default:
+ break;
}
}
diff --git a/gui/TabWidget.cpp b/gui/TabWidget.cpp
index 38ea6229ec..c414f6bf3b 100644
--- a/gui/TabWidget.cpp
+++ b/gui/TabWidget.cpp
@@ -198,11 +198,11 @@ void TabWidget::handleMouseDown(int x, int y, int button, int clickCount) {
}
}
-bool TabWidget::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
+bool TabWidget::handleKeyDown(Common::KeyState state) {
// TODO: maybe there should be a way to switch between tabs
// using the keyboard? E.g. Alt-Shift-Left/Right-Arrow or something
// like that.
- return Widget::handleKeyDown(ascii, keycode, modifiers);
+ return Widget::handleKeyDown(state);
}
void TabWidget::reflowLayout() {
diff --git a/gui/TabWidget.h b/gui/TabWidget.h
index 928f7916b6..a8c5e07525 100644
--- a/gui/TabWidget.h
+++ b/gui/TabWidget.h
@@ -87,7 +87,7 @@ public:
void setActiveTab(int tabID);
virtual void handleMouseDown(int x, int y, int button, int clickCount);
- virtual bool handleKeyDown(uint16 ascii, int keycode, int modifiers);
+ virtual bool handleKeyDown(Common::KeyState state);
virtual void handleCommand(CommandSender *sender, uint32 cmd, uint32 data);
virtual void reflowLayout();
diff --git a/gui/about.cpp b/gui/about.cpp
index 31381cadd5..780091f35d 100644
--- a/gui/about.cpp
+++ b/gui/about.cpp
@@ -302,13 +302,13 @@ void AboutDialog::handleMouseUp(int x, int y, int button, int clickCount) {
close();
}
-void AboutDialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
- if (ascii)
+void AboutDialog::handleKeyDown(Common::KeyState state) {
+ if (state.ascii)
_willClose = true;
}
-void AboutDialog::handleKeyUp(uint16 ascii, int keycode, int modifiers) {
- if (ascii && _willClose)
+void AboutDialog::handleKeyUp(Common::KeyState state) {
+ if (state.ascii && _willClose)
close();
}
diff --git a/gui/about.h b/gui/about.h
index a1ee96b090..d62510b1a6 100644
--- a/gui/about.h
+++ b/gui/about.h
@@ -52,8 +52,8 @@ public:
void drawDialog();
void handleTickle();
void handleMouseUp(int x, int y, int button, int clickCount);
- void handleKeyDown(uint16 ascii, int keycode, int modifiers);
- void handleKeyUp(uint16 ascii, int keycode, int modifiers);
+ void handleKeyDown(Common::KeyState state);
+ void handleKeyUp(Common::KeyState state);
void reflowLayout();
};
diff --git a/gui/console.cpp b/gui/console.cpp
index b7c257d3ce..04a1103628 100644
--- a/gui/console.cpp
+++ b/gui/console.cpp
@@ -258,13 +258,13 @@ void ConsoleDialog::handleMouseWheel(int x, int y, int direction) {
_scrollBar->handleMouseWheel(x, y, direction);
}
-void ConsoleDialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
+void ConsoleDialog::handleKeyDown(Common::KeyState state) {
int i;
if (_slideMode != kNoSlideMode)
return;
- switch (keycode) {
+ switch (state.keycode) {
case Common::KEYCODE_RETURN:
case Common::KEYCODE_KP_ENTER: {
if (_caretVisible)
@@ -351,7 +351,7 @@ void ConsoleDialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
drawLine(pos2line(_currentPos));
break;
case Common::KEYCODE_PAGEUP:
- if (modifiers == Common::KBD_SHIFT) {
+ if (state.flags == Common::KBD_SHIFT) {
_scrollLine -= _linesPerPage - 1;
if (_scrollLine < _firstLineInBuffer + _linesPerPage - 1)
_scrollLine = _firstLineInBuffer + _linesPerPage - 1;
@@ -360,7 +360,7 @@ void ConsoleDialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
}
break;
case Common::KEYCODE_PAGEDOWN:
- if (modifiers == Common::KBD_SHIFT) {
+ if (state.flags == Common::KBD_SHIFT) {
_scrollLine += _linesPerPage - 1;
if (_scrollLine > _promptEndPos / kCharsPerLine) {
_scrollLine = _promptEndPos / kCharsPerLine;
@@ -372,7 +372,7 @@ void ConsoleDialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
}
break;
case Common::KEYCODE_HOME:
- if (modifiers == Common::KBD_SHIFT) {
+ if (state.flags == Common::KBD_SHIFT) {
_scrollLine = _firstLineInBuffer + _linesPerPage - 1;
updateScrollBuffer();
} else {
@@ -381,7 +381,7 @@ void ConsoleDialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
draw();
break;
case Common::KEYCODE_END:
- if (modifiers == Common::KBD_SHIFT) {
+ if (state.flags == Common::KBD_SHIFT) {
_scrollLine = _promptEndPos / kCharsPerLine;
if (_scrollLine < _linesPerPage - 1)
_scrollLine = _linesPerPage - 1;
@@ -408,15 +408,15 @@ void ConsoleDialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
drawLine(pos2line(_currentPos));
break;
default:
- if (ascii == '~' || ascii == '#') {
+ if (state.ascii == '~' || state.ascii == '#') {
slideUpAndClose();
- } else if (modifiers == Common::KBD_CTRL) {
- specialKeys(keycode);
- } else if ((ascii >= 32 && ascii <= 127) || (ascii >= 160 && ascii <= 255)) {
+ } else if (state.flags == Common::KBD_CTRL) {
+ specialKeys(state.keycode);
+ } else if ((state.ascii >= 32 && state.ascii <= 127) || (state.ascii >= 160 && state.ascii <= 255)) {
for (i = _promptEndPos - 1; i >= _currentPos; i--)
buffer(i + 1) = buffer(i);
_promptEndPos++;
- putchar((byte)ascii);
+ putchar((byte)state.ascii);
scrollToCurrent();
}
}
diff --git a/gui/console.h b/gui/console.h
index ea28e5b449..c683a1f619 100644
--- a/gui/console.h
+++ b/gui/console.h
@@ -140,7 +140,7 @@ public:
void handleTickle();
void reflowLayout();
void handleMouseWheel(int x, int y, int direction);
- void handleKeyDown(uint16 ascii, int keycode, int modifiers);
+ void handleKeyDown(Common::KeyState state);
void handleCommand(CommandSender *sender, uint32 cmd, uint32 data);
int printf(const char *format, ...);
diff --git a/gui/dialog.cpp b/gui/dialog.cpp
index 1afd18ec52..f643e6f988 100644
--- a/gui/dialog.cpp
+++ b/gui/dialog.cpp
@@ -211,18 +211,18 @@ void Dialog::handleMouseWheel(int x, int y, int direction) {
w->handleMouseWheel(x, y, direction);
}
-void Dialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
+void Dialog::handleKeyDown(Common::KeyState state) {
if (_focusedWidget) {
- if (_focusedWidget->handleKeyDown(ascii, keycode, modifiers))
+ if (_focusedWidget->handleKeyDown(state))
return;
}
// Hotkey handling
- if (ascii != 0) {
+ if (state.ascii != 0) {
Widget *w = _firstWidget;
- ascii = toupper(ascii);
+ state.ascii = toupper(state.ascii);
while (w) {
- if (w->_type == kButtonWidget && ascii == toupper(((ButtonWidget *)w)->_hotkey)) {
+ if (w->_type == kButtonWidget && state.ascii == toupper(((ButtonWidget *)w)->_hotkey)) {
// The hotkey for widget w was pressed. We fake a mouse click into the
// button by invoking the appropriate methods.
w->handleMouseDown(0, 0, 1, 1);
@@ -234,7 +234,7 @@ void Dialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
}
// ESC closes all dialogs by default
- if (keycode == Common::KEYCODE_ESCAPE) {
+ if (state.keycode == Common::KEYCODE_ESCAPE) {
setResult(-1);
close();
}
@@ -242,10 +242,10 @@ void Dialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
// TODO: tab/shift-tab should focus the next/previous focusable widget
}
-void Dialog::handleKeyUp(uint16 ascii, int keycode, int modifiers) {
+void Dialog::handleKeyUp(Common::KeyState state) {
// Focused widget receives keyup events
if (_focusedWidget)
- _focusedWidget->handleKeyUp(ascii, keycode, modifiers);
+ _focusedWidget->handleKeyUp(state);
}
void Dialog::handleMouseMoved(int x, int y, int button) {
diff --git a/gui/dialog.h b/gui/dialog.h
index 1c97b4b185..418e3b8e63 100644
--- a/gui/dialog.h
+++ b/gui/dialog.h
@@ -77,8 +77,8 @@ protected:
virtual void handleMouseDown(int x, int y, int button, int clickCount);
virtual void handleMouseUp(int x, int y, int button, int clickCount);
virtual void handleMouseWheel(int x, int y, int direction);
- virtual void handleKeyDown(uint16 ascii, int keycode, int modifiers);
- virtual void handleKeyUp(uint16 ascii, int keycode, int modifiers);
+ virtual void handleKeyDown(Common::KeyState state);
+ virtual void handleKeyUp(Common::KeyState state);
virtual void handleMouseMoved(int x, int y, int button);
virtual void handleCommand(CommandSender *sender, uint32 cmd, uint32 data);
diff --git a/gui/editable.cpp b/gui/editable.cpp
index a8638b8b48..1333bf0a9d 100644
--- a/gui/editable.cpp
+++ b/gui/editable.cpp
@@ -85,7 +85,7 @@ void EditableWidget::handleTickle() {
}
}
-bool EditableWidget::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
+bool EditableWidget::handleKeyDown(Common::KeyState state) {
bool handled = true;
bool dirty = false;
bool forcecaret = false;
@@ -94,7 +94,7 @@ bool EditableWidget::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
if (_caretVisible)
drawCaret(true);
- switch (keycode) {
+ switch (state.keycode) {
case Common::KEYCODE_RETURN:
case Common::KEYCODE_KP_ENTER:
// confirm edit and exit editmode
@@ -143,7 +143,7 @@ bool EditableWidget::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
forcecaret = true;
break;
default:
- if (tryInsertChar((byte)ascii, _caretPos)) {
+ if (tryInsertChar((byte)state.ascii, _caretPos)) {
_caretPos++;
dirty = true;
forcecaret = true;
diff --git a/gui/editable.h b/gui/editable.h
index a56b079662..c8ef8a80cb 100644
--- a/gui/editable.h
+++ b/gui/editable.h
@@ -63,7 +63,7 @@ public:
virtual const String &getEditString() const { return _editString; }
virtual void handleTickle();
- virtual bool handleKeyDown(uint16 ascii, int keycode, int modifiers);
+ virtual bool handleKeyDown(Common::KeyState state);
virtual void reflowLayout();
diff --git a/gui/launcher.cpp b/gui/launcher.cpp
index 1b36ccff76..af35fb46b0 100644
--- a/gui/launcher.cpp
+++ b/gui/launcher.cpp
@@ -789,13 +789,13 @@ void LauncherDialog::editGame(int item) {
}
}
-void LauncherDialog::handleKeyDown(uint16 ascii, int keycode, int modifiers) {
- Dialog::handleKeyDown(ascii, keycode, modifiers);
+void LauncherDialog::handleKeyDown(Common::KeyState state) {
+ Dialog::handleKeyDown(state);
updateButtons();
}
-void LauncherDialog::handleKeyUp(uint16 ascii, int keycode, int modifiers) {
- Dialog::handleKeyUp(ascii, keycode, modifiers);
+void LauncherDialog::handleKeyUp(Common::KeyState state) {
+ Dialog::handleKeyUp(state);
updateButtons();
}
diff --git a/gui/launcher.h b/gui/launcher.h
index 5ccf9cb422..164a7e0707 100644
--- a/gui/launcher.h
+++ b/gui/launcher.h
@@ -47,8 +47,8 @@ public:
virtual void handleCommand(CommandSender *sender, uint32 cmd, uint32 data);
- virtual void handleKeyDown(uint16 ascii, int keycode, int modifiers);
- virtual void handleKeyUp(uint16 ascii, int keycode, int modifiers);
+ virtual void handleKeyDown(Common::KeyState state);
+ virtual void handleKeyUp(Common::KeyState state);
protected:
ListWidget *_list;
diff --git a/gui/newgui.cpp b/gui/newgui.cpp
index ad1933863a..51d67b8769 100644
--- a/gui/newgui.cpp
+++ b/gui/newgui.cpp
@@ -272,10 +272,10 @@ void NewGui::runLoop() {
switch (event.type) {
case Common::EVENT_KEYDOWN:
- activeDialog->handleKeyDown(event.kbd.ascii, event.kbd.keycode, event.kbd.flags);
+ activeDialog->handleKeyDown(event.kbd);
break;
case Common::EVENT_KEYUP:
- activeDialog->handleKeyUp(event.kbd.ascii, event.kbd.keycode, event.kbd.flags);
+ activeDialog->handleKeyUp(event.kbd);
break;
case Common::EVENT_MOUSEMOVE:
activeDialog->handleMouseMoved(mouse.x, mouse.y, 0);
diff --git a/gui/widget.h b/gui/widget.h
index bf15081f79..c19059d32c 100644
--- a/gui/widget.h
+++ b/gui/widget.h
@@ -27,6 +27,7 @@
#include "common/scummsys.h"
#include "common/str.h"
+#include "common/keyboard.h"
#include "graphics/font.h"
#include "graphics/surface.h"
#include "gui/object.h"
@@ -127,8 +128,8 @@ public:
virtual void handleMouseLeft(int button) {}
virtual void handleMouseMoved(int x, int y, int button) {}
virtual void handleMouseWheel(int x, int y, int direction) {}
- virtual bool handleKeyDown(uint16 ascii, int keycode, int modifiers) { return false; } // Return true if the event was handled
- virtual bool handleKeyUp(uint16 ascii, int keycode, int modifiers) { return false; } // Return true if the event was handled
+ virtual bool handleKeyDown(Common::KeyState state) { return false; } // Return true if the event was handled
+ virtual bool handleKeyUp(Common::KeyState state) { return false; } // Return true if the event was handled
virtual void handleTickle() {}
virtual void reflowLayout() { GuiObject::reflowLayout(); }