mirror of
https://github.com/scummvm/scummvm.git
synced 2026-06-20 05:45:29 +00:00
WAGE: Implement Cut and Clear actions
This commit is contained in:
@@ -348,6 +348,49 @@ void Gui::actionUndo() {
|
||||
_menu->enableCommand(kMenuEdit, kMenuActionUndo, false);
|
||||
}
|
||||
|
||||
void Gui::actionClear() {
|
||||
int startPos = _selectionStartX;
|
||||
int endPos = _selectionEndX;
|
||||
|
||||
if (startPos > endPos)
|
||||
SWAP(startPos, endPos);
|
||||
|
||||
Common::String beg(_lines[_selectionStartY].c_str(), &_lines[_selectionStartY].c_str()[startPos]);
|
||||
Common::String end(&_lines[_selectionStartY].c_str()[endPos]);
|
||||
|
||||
_undobuffer = _engine->_inputText;
|
||||
_engine->_inputText = beg + end;
|
||||
drawInput();
|
||||
|
||||
_menu->enableCommand(kMenuEdit, kMenuActionUndo, true);
|
||||
|
||||
_selectionStartY = -1;
|
||||
_selectionEndY = -1;
|
||||
}
|
||||
|
||||
void Gui::actionCut() {
|
||||
int startPos = _selectionStartX;
|
||||
int endPos = _selectionEndX;
|
||||
|
||||
if (startPos > endPos)
|
||||
SWAP(startPos, endPos);
|
||||
|
||||
Common::String beg(_lines[_selectionStartY].c_str(), &_lines[_selectionStartY].c_str()[startPos]);
|
||||
Common::String mid(&_lines[_selectionStartY].c_str()[startPos], &_lines[_selectionStartY].c_str()[endPos]);
|
||||
Common::String end(&_lines[_selectionStartY].c_str()[endPos]);
|
||||
|
||||
_undobuffer = _engine->_inputText;
|
||||
_engine->_inputText = beg + end;
|
||||
_clipboard = mid;
|
||||
drawInput();
|
||||
|
||||
_menu->enableCommand(kMenuEdit, kMenuActionUndo, true);
|
||||
_menu->enableCommand(kMenuEdit, kMenuActionPaste, true);
|
||||
|
||||
_selectionStartY = -1;
|
||||
_selectionEndY = -1;
|
||||
}
|
||||
|
||||
void Gui::disableUndo() {
|
||||
_menu->enableCommand(kMenuEdit, kMenuActionUndo, false);
|
||||
}
|
||||
|
||||
@@ -485,6 +485,14 @@ Designed *Gui::mouseUp(int x, int y) {
|
||||
_menu->enableCommand(kMenuEdit, kMenuActionCopy, false);
|
||||
} else {
|
||||
_menu->enableCommand(kMenuEdit, kMenuActionCopy, true);
|
||||
|
||||
bool cutAllowed = false;
|
||||
|
||||
if (_selectionStartY == _selectionEndY && _selectionStartY == _lines.size() - 1)
|
||||
cutAllowed = true;
|
||||
|
||||
_menu->enableCommand(kMenuEdit, kMenuActionCut, cutAllowed);
|
||||
_menu->enableCommand(kMenuEdit, kMenuActionClear, cutAllowed);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -107,6 +107,8 @@ public:
|
||||
void actionCopy();
|
||||
void actionPaste();
|
||||
void actionUndo();
|
||||
void actionClear();
|
||||
void actionCut();
|
||||
void disableUndo();
|
||||
|
||||
private:
|
||||
|
||||
@@ -519,7 +519,7 @@ void Menu::executeCommand(MenuSubItem *subitem) {
|
||||
_gui->actionUndo();
|
||||
break;
|
||||
case kMenuActionCut:
|
||||
warning("STUB: Unhandled shortcut");
|
||||
_gui->actionCut();
|
||||
break;
|
||||
case kMenuActionCopy:
|
||||
_gui->actionCopy();
|
||||
@@ -528,7 +528,7 @@ void Menu::executeCommand(MenuSubItem *subitem) {
|
||||
_gui->actionPaste();
|
||||
break;
|
||||
case kMenuActionClear:
|
||||
warning("STUB: Unhandled shortcut");
|
||||
_gui->actionClear();
|
||||
break;
|
||||
|
||||
case kMenuActionCommand:
|
||||
|
||||
Reference in New Issue
Block a user