aboutsummaryrefslogtreecommitdiff
path: root/graphics/macgui/mactextwindow.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2017-08-03 09:03:09 +0200
committerEugene Sandulenko2017-08-04 21:54:20 +0200
commitc25a26d11cad273865a1ccf51f2ca8819f3e18ee (patch)
tree88a657abd46ab783e283c2969c09ec33b041c9c7 /graphics/macgui/mactextwindow.cpp
parent20734108e31d1e5a4f6431b0a444912d13f79d09 (diff)
downloadscummvm-rg350-c25a26d11cad273865a1ccf51f2ca8819f3e18ee.tar.gz
scummvm-rg350-c25a26d11cad273865a1ccf51f2ca8819f3e18ee.tar.bz2
scummvm-rg350-c25a26d11cad273865a1ccf51f2ca8819f3e18ee.zip
GRAPHICS: MACGUI: Event processing code for text selection in MacTextWindow
Diffstat (limited to 'graphics/macgui/mactextwindow.cpp')
-rw-r--r--graphics/macgui/mactextwindow.cpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 1743614730..cc7bd268c7 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -54,6 +54,7 @@ MacTextWindow::MacTextWindow(MacWindowManager *wm, const MacFont *font, int fgco
_maxWidth = maxWidth;
_inputIsDirty = true;
+ _inTextSelection = false;
_scrollPos = 0;
@@ -225,9 +226,71 @@ bool MacTextWindow::processEvent(Common::Event &event) {
return false;
}
+ if (click == kBorderInner) {
+ if (event.type == Common::EVENT_LBUTTONDOWN) {
+ startMarking(event.mouse.x, event.mouse.y);
+
+ return true;
+ } else if (event.type == Common::EVENT_LBUTTONUP) {
+ if (_inTextSelection) {
+ _inTextSelection = false;
+
+ if (_selectedText.endY == -1 ||
+ (_selectedText.endX == _selectedText.startX && _selectedText.endY == _selectedText.startY)) {
+ _selectedText.startY = _selectedText.endY = -1;
+ _contentIsDirty = true;
+ //_menu->enableCommand(kMenuEdit, kMenuActionCopy, false);
+ } else {
+ //_menu->enableCommand(kMenuEdit, kMenuActionCopy, true);
+
+ bool cutAllowed = false;
+
+ if (_selectedText.startY == _selectedText.endY && _selectedText.startY == _mactext->getLineCount() - 1)
+ cutAllowed = true;
+
+ //_menu->enableCommand(kMenuEdit, kMenuActionCut, cutAllowed);
+ //_menu->enableCommand(kMenuEdit, kMenuActionClear, cutAllowed);
+ }
+ }
+
+ return true;
+ } else if (event.type == Common::EVENT_MOUSEMOVE) {
+ if (_inTextSelection) {
+ updateTextSelection(event.mouse.x, event.mouse.y);
+ return true;
+ }
+ }
+
+ return false;
+ }
+
return MacWindow::processEvent(event);
}
+void MacTextWindow::startMarking(int x, int y) {
+ x -= getInnerDimensions().left;
+ y -= getInnerDimensions().top;
+
+ y += _scrollPos;
+
+ _mactext->getRowCol(x, y, &_selectedText.startX, &_selectedText.startY);
+
+ _selectedText.endY = -1;
+
+ _inTextSelection = true;
+}
+
+void MacTextWindow::updateTextSelection(int x, int y) {
+ x -= getInnerDimensions().left;
+ y -= getInnerDimensions().top;
+
+ y += _scrollPos;
+
+ _mactext->getRowCol(x, y, &_selectedText.endX, &_selectedText.endY);
+
+ _contentIsDirty = true;
+}
+
void MacTextWindow::undrawInput() {
for (uint i = 0; i < _inputTextHeight; i++)
_mactext->removeLastLine();