From 615af937df6d2b7ea7a6b24630d7adb199eb2471 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 14 Aug 2017 09:19:41 +0200 Subject: GRAPHICS: MACGUI: Initial code for MacTextWindow::cutSelection() --- graphics/macgui/mactextwindow.cpp | 39 ++++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) (limited to 'graphics/macgui/mactextwindow.cpp') diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp index 6fc9cabf6a..a45d1d641b 100644 --- a/graphics/macgui/mactextwindow.cpp +++ b/graphics/macgui/mactextwindow.cpp @@ -234,6 +234,39 @@ void MacTextWindow::clearSelection() { _selectedText.endY = _selectedText.startY = -1; } +bool MacTextWindow::isCutAllowed() { + if (_selectedText.startRow >= (int)(_mactext->getLineCount() - _inputTextHeight) && + _selectedText.endRow >= (int)(_mactext->getLineCount() - _inputTextHeight)) + return true; + + return false; +} + +Common::String MacTextWindow::cutSelection() { + if (!isCutAllowed()) + return Common::String(""); + + SelectedText s = _selectedText; + + if (s.startY > s.endY || (s.startY == s.endY && s.startX > s.endX)) { + SWAP(s.startRow, s.endRow); + SWAP(s.startCol, s.endCol); + } + + Common::String selection = _mactext->getTextChunk(s.startRow, s.startCol, s.endRow, s.endCol, false, false); + + const char *selStart = strstr(_inputText.c_str(), selection.c_str()); + + if (!selStart) + warning("Cannot find substring '%s' in '%s'", selection.c_str(), _inputText.c_str()); + + int selPos = selStart - _inputText.c_str(); + + _inputText = Common::String(_inputText.c_str(), selPos) + Common::String(_inputText.c_str() + selPos + selection.size()); + + return selection; +} + bool MacTextWindow::processEvent(Common::Event &event) { WindowClick click = isInBorder(event.mouse.x, event.mouse.y); @@ -322,11 +355,7 @@ bool MacTextWindow::processEvent(Common::Event &event) { } else { _menu->enableCommand("Edit", "Copy", true); - bool cutAllowed = false; - - if (_selectedText.startRow >= (int)(_mactext->getLineCount() - _inputTextHeight) && - _selectedText.endRow >= (int)(_mactext->getLineCount() - _inputTextHeight)) - cutAllowed = true; + bool cutAllowed = isCutAllowed(); _menu->enableCommand("Edit", "Cut", cutAllowed); _menu->enableCommand("Edit", "Clear", cutAllowed); -- cgit v1.2.3