[Scummvm-git-logs] scummvm master -> 615af937df6d2b7ea7a6b24630d7adb199eb2471

sev- sev at scummvm.org
Mon Aug 14 11:29:26 CEST 2017


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
615af937df GRAPHICS: MACGUI: Initial code for MacTextWindow::cutSelection()


Commit: 615af937df6d2b7ea7a6b24630d7adb199eb2471
    https://github.com/scummvm/scummvm/commit/615af937df6d2b7ea7a6b24630d7adb199eb2471
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-14T09:19:41+02:00

Commit Message:
GRAPHICS: MACGUI: Initial code for MacTextWindow::cutSelection()

Changed paths:
    graphics/macgui/mactextwindow.cpp
    graphics/macgui/mactextwindow.h


diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 6fc9cab..a45d1d6 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);
diff --git a/graphics/macgui/mactextwindow.h b/graphics/macgui/mactextwindow.h
index f2cf8bb..6dd464e 100644
--- a/graphics/macgui/mactextwindow.h
+++ b/graphics/macgui/mactextwindow.h
@@ -71,9 +71,12 @@ public:
 
 	Common::String getSelection(bool formatted = false, bool newlines = true);
 	void clearSelection();
+	Common::String cutSelection();
 	const SelectedText *getSelectedText() { return &_selectedText; }
 
 private:
+	bool isCutAllowed();
+
 	void undrawInput();
 	void drawInput();
 	void drawSelection();





More information about the Scummvm-git-logs mailing list