[Scummvm-git-logs] scummvm master -> dfaadb176385761503906bdc90a1916c6c7e628e
sev-
sev at scummvm.org
Fri Aug 4 22:05:30 CEST 2017
This automated email contains information about 56 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
4897f6618b GRAPHICS: MACGUI: Pass default formatting to MacText
77932d5838 GRAPHICS: MACGUI: Mark content as dirty when text is changed
fe8ef60e08 GRAPHICS: MACGUI: Added more debug output to MacText
2e458671f6 GRAPHICS: MACGUI: Fix copy/paste bug in MacText
e236db8c3f GRAPHICS: MACGUI: Fixed appendText() in MacGui: formatting was not passed
cb48575c91 WAGE: Switched console rendering to MacTextWindow
a95899c1b6 GRAPHICS: MACGUI: Fix formatting of the first added text in MacText
61eb58186c GRAPHICS: MACGUI: Cleanup
bc8d059f38 GRAPHICS: MACGUI: Draw input on MacTextWindow redraw
737c2e4f88 WAGE: Now we need to render newline at the end of each text
94a57f534f WAGE: Make drawInput() a noop with MacTextWindow
f79a7d049b GRAPHICS: MACGUI: Fixed input line replacement in MacTextWindow
50078a808c GRAPHICS: MACGUI: Remove unused variable
b8f6ce5f00 WAGE: Remove redundant code
47d87e059d GRAPHICS: MACGUI: Fix input text displaying
b6970ade92 GRAPHICS: MACGUI: Remove redundant method from MacTextWindow
8609572b87 GRAPHICS: MACGUI: Correctly set MacTextWindow internal MacText size
d9e7cbaf96 GRAPHICS: MACGUI: Implement MacText resize
59d6b63b0f GRAPHICS: MACGUI: undraw input text before resizing MacTextWindow
4e044d7bd3 GRAPHICS: MACGUI: Do not add input line to the original MacText content
7333a68636 GRAPHICS: MACGUI: Fix bug in MacText with adding newlines
df36b2d7e0 GRAPHICS: MACGUI: Clear rendered text when lines are removed in MacText
ef1ea04b8c GRAPHICS: MACGUI: Fixed Enter key behavior in MacTextWindow
91615eb940 WAGE: Remove now redundant input processing
085eea68c3 GRAPHICS: MACGUI: Use proper dimensions for maxTextWidth in MacTextWindow
d4207b1e62 GRAPHICS: MACGUI: Implement autoscrolling in MacTextWindow
e316fb4b16 GRAPHICS: MACGUI: Do not pass to the upstream backspace key event in MacTextWindow
7b7117d5b8 GRAPHICS: MACGUI: Implement scrolling in MacTextWindow
04bb7c3e7a GRAPHICS: MACGUI: Reduce constant scope
20734108e3 GRAPHICS: MACGUI: Incapsulate MacWindow internals
c25a26d11c GRAPHICS: MACGUI: Event processing code for text selection in MacTextWindow
08293015e7 GRAPHICS: MACGUI: Implement MacText::getRowCol() method
db38a36369 WAGE: Remove redundant call
c5da0bece4 GRAPHICS: MACGUI: Remove redundant method from MacTextWindow
b3c8a8e129 GRAPHICS: MACGUI: Align and store MacText selection coordinates
145b7c9ec9 GRAPHICS: MACGUI: Initial selection drawing code to MacTextWindow
49ad5ff0cf GRAPHICS: MACGUI: Do not draw text selection at beginning of selection
0be9566a5a GRAPHICS: MACGUI: Simplified selection drawing code
71aadb5645 GRAPHICS: MACGUI: Correctly calculate row in MacText::getRowCol()
676b6082ab GRAPHICS: GUI: Mark beginning and end column of selection in MacTextWindow
aab404864e GRAPHICS: GUI: Fix flicker in selection
afb664df29 GRAPHICS: MACGUI: Made selection affecting the MacMenu
66f59aa893 GRAPHICS: MACGUI: Correctly display selection during scrolling
23649e8d87 GRAPHICS: MACGUI: Initial code for copying selection to clipboard
951244ac3f WAGE: Use MacTextWindow code for copying to clipboard
a5fa164b8e GRAPHICS: MACGUI: Bugfixes for selection copying in MacText
dd2123f8bf GRAPHICS: MACGUI: Added method to append input to MacTextWindow
532af0bb60 WAGE: Use MacTextWindow for Undo and Paste
b284895100 GRAPHICS: MACGUI: Leave text highlight after selection is made
55a241494e GRAPHICS: MACGUI: Improved text selection edge case behaviour
9e81f4de89 GRAPHICS: MACGUI: Better selection row detection
410efd9ff5 GRAPHICS: MACGUI: Fix detection for Cut command enablement
c7f83cd435 GRAPHICS: MACGUI: Fix end line text selection hihglight
1241ada63a GRAPHICS: MACGUI: Fixed bug with column detection in text selection
2aac665a2b GRAPHICS: MACGUI: Fix displaying two line text selections
dfaadb1763 GRAPHICS: MACGUI: Fix compilation
Commit: 4897f6618b6d4613f54a1ea323231454ece0c0c3
https://github.com/scummvm/scummvm/commit/4897f6618b6d4613f54a1ea323231454ece0c0c3
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
GRAPHICS: MACGUI: Pass default formatting to MacText
Changed paths:
graphics/macgui/mactext.h
graphics/macgui/mactextwindow.cpp
diff --git a/graphics/macgui/mactext.h b/graphics/macgui/mactext.h
index fdb90d4..8e25dcf 100644
--- a/graphics/macgui/mactext.h
+++ b/graphics/macgui/mactext.h
@@ -95,6 +95,10 @@ public:
int getInterLinear() { return _interLinear; }
void setInterLinear(int interLinear);
+ void setDefaultFormatting(uint16 fontId_, byte textSlant_, uint16 fontSize_,
+ uint16 palinfo1_, uint16 palinfo2_, uint16 palinfo3_) {
+ _defaultFormatting.setValues(_defaultFormatting.wm, fontId_, textSlant_, fontSize_, palinfo1_, palinfo2_, palinfo3_);
+ }
void draw(ManagedSurface *g, int x, int y, int w, int h, int xoff, int yoff);
void resizeAndFormatLines(uint numNewLines, MacFontRun * fontRun);
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index c8e3a93..182f1e0 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -100,6 +100,8 @@ void MacTextWindow::setTextWindowFont(const MacFont *font) {
_font = font;
_fontRef = _wm->_fontMan->getFont(*font);
+
+ _mactext->setDefaultFormatting(font->getId(), font->getSlant(), font->getSize(), 0, 0, 0);
}
const MacFont *MacTextWindow::getTextWindowFont() {
Commit: 77932d58388f2b68f74b540026f6b58b33b8fd86
https://github.com/scummvm/scummvm/commit/77932d58388f2b68f74b540026f6b58b33b8fd86
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
GRAPHICS: MACGUI: Mark content as dirty when text is changed
Changed paths:
graphics/macgui/mactextwindow.cpp
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 182f1e0..0d801ab 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -74,12 +74,16 @@ void MacTextWindow::drawText(ManagedSurface *g, int x, int y, int w, int h, int
void MacTextWindow::appendText(Common::String str, const MacFont *macFont) {
_mactext->appendText(str, macFont->getId(), macFont->getSize(), macFont->getSlant());
+ _contentIsDirty = true;
+
updateCursorPos();
}
void MacTextWindow::clearText() {
_mactext->clearText();
+ _contentIsDirty = true;
+
updateCursorPos();
}
Commit: fe8ef60e08446c725c4bdedcf152ab60f49c0f17
https://github.com/scummvm/scummvm/commit/fe8ef60e08446c725c4bdedcf152ab60f49c0f17
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
GRAPHICS: MACGUI: Added more debug output to MacText
Changed paths:
graphics/macgui/mactext.cpp
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index ea02e9e..ad3a3a3 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -262,6 +262,8 @@ void MacText::render(int from, int to) {
// TODO: _textMaxWidth, when -1, was not rendering ANY text.
for (uint j = 0; j < _textLines[i].chunks.size(); j++) {
+ debug(5, "line %d[%d]/%d at %d,%d (%s)", i, j, xOffset, _textLines[i].chunks[j].fontId, _textLines[i].y, _textLines[i].chunks[j].text.c_str());
+
if (_textLines[i].chunks[j].text.empty())
continue;
Commit: 2e458671f6317a2a8195b9a328cf796add5d81fd
https://github.com/scummvm/scummvm/commit/2e458671f6317a2a8195b9a328cf796add5d81fd
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
GRAPHICS: MACGUI: Fix copy/paste bug in MacText
Changed paths:
graphics/macgui/mactext.cpp
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index ad3a3a3..59e7d67 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -347,7 +347,7 @@ void MacText::draw(ManagedSurface *g, int x, int y, int w, int h, int xoff, int
}
g->blitFrom(*_surface, Common::Rect(MIN<int>(_surface->w, x), MIN<int>(_surface->h, y),
- MIN<int>(_surface->w, x + w), MIN<int>(_surface->h, y + w)),
+ MIN<int>(_surface->w, x + w), MIN<int>(_surface->h, y + h)),
Common::Point(xoff, yoff));
}
Commit: e236db8c3fc37bd9326f88e4fad7ac57454c70bf
https://github.com/scummvm/scummvm/commit/e236db8c3fc37bd9326f88e4fad7ac57454c70bf
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
GRAPHICS: MACGUI: Fixed appendText() in MacGui: formatting was not passed
Changed paths:
graphics/macgui/mactext.cpp
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index 59e7d67..3c410f6 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -380,30 +380,34 @@ void MacText::appendText(Common::String str, int fontId = kMacFontChicago, int f
MacFontRun fontRun = MacFontRun(_wm, fontId, fontSlant, fontSize, 0, 0, 0);
+ _currentFormatting = fontRun;
+
_str += fontRun.toString();
_str += str;
- resizeAndFormatLines(newLines, &fontRun);
+ //resizeAndFormatLines(newLines, &fontRun);
splitString(str);
recalcDims();
- render(oldLen, _textLines.size());
+ render(oldLen - 1, _textLines.size());
}
void MacText::appendTextDefault(Common::String str) {
uint oldLen = _textLines.size();
uint newLines = 1 + getNewlinesInString(str);
+ _currentFormatting = _defaultFormatting;
+
_str += _defaultFormatting.toString();
_str += str;
- resizeAndFormatLines(newLines, &_defaultFormatting);
+ //resizeAndFormatLines(newLines, &_defaultFormatting);
splitString(str);
recalcDims();
- render(oldLen, _textLines.size());
+ render(oldLen - 1, _textLines.size());
}
void MacText::clearText() {
Commit: cb48575c91071421f89ea394094072995a6e2c9b
https://github.com/scummvm/scummvm/commit/cb48575c91071421f89ea394094072995a6e2c9b
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
WAGE: Switched console rendering to MacTextWindow
Changed paths:
engines/wage/gui-console.cpp
engines/wage/gui.cpp
diff --git a/engines/wage/gui-console.cpp b/engines/wage/gui-console.cpp
index c2f1753..e86e6ab 100644
--- a/engines/wage/gui-console.cpp
+++ b/engines/wage/gui-console.cpp
@@ -81,6 +81,9 @@ void Gui::clearOutput() {
}
void Gui::appendText(const char *s) {
+#ifdef USE_MACTEXTWINDOW
+ _consoleWindow->appendText(s, getConsoleMacFont());
+#else
Common::String str(s);
_consoleDirty = true;
@@ -107,9 +110,6 @@ void Gui::appendText(const char *s) {
// Process last/leftover line
_out.push_back(tmp);
flowText(tmp);
-
-#ifdef USE_MACTEXTWINDOW1
- _consoleWindow->appendText(s, getConsoleMacFont());
#endif // USE_MACTEXTWINDOW
}
@@ -164,7 +164,7 @@ void Gui::reflowText() {
for (uint i = 0; i < _out.size(); i++)
flowText(_out[i]);
-#ifdef USE_MACTEXTWINDOW
+#ifdef USE_MACTEXTWINDOW1
// Append _lines content to MacTextWindow after it has
// been processed by flowText above
_consoleWindow->clearText();
diff --git a/engines/wage/gui.cpp b/engines/wage/gui.cpp
index 04419d5..e6e439b 100644
--- a/engines/wage/gui.cpp
+++ b/engines/wage/gui.cpp
@@ -231,7 +231,9 @@ void Gui::draw() {
}
drawScene();
+#ifndef USE_MACTEXTWINDOW
drawConsole();
+#endif
_wm.draw();
Commit: a95899c1b65c1558e4f23ab9cbdb315270a152c2
https://github.com/scummvm/scummvm/commit/a95899c1b65c1558e4f23ab9cbdb315270a152c2
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
GRAPHICS: MACGUI: Fix formatting of the first added text in MacText
Changed paths:
graphics/macgui/mactext.cpp
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index 3c410f6..75d41e0 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -74,7 +74,8 @@ MacText::MacText(Common::String s, MacWindowManager *wm, const MacFont *macFont,
_currentFormatting = _defaultFormatting;
- splitString(_str);
+ if (!_str.empty())
+ splitString(_str);
recalcDims();
Commit: 61eb58186c64364f39688ceb7c6122192ef5c36b
https://github.com/scummvm/scummvm/commit/61eb58186c64364f39688ceb7c6122192ef5c36b
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
GRAPHICS: MACGUI: Cleanup
Changed paths:
graphics/macgui/mactext.cpp
graphics/macgui/mactext.h
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index 75d41e0..d7fcb5c 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -364,17 +364,6 @@ uint getNewlinesInString(const Common::String &str) {
return newLines;
}
-// Appends numNewLines new lines in _textLines, formatted with the MacFontRun specified
-void MacText::resizeAndFormatLines(uint numNewLines, MacFontRun *fontRun) {
- uint oldLen = _textLines.size();
-
- // Resize _textLines appropriately
- for (uint curLine = 0; curLine < numNewLines; ++curLine) {
- _textLines.resize(oldLen + numNewLines);
- _textLines[oldLen + curLine].chunks.push_back(*fontRun);
- }
-}
-
void MacText::appendText(Common::String str, int fontId = kMacFontChicago, int fontSize = 12, int fontSlant = kMacFontRegular) {
uint oldLen = _textLines.size();
uint newLines = 1 + getNewlinesInString(str);
@@ -386,8 +375,6 @@ void MacText::appendText(Common::String str, int fontId = kMacFontChicago, int f
_str += fontRun.toString();
_str += str;
- //resizeAndFormatLines(newLines, &fontRun);
-
splitString(str);
recalcDims();
@@ -403,8 +390,6 @@ void MacText::appendTextDefault(Common::String str) {
_str += _defaultFormatting.toString();
_str += str;
- //resizeAndFormatLines(newLines, &_defaultFormatting);
-
splitString(str);
recalcDims();
diff --git a/graphics/macgui/mactext.h b/graphics/macgui/mactext.h
index 8e25dcf..43804ff 100644
--- a/graphics/macgui/mactext.h
+++ b/graphics/macgui/mactext.h
@@ -101,7 +101,6 @@ public:
}
void draw(ManagedSurface *g, int x, int y, int w, int h, int xoff, int yoff);
- void resizeAndFormatLines(uint numNewLines, MacFontRun * fontRun);
void appendText(Common::String str, int fontId, int fontSize, int fontSlant);
void appendTextDefault(Common::String str);
void clearText();
Commit: bc8d059f38f4904af588522ebbc284ad1749f5cf
https://github.com/scummvm/scummvm/commit/bc8d059f38f4904af588522ebbc284ad1749f5cf
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
GRAPHICS: MACGUI: Draw input on MacTextWindow redraw
Changed paths:
graphics/macgui/mactextwindow.cpp
graphics/macgui/mactextwindow.h
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 0d801ab..6d25701 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -47,9 +47,11 @@ MacTextWindow::MacTextWindow(MacWindowManager *wm, const MacFont *font, int fgco
_fontRef = wm->_fontMan->getFont(*font);
- _inputTextHeight = 1;
+ _inputTextHeight = 0;
_maxWidth = maxWidth;
+ _inputIsDirty = true;
+
_scrollPos = 0;
_cursorX = 0;
@@ -113,7 +115,7 @@ const MacFont *MacTextWindow::getTextWindowFont() {
}
bool MacTextWindow::draw(ManagedSurface *g, bool forceRedraw) {
- if (!_borderIsDirty && !_contentIsDirty && !_cursorDirty && !forceRedraw)
+ if (!_borderIsDirty && !_contentIsDirty && !_cursorDirty && !_inputIsDirty && !forceRedraw)
return false;
if (_borderIsDirty || forceRedraw) {
@@ -122,6 +124,11 @@ bool MacTextWindow::draw(ManagedSurface *g, bool forceRedraw) {
_composeSurface.clear(kColorWhite);
}
+ if (_inputIsDirty || forceRedraw) {
+ drawInput();
+ _inputIsDirty = false;
+ }
+
_contentIsDirty = false;
// Compose
@@ -147,7 +154,7 @@ bool MacTextWindow::processEvent(Common::Event &event) {
case Common::KEYCODE_BACKSPACE:
if (!_inputText.empty()) {
_inputText.deleteLastChar();
- drawInput();
+ _inputIsDirty = true;
}
break;
@@ -160,7 +167,7 @@ bool MacTextWindow::processEvent(Common::Event &event) {
if (event.kbd.ascii >= 0x20 && event.kbd.ascii <= 0x7f) {
_inputText += (char)event.kbd.ascii;
- drawInput();
+ _inputIsDirty = true;
return true;
}
diff --git a/graphics/macgui/mactextwindow.h b/graphics/macgui/mactextwindow.h
index db9b5a1..5ed507b 100644
--- a/graphics/macgui/mactextwindow.h
+++ b/graphics/macgui/mactextwindow.h
@@ -100,6 +100,7 @@ private:
int _maxWidth;
Common::String _inputText;
uint _inputTextHeight;
+ bool _inputIsDirty;
};
Commit: 737c2e4f88ebffd266c0dc52522122760c35f717
https://github.com/scummvm/scummvm/commit/737c2e4f88ebffd266c0dc52522122760c35f717
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
WAGE: Now we need to render newline at the end of each text
Changed paths:
engines/wage/wage.cpp
diff --git a/engines/wage/wage.cpp b/engines/wage/wage.cpp
index 8d5a1e0..13489d2 100644
--- a/engines/wage/wage.cpp
+++ b/engines/wage/wage.cpp
@@ -219,7 +219,11 @@ void WageEngine::setMenu(Common::String menu) {
}
void WageEngine::appendText(const char *str) {
- _gui->appendText(str);
+ Common::String s(str);
+
+ s += '\n';
+
+ _gui->appendText(s.c_str());
_inputText.clear();
}
Commit: 94a57f534f938fd59d2cd766f77e79ff29c53f84
https://github.com/scummvm/scummvm/commit/94a57f534f938fd59d2cd766f77e79ff29c53f84
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
WAGE: Make drawInput() a noop with MacTextWindow
Changed paths:
engines/wage/gui-console.cpp
diff --git a/engines/wage/gui-console.cpp b/engines/wage/gui-console.cpp
index e86e6ab..dd761f0 100644
--- a/engines/wage/gui-console.cpp
+++ b/engines/wage/gui-console.cpp
@@ -329,6 +329,8 @@ void Gui::renderConsole(Graphics::ManagedSurface *g, const Common::Rect &r) {
}
void Gui::drawInput() {
+#ifndef USE_MACTEXTWINDOW
+
if (!_screen.getPixels())
return;
_wm.setActive(_consoleWindow->getId());
@@ -338,7 +340,6 @@ void Gui::drawInput() {
appendText(_engine->_inputText.c_str());
_inputTextLineNum = _out.size() - 1;
-#ifndef USE_MACTEXTWINDOW
const Graphics::Font *font = getConsoleFont();
if (_engine->_inputText.contains('\n')) {
@@ -371,7 +372,8 @@ void Gui::drawInput() {
}
_cursorX = font->getStringWidth(_out[_inputTextLineNum]) + kConHPadding;
-
+#else
+ warning("Gui::drawInput()");
#endif // USE_MACTEXTWINDOW
}
Commit: f79a7d049bb540f51c5ade053f2d4f32b7eca948
https://github.com/scummvm/scummvm/commit/f79a7d049bb540f51c5ade053f2d4f32b7eca948
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
GRAPHICS: MACGUI: Fixed input line replacement in MacTextWindow
Changed paths:
graphics/macgui/mactextwindow.cpp
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 6d25701..40bcf12 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -191,7 +191,7 @@ void MacTextWindow::drawInput() {
_inputTextHeight = MAX(1u, text.size()); // We always have line to clean
// And add new input line to the text
- appendText(_inputText, _font);
+ appendText(Common::String("\n" + _inputText), _font);
_cursorX = _inputText.empty() ? 0 : _fontRef->getStringWidth(text[_inputTextHeight - 1]);
Commit: 50078a808cff330917cf4a9c0416776a9415b9d5
https://github.com/scummvm/scummvm/commit/50078a808cff330917cf4a9c0416776a9415b9d5
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
GRAPHICS: MACGUI: Remove unused variable
Changed paths:
graphics/macgui/mactext.cpp
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index d7fcb5c..0763226 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -366,7 +366,6 @@ uint getNewlinesInString(const Common::String &str) {
void MacText::appendText(Common::String str, int fontId = kMacFontChicago, int fontSize = 12, int fontSlant = kMacFontRegular) {
uint oldLen = _textLines.size();
- uint newLines = 1 + getNewlinesInString(str);
MacFontRun fontRun = MacFontRun(_wm, fontId, fontSlant, fontSize, 0, 0, 0);
@@ -383,7 +382,6 @@ void MacText::appendText(Common::String str, int fontId = kMacFontChicago, int f
void MacText::appendTextDefault(Common::String str) {
uint oldLen = _textLines.size();
- uint newLines = 1 + getNewlinesInString(str);
_currentFormatting = _defaultFormatting;
Commit: b8f6ce5f00b7129e3c2fe1406fe55033556cce3d
https://github.com/scummvm/scummvm/commit/b8f6ce5f00b7129e3c2fe1406fe55033556cce3d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
WAGE: Remove redundant code
Changed paths:
engines/wage/wage.cpp
diff --git a/engines/wage/wage.cpp b/engines/wage/wage.cpp
index 13489d2..e8723d1 100644
--- a/engines/wage/wage.cpp
+++ b/engines/wage/wage.cpp
@@ -526,7 +526,6 @@ void WageEngine::processTurn(Common::String *textInput, Designed *clickInput) {
}
_inputText.clear();
- _gui->appendText("");
}
Commit: 47d87e059d09d15cc065eddf8fb9662b542e7486
https://github.com/scummvm/scummvm/commit/47d87e059d09d15cc065eddf8fb9662b542e7486
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
GRAPHICS: MACGUI: Fix input text displaying
Changed paths:
graphics/macgui/mactextwindow.cpp
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 40bcf12..52785ad 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -181,7 +181,7 @@ bool MacTextWindow::processEvent(Common::Event &event) {
void MacTextWindow::drawInput() {
// First, we kill previous input text
- for (uint i = 0; i < _inputTextHeight; i++)
+ for (uint i = 1; i < _inputTextHeight; i++)
_mactext->removeLastLine();
Common::Array<Common::String> text;
@@ -191,7 +191,7 @@ void MacTextWindow::drawInput() {
_inputTextHeight = MAX(1u, text.size()); // We always have line to clean
// And add new input line to the text
- appendText(Common::String("\n" + _inputText), _font);
+ appendText(_inputText, _font);
_cursorX = _inputText.empty() ? 0 : _fontRef->getStringWidth(text[_inputTextHeight - 1]);
Commit: b6970ade92a3b92188404b308fa6e839f3063286
https://github.com/scummvm/scummvm/commit/b6970ade92a3b92188404b308fa6e839f3063286
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
GRAPHICS: MACGUI: Remove redundant method from MacTextWindow
Changed paths:
graphics/macgui/mactextwindow.cpp
graphics/macgui/mactextwindow.h
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 52785ad..4d4d5a2 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -69,10 +69,6 @@ MacTextWindow::MacTextWindow(MacWindowManager *wm, const MacFont *font, int fgco
g_system->getTimerManager()->installTimerProc(&cursorTimerHandler, 200000, this, "textWindowCursor");
}
-void MacTextWindow::drawText(ManagedSurface *g, int x, int y, int w, int h, int xoff, int yoff) {
- _mactext->draw(g, x, y, w, h, xoff, yoff);
-}
-
void MacTextWindow::appendText(Common::String str, const MacFont *macFont) {
_mactext->appendText(str, macFont->getId(), macFont->getSize(), macFont->getSlant());
diff --git a/graphics/macgui/mactextwindow.h b/graphics/macgui/mactextwindow.h
index 5ed507b..fecfeb5 100644
--- a/graphics/macgui/mactextwindow.h
+++ b/graphics/macgui/mactextwindow.h
@@ -63,7 +63,6 @@ public:
void setTextWindowFont(const MacFont *macFont);
const MacFont *getTextWindowFont();
- void drawText(ManagedSurface *g, int x, int y, int w, int h, int xoff, int yoff);
void appendText(Common::String str, const MacFont *macFont);
void clearText();
Commit: 8609572b879e526d94a3331cebce3322754f81be
https://github.com/scummvm/scummvm/commit/8609572b879e526d94a3331cebce3322754f81be
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
GRAPHICS: MACGUI: Correctly set MacTextWindow internal MacText size
Changed paths:
graphics/macgui/mactext.cpp
graphics/macgui/mactext.h
graphics/macgui/mactextwindow.cpp
graphics/macgui/mactextwindow.h
graphics/macgui/macwindow.h
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index 0763226..2043702 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -82,6 +82,10 @@ MacText::MacText(Common::String s, MacWindowManager *wm, const MacFont *macFont,
_fullRefresh = true;
}
+void MacText::setMaxWidth(int maxWidth) {
+ _maxWidth = maxWidth;
+}
+
void MacText::splitString(Common::String &str) {
const char *s = str.c_str();
diff --git a/graphics/macgui/mactext.h b/graphics/macgui/mactext.h
index 43804ff..98bfd64 100644
--- a/graphics/macgui/mactext.h
+++ b/graphics/macgui/mactext.h
@@ -95,6 +95,7 @@ public:
int getInterLinear() { return _interLinear; }
void setInterLinear(int interLinear);
+ void setMaxWidth(int maxWidth);
void setDefaultFormatting(uint16 fontId_, byte textSlant_, uint16 fontSize_,
uint16 palinfo1_, uint16 palinfo2_, uint16 palinfo3_) {
_defaultFormatting.setValues(_defaultFormatting.wm, fontId_, textSlant_, fontSize_, palinfo1_, palinfo2_, palinfo3_);
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 4d4d5a2..54c8f77 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -69,6 +69,13 @@ MacTextWindow::MacTextWindow(MacWindowManager *wm, const MacFont *font, int fgco
g_system->getTimerManager()->installTimerProc(&cursorTimerHandler, 200000, this, "textWindowCursor");
}
+void MacTextWindow::resize(int w, int h) {
+ _maxWidth = w - kBorderWidth * 2;
+ _mactext->setMaxWidth(_maxWidth);
+
+ MacWindow::resize(w, h);
+}
+
void MacTextWindow::appendText(Common::String str, const MacFont *macFont) {
_mactext->appendText(str, macFont->getId(), macFont->getSize(), macFont->getSlant());
diff --git a/graphics/macgui/mactextwindow.h b/graphics/macgui/mactextwindow.h
index fecfeb5..6cdeea4 100644
--- a/graphics/macgui/mactextwindow.h
+++ b/graphics/macgui/mactextwindow.h
@@ -51,6 +51,8 @@ public:
MacTextWindow(MacWindowManager *wm, const MacFont *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment);
virtual ~MacTextWindow();
+ virtual void resize(int w, int h);
+
virtual bool processEvent(Common::Event &event);
/**
diff --git a/graphics/macgui/macwindow.h b/graphics/macgui/macwindow.h
index 77be0ae..2cda991 100644
--- a/graphics/macgui/macwindow.h
+++ b/graphics/macgui/macwindow.h
@@ -198,7 +198,7 @@ public:
* @param w New width of the window.
* @param h New height of the window.
*/
- void resize(int w, int h);
+ virtual void resize(int w, int h);
/**
* Change the dimensions of the window ([0, 0, 0, 0] by default).
Commit: d9e7cbaf961554cfd1736921278b008efb94a40b
https://github.com/scummvm/scummvm/commit/d9e7cbaf961554cfd1736921278b008efb94a40b
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
GRAPHICS: MACGUI: Implement MacText resize
Changed paths:
graphics/macgui/mactext.cpp
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index 2043702..925f21b 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -84,6 +84,16 @@ MacText::MacText(Common::String s, MacWindowManager *wm, const MacFont *macFont,
void MacText::setMaxWidth(int maxWidth) {
_maxWidth = maxWidth;
+
+ _textLines.clear();
+
+ if (!_str.empty()) {
+ splitString(_str);
+
+ recalcDims();
+
+ _fullRefresh = true;
+ }
}
void MacText::splitString(Common::String &str) {
Commit: 59d6b63b0f63949717e9621578b97c58c1d09ce6
https://github.com/scummvm/scummvm/commit/59d6b63b0f63949717e9621578b97c58c1d09ce6
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
GRAPHICS: MACGUI: undraw input text before resizing MacTextWindow
Changed paths:
graphics/macgui/mactextwindow.cpp
graphics/macgui/mactextwindow.h
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 54c8f77..3a90908 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -70,6 +70,8 @@ MacTextWindow::MacTextWindow(MacWindowManager *wm, const MacFont *font, int fgco
}
void MacTextWindow::resize(int w, int h) {
+ undrawInput();
+
_maxWidth = w - kBorderWidth * 2;
_mactext->setMaxWidth(_maxWidth);
@@ -182,11 +184,16 @@ bool MacTextWindow::processEvent(Common::Event &event) {
return MacWindow::processEvent(event);
}
-void MacTextWindow::drawInput() {
- // First, we kill previous input text
- for (uint i = 1; i < _inputTextHeight; i++)
+void MacTextWindow::undrawInput() {
+ for (uint i = 0; i < _inputTextHeight; i++)
_mactext->removeLastLine();
+ _inputTextHeight = 0;
+}
+
+void MacTextWindow::drawInput() {
+ undrawInput();
+
Common::Array<Common::String> text;
// Now recalc new text height
diff --git a/graphics/macgui/mactextwindow.h b/graphics/macgui/mactextwindow.h
index 6cdeea4..d52e969 100644
--- a/graphics/macgui/mactextwindow.h
+++ b/graphics/macgui/mactextwindow.h
@@ -76,6 +76,7 @@ public:
void clearInput();
private:
+ void undrawInput();
void drawInput();
void updateCursorPos();
Commit: 4e044d7bd3272e95a95feefb407bb2b1ffba23c8
https://github.com/scummvm/scummvm/commit/4e044d7bd3272e95a95feefb407bb2b1ffba23c8
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
GRAPHICS: MACGUI: Do not add input line to the original MacText content
During resize we were replaying all MacText appends, which was including
whole history of the input. Eek.
Changed paths:
graphics/macgui/mactext.cpp
graphics/macgui/mactext.h
graphics/macgui/mactextwindow.cpp
graphics/macgui/mactextwindow.h
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index 925f21b..7fd129f 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -378,15 +378,17 @@ uint getNewlinesInString(const Common::String &str) {
return newLines;
}
-void MacText::appendText(Common::String str, int fontId = kMacFontChicago, int fontSize = 12, int fontSlant = kMacFontRegular) {
+void MacText::appendText(Common::String str, int fontId, int fontSize, int fontSlant, bool skipAdd) {
uint oldLen = _textLines.size();
MacFontRun fontRun = MacFontRun(_wm, fontId, fontSlant, fontSize, 0, 0, 0);
_currentFormatting = fontRun;
- _str += fontRun.toString();
- _str += str;
+ if (!skipAdd) {
+ _str += fontRun.toString();
+ _str += str;
+ }
splitString(str);
recalcDims();
@@ -394,13 +396,15 @@ void MacText::appendText(Common::String str, int fontId = kMacFontChicago, int f
render(oldLen - 1, _textLines.size());
}
-void MacText::appendTextDefault(Common::String str) {
+void MacText::appendTextDefault(Common::String str, bool skipAdd) {
uint oldLen = _textLines.size();
_currentFormatting = _defaultFormatting;
- _str += _defaultFormatting.toString();
- _str += str;
+ if (!skipAdd) {
+ _str += _defaultFormatting.toString();
+ _str += str;
+ }
splitString(str);
recalcDims();
diff --git a/graphics/macgui/mactext.h b/graphics/macgui/mactext.h
index 98bfd64..d93ad13 100644
--- a/graphics/macgui/mactext.h
+++ b/graphics/macgui/mactext.h
@@ -102,8 +102,8 @@ public:
}
void draw(ManagedSurface *g, int x, int y, int w, int h, int xoff, int yoff);
- void appendText(Common::String str, int fontId, int fontSize, int fontSlant);
- void appendTextDefault(Common::String str);
+ void appendText(Common::String str, int fontId = kMacFontChicago, int fontSize = 12, int fontSlant = kMacFontRegular, bool skipAdd = false);
+ void appendTextDefault(Common::String str, bool skipAdd = false);
void clearText();
void replaceLastLine(Common::String str);
void removeLastLine();
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 3a90908..7b1c1e5 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -78,8 +78,8 @@ void MacTextWindow::resize(int w, int h) {
MacWindow::resize(w, h);
}
-void MacTextWindow::appendText(Common::String str, const MacFont *macFont) {
- _mactext->appendText(str, macFont->getId(), macFont->getSize(), macFont->getSlant());
+void MacTextWindow::appendText(Common::String str, const MacFont *macFont, bool skipAdd) {
+ _mactext->appendText(str, macFont->getId(), macFont->getSize(), macFont->getSlant(), skipAdd);
_contentIsDirty = true;
@@ -188,6 +188,9 @@ void MacTextWindow::undrawInput() {
for (uint i = 0; i < _inputTextHeight; i++)
_mactext->removeLastLine();
+ if (_inputTextHeight)
+ appendText("\n", _font, true);
+
_inputTextHeight = 0;
}
@@ -201,7 +204,7 @@ void MacTextWindow::drawInput() {
_inputTextHeight = MAX(1u, text.size()); // We always have line to clean
// And add new input line to the text
- appendText(_inputText, _font);
+ appendText(_inputText, _font, true);
_cursorX = _inputText.empty() ? 0 : _fontRef->getStringWidth(text[_inputTextHeight - 1]);
diff --git a/graphics/macgui/mactextwindow.h b/graphics/macgui/mactextwindow.h
index d52e969..a005ad9 100644
--- a/graphics/macgui/mactextwindow.h
+++ b/graphics/macgui/mactextwindow.h
@@ -65,7 +65,7 @@ public:
void setTextWindowFont(const MacFont *macFont);
const MacFont *getTextWindowFont();
- void appendText(Common::String str, const MacFont *macFont);
+ void appendText(Common::String str, const MacFont *macFont, bool skipAdd = false);
void clearText();
void setSelection(int selStartX, int selStartY, int selEndX, int selEndY);
Commit: 7333a68636b623891904e61718bc6327a9d8192f
https://github.com/scummvm/scummvm/commit/7333a68636b623891904e61718bc6327a9d8192f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
GRAPHICS: MACGUI: Fix bug in MacText with adding newlines
Changed paths:
graphics/macgui/mactext.cpp
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index 7fd129f..7bcc099 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -172,7 +172,7 @@ void MacText::splitString(Common::String &str) {
if (text.size()) {
for (uint i = 0; i < text.size(); i++) {
- _textLines[curLine].chunks[curChunk].text = text[i];
+ _textLines[curLine].chunks[curChunk].text += text[i];
if ((text.size() > 1 || !nextChunk) && !(i == text.size() - 1 && nextChunk)) {
curLine++;
Commit: df36b2d7e02ee44591b7bd5e0be1fc7b329b166e
https://github.com/scummvm/scummvm/commit/df36b2d7e02ee44591b7bd5e0be1fc7b329b166e
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
GRAPHICS: MACGUI: Clear rendered text when lines are removed in MacText
Changed paths:
graphics/macgui/mactext.cpp
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index 7bcc099..4bb9fef 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -439,6 +439,8 @@ void MacText::removeLastLine() {
int h = getLineHeight(_textLines.size() - 1) + _interLinear;
+ _surface->fillRect(Common::Rect(0, _textMaxHeight - h, _surface->w, _textMaxHeight), _bgcolor);
+
_textLines.pop_back();
_textMaxHeight -= h;
}
Commit: ef1ea04b8c219d1c9e0245bbaac023030a2c3752
https://github.com/scummvm/scummvm/commit/ef1ea04b8c219d1c9e0245bbaac023030a2c3752
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
GRAPHICS: MACGUI: Fixed Enter key behavior in MacTextWindow
Changed paths:
graphics/macgui/mactextwindow.cpp
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 7b1c1e5..b3824f6 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -164,6 +164,7 @@ bool MacTextWindow::processEvent(Common::Event &event) {
break;
case Common::KEYCODE_RETURN:
+ undrawInput();
return false; // Pass it to the higher level for processing
default:
Commit: 91615eb940b766135d15f4d56519de35b5c3ce88
https://github.com/scummvm/scummvm/commit/91615eb940b766135d15f4d56519de35b5c3ce88
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
WAGE: Remove now redundant input processing
Changed paths:
engines/wage/wage.cpp
diff --git a/engines/wage/wage.cpp b/engines/wage/wage.cpp
index e8723d1..6d153a3 100644
--- a/engines/wage/wage.cpp
+++ b/engines/wage/wage.cpp
@@ -169,13 +169,6 @@ void WageEngine::processEvents() {
break;
case Common::EVENT_KEYDOWN:
switch (event.kbd.keycode) {
- case Common::KEYCODE_BACKSPACE:
- if (!_inputText.empty()) {
- _inputText.deleteLastChar();
- _gui->drawInput();
- }
- break;
-
case Common::KEYCODE_RETURN:
_inputText = _gui->_consoleWindow->getInput();
_inputText += '\n';
@@ -197,11 +190,6 @@ void WageEngine::processEvents() {
break;
}
- if (event.kbd.ascii >= 0x20 && event.kbd.ascii <= 0x7f) {
- _inputText += (char)event.kbd.ascii;
- _gui->drawInput();
- }
-
break;
}
break;
Commit: 085eea68c36b9d1c3ea55fcdaabd371ec39125f2
https://github.com/scummvm/scummvm/commit/085eea68c36b9d1c3ea55fcdaabd371ec39125f2
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
GRAPHICS: MACGUI: Use proper dimensions for maxTextWidth in MacTextWindow
Changed paths:
graphics/macgui/mactextwindow.cpp
graphics/macgui/macwindow.h
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index b3824f6..e12a902 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -72,10 +72,10 @@ MacTextWindow::MacTextWindow(MacWindowManager *wm, const MacFont *font, int fgco
void MacTextWindow::resize(int w, int h) {
undrawInput();
- _maxWidth = w - kBorderWidth * 2;
- _mactext->setMaxWidth(_maxWidth);
-
MacWindow::resize(w, h);
+
+ _maxWidth = _innerDims.width();
+ _mactext->setMaxWidth(_maxWidth);
}
void MacTextWindow::appendText(Common::String str, const MacFont *macFont, bool skipAdd) {
diff --git a/graphics/macgui/macwindow.h b/graphics/macgui/macwindow.h
index 2cda991..3e7f474 100644
--- a/graphics/macgui/macwindow.h
+++ b/graphics/macgui/macwindow.h
@@ -308,6 +308,7 @@ protected:
ManagedSurface _composeSurface;
bool _borderIsDirty;
+ Common::Rect _innerDims;
private:
MacWindowBorder _macBorder;
@@ -329,8 +330,6 @@ private:
WindowClick _highlightedPart;
float _scrollPos, _scrollSize;
- Common::Rect _innerDims;
-
Common::String _title;
};
Commit: d4207b1e62761d6bc43d3f6078ea5e895b3b09f3
https://github.com/scummvm/scummvm/commit/d4207b1e62761d6bc43d3f6078ea5e895b3b09f3
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
GRAPHICS: MACGUI: Implement autoscrolling in MacTextWindow
Changed paths:
graphics/macgui/mactextwindow.cpp
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index e12a902..8d736d4 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -83,6 +83,8 @@ void MacTextWindow::appendText(Common::String str, const MacFont *macFont, bool
_contentIsDirty = true;
+ _scrollPos = MAX(0, _mactext->getTextHeight() - _innerDims.height());
+
updateCursorPos();
}
@@ -137,7 +139,7 @@ bool MacTextWindow::draw(ManagedSurface *g, bool forceRedraw) {
_contentIsDirty = false;
// Compose
- _mactext->draw(&_composeSurface, 0, 0, _surface.w - 2, _surface.h - 2, kConWOverlap - 2, kConWOverlap - 2);
+ _mactext->draw(&_composeSurface, 0, _scrollPos, _surface.w - 2, _scrollPos + _surface.h - 2, kConWOverlap - 2, kConWOverlap - 2);
if (_cursorState)
_composeSurface.blitFrom(*_cursorSurface, *_cursorRect, Common::Point(_cursorX + kConWOverlap, _cursorY + kConHOverlap));
Commit: e316fb4b163dcf1f7250d26fddf6536470a7bf62
https://github.com/scummvm/scummvm/commit/e316fb4b163dcf1f7250d26fddf6536470a7bf62
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
GRAPHICS: MACGUI: Do not pass to the upstream backspace key event in MacTextWindow
Changed paths:
graphics/macgui/mactextwindow.cpp
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 8d736d4..d3a1822 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -163,7 +163,7 @@ bool MacTextWindow::processEvent(Common::Event &event) {
_inputText.deleteLastChar();
_inputIsDirty = true;
}
- break;
+ return true;
case Common::KEYCODE_RETURN:
undrawInput();
Commit: 7b7117d5b8e28cbecb49ac2539b9aff61f0139c8
https://github.com/scummvm/scummvm/commit/7b7117d5b8e28cbecb49ac2539b9aff61f0139c8
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:19+02:00
Commit Message:
GRAPHICS: MACGUI: Implement scrolling in MacTextWindow
Changed paths:
graphics/macgui/mactextwindow.cpp
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index d3a1822..7ed0424 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -34,7 +34,8 @@ enum {
kConHOverlap = 20,
kConWPadding = 3,
kConHPadding = 4,
- kConOverscan = 3
+ kConOverscan = 3,
+ kConScrollStep = 12
};
static void cursorTimerHandler(void *refCon);
@@ -184,6 +185,44 @@ bool MacTextWindow::processEvent(Common::Event &event) {
}
}
+ if (click == kBorderScrollUp || click == kBorderScrollDown) {
+ if (event.type == Common::EVENT_LBUTTONDOWN) {
+ int consoleHeight = _innerDims.height();
+ int textFullSize = _mactext->getTextHeight();
+ float scrollPos = (float)_scrollPos / textFullSize;
+ float scrollSize = (float)consoleHeight / textFullSize;
+
+ setScroll(scrollPos, scrollSize);
+
+ return true;
+ } else if (event.type == Common::EVENT_LBUTTONUP) {
+ int oldScrollPos = _scrollPos;
+
+ switch (click) {
+ case kBorderScrollUp:
+ _scrollPos = MAX<int>(0, _scrollPos - kConScrollStep);
+ undrawCursor();
+ _cursorY -= (_scrollPos - oldScrollPos);
+ _contentIsDirty = true;
+ _borderIsDirty = true;
+ break;
+ case kBorderScrollDown:
+ _scrollPos = MIN<int>(_mactext->getTextHeight() - kConScrollStep, _scrollPos + kConScrollStep);
+ undrawCursor();
+ _cursorY -= (_scrollPos - oldScrollPos);
+ _contentIsDirty = true;
+ _borderIsDirty = true;
+ break;
+ default:
+ return false;
+ }
+
+ return true;
+ }
+
+ return false;
+ }
+
return MacWindow::processEvent(event);
}
Commit: 04bb7c3e7aca4faba3f98a106de52c866794d9c5
https://github.com/scummvm/scummvm/commit/04bb7c3e7aca4faba3f98a106de52c866794d9c5
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
GRAPHICS: MACGUI: Reduce constant scope
Changed paths:
graphics/macgui/mactextwindow.cpp
graphics/macgui/mactextwindow.h
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 7ed0424..668b3c7 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -35,7 +35,9 @@ enum {
kConWPadding = 3,
kConHPadding = 4,
kConOverscan = 3,
- kConScrollStep = 12
+ kConScrollStep = 12,
+
+ kCursorHeight = 12
};
static void cursorTimerHandler(void *refCon);
diff --git a/graphics/macgui/mactextwindow.h b/graphics/macgui/mactextwindow.h
index a005ad9..313b05b 100644
--- a/graphics/macgui/mactextwindow.h
+++ b/graphics/macgui/mactextwindow.h
@@ -28,10 +28,6 @@
namespace Graphics {
-enum {
- kCursorHeight = 12
-};
-
struct SelectedText {
int startX, startY;
int endX, endY;
@@ -55,11 +51,6 @@ public:
virtual bool processEvent(Common::Event &event);
- /**
- * Similar to that described in BaseMacWindow.
- * @param g See BaseMacWindow.
- * @param forceRedraw If true, the borders are guarranteed to redraw.
- */
virtual bool draw(ManagedSurface *g, bool forceRedraw = false);
void setTextWindowFont(const MacFont *macFont);
Commit: 20734108e31d1e5a4f6431b0a444912d13f79d09
https://github.com/scummvm/scummvm/commit/20734108e31d1e5a4f6431b0a444912d13f79d09
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
GRAPHICS: MACGUI: Incapsulate MacWindow internals
Changed paths:
graphics/macgui/mactextwindow.cpp
graphics/macgui/macwindow.h
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 668b3c7..1743614 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -77,7 +77,7 @@ void MacTextWindow::resize(int w, int h) {
MacWindow::resize(w, h);
- _maxWidth = _innerDims.width();
+ _maxWidth = getInnerDimensions().width();
_mactext->setMaxWidth(_maxWidth);
}
@@ -86,7 +86,7 @@ void MacTextWindow::appendText(Common::String str, const MacFont *macFont, bool
_contentIsDirty = true;
- _scrollPos = MAX(0, _mactext->getTextHeight() - _innerDims.height());
+ _scrollPos = MAX(0, _mactext->getTextHeight() - getInnerDimensions().height());
updateCursorPos();
}
@@ -189,7 +189,7 @@ bool MacTextWindow::processEvent(Common::Event &event) {
if (click == kBorderScrollUp || click == kBorderScrollDown) {
if (event.type == Common::EVENT_LBUTTONDOWN) {
- int consoleHeight = _innerDims.height();
+ int consoleHeight = getInnerDimensions().height();
int textFullSize = _mactext->getTextHeight();
float scrollPos = (float)_scrollPos / textFullSize;
float scrollSize = (float)consoleHeight / textFullSize;
diff --git a/graphics/macgui/macwindow.h b/graphics/macgui/macwindow.h
index 3e7f474..f1e0cac 100644
--- a/graphics/macgui/macwindow.h
+++ b/graphics/macgui/macwindow.h
@@ -308,7 +308,6 @@ protected:
ManagedSurface _composeSurface;
bool _borderIsDirty;
- Common::Rect _innerDims;
private:
MacWindowBorder _macBorder;
@@ -323,6 +322,7 @@ private:
bool _closeable;
int _borderWidth;
+ Common::Rect _innerDims;
bool _beingDragged, _beingResized;
int _draggedX, _draggedY;
Commit: c25a26d11cad273865a1ccf51f2ca8819f3e18ee
https://github.com/scummvm/scummvm/commit/c25a26d11cad273865a1ccf51f2ca8819f3e18ee
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
GRAPHICS: MACGUI: Event processing code for text selection in MacTextWindow
Changed paths:
graphics/macgui/mactext.cpp
graphics/macgui/mactext.h
graphics/macgui/mactextwindow.cpp
graphics/macgui/mactextwindow.h
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index 4bb9fef..6ebbe18 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -445,4 +445,8 @@ void MacText::removeLastLine() {
_textMaxHeight -= h;
}
+void MacText::getRowCol(int x, int y, int *col, int *row) {
+ warning("getRowCol(%d, %d, ...)", x, y);
+}
+
} // End of namespace Graphics
diff --git a/graphics/macgui/mactext.h b/graphics/macgui/mactext.h
index d93ad13..fe5c583 100644
--- a/graphics/macgui/mactext.h
+++ b/graphics/macgui/mactext.h
@@ -113,6 +113,8 @@ public:
void render();
Graphics::ManagedSurface *getSurface() { return _surface; }
+ void getRowCol(int x, int y, int *col, int *row);
+
private:
void splitString(Common::String &s);
void render(int from, int to);
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 1743614..cc7bd26 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();
diff --git a/graphics/macgui/mactextwindow.h b/graphics/macgui/mactextwindow.h
index 313b05b..eb3f270 100644
--- a/graphics/macgui/mactextwindow.h
+++ b/graphics/macgui/mactextwindow.h
@@ -71,6 +71,9 @@ private:
void drawInput();
void updateCursorPos();
+ void startMarking(int x, int y);
+ void updateTextSelection(int x, int y);
+
public:
int _cursorX, _cursorY;
bool _cursorState;
@@ -88,6 +91,7 @@ private:
ManagedSurface *_cursorSurface;
+ bool _inTextSelection;
SelectedText _selectedText;
int _maxWidth;
Commit: 08293015e7c18202a4783d39d4083077f562cbca
https://github.com/scummvm/scummvm/commit/08293015e7c18202a4783d39d4083077f562cbca
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
GRAPHICS: MACGUI: Implement MacText::getRowCol() method
Changed paths:
graphics/macgui/mactext.cpp
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index 6ebbe18..7316e5a 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -362,7 +362,7 @@ void MacText::draw(ManagedSurface *g, int x, int y, int w, int h, int xoff, int
}
g->blitFrom(*_surface, Common::Rect(MIN<int>(_surface->w, x), MIN<int>(_surface->h, y),
- MIN<int>(_surface->w, x + w), MIN<int>(_surface->h, y + h)),
+ MIN<int>(_surface->w, x + w), MIN<int>(_surface->h, y + h)),
Common::Point(xoff, yoff));
}
@@ -446,7 +446,43 @@ void MacText::removeLastLine() {
}
void MacText::getRowCol(int x, int y, int *col, int *row) {
- warning("getRowCol(%d, %d, ...)", x, y);
+ CLIP(y, 0, _textMaxHeight);
+
+ // FIXME: We should use bsearch() here
+ *row = 0;
+
+ while (*row < _textLines.size() - 1 && _textLines[*row].y < y)
+ (*row)++;
+
+ *col = 0;
+
+ int width = 0, pwidth = 0;
+ int mcol = 0, pmcol = 0;
+ uint chunk;
+ for (chunk = 0; chunk < _textLines[*row].chunks.size() - 1; chunk++) {
+ pwidth = width;
+ pmcol = mcol;
+ if (!_textLines[*row].chunks[chunk].text.empty()) {
+ width += _textLines[*row].chunks[chunk].getFont()->getStringWidth(_textLines[*row].chunks[chunk].text);
+ mcol += _textLines[*row].chunks[chunk].text.size();
+ }
+
+ if (width > x)
+ break;
+ }
+
+ Common::String str = _textLines[*row].chunks[chunk].text;
+
+ *col = mcol;
+
+ for (int i = str.size(); i >= 0; i--) {
+ if (_textLines[*row].chunks[chunk].getFont()->getStringWidth(str) + pwidth < x) {
+ *col = mcol + i;
+ break;
+ }
+
+ str.deleteLastChar();
+ }
}
} // End of namespace Graphics
Commit: db38a363697afd2107e4c0ee874ddec60c53e867
https://github.com/scummvm/scummvm/commit/db38a363697afd2107e4c0ee874ddec60c53e867
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
WAGE: Remove redundant call
Changed paths:
engines/wage/gui-console.cpp
diff --git a/engines/wage/gui-console.cpp b/engines/wage/gui-console.cpp
index dd761f0..53ccb55 100644
--- a/engines/wage/gui-console.cpp
+++ b/engines/wage/gui-console.cpp
@@ -192,11 +192,6 @@ void Gui::renderConsole(Graphics::ManagedSurface *g, const Common::Rect &r) {
fullRedraw = true;
}
-#ifdef USE_MACTEXTWINDOW
- // TODO: Call this at an appropriate place (only when the selection can change)
- _consoleWindow->setSelection(_selectionStartX, _selectionStartY, _selectionEndX, _selectionEndY);
-#endif // USE_MACTEXTWINDOW
-
if (fullRedraw) {
_console.clear(kColorWhite);
}
Commit: c5da0bece4bc8537335680cb49bd6e5b57e33073
https://github.com/scummvm/scummvm/commit/c5da0bece4bc8537335680cb49bd6e5b57e33073
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
GRAPHICS: MACGUI: Remove redundant method from MacTextWindow
Changed paths:
graphics/macgui/mactextwindow.cpp
graphics/macgui/mactextwindow.h
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index cc7bd26..0da3752 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -100,13 +100,6 @@ void MacTextWindow::clearText() {
updateCursorPos();
}
-void MacTextWindow::setSelection(int selStartX, int selStartY, int selEndX, int selEndY) {
- _selectedText.startX = selStartX;
- _selectedText.startY = selStartY;
- _selectedText.endX = selEndX;
- _selectedText.endY = selEndY;
-}
-
MacTextWindow::~MacTextWindow() {
delete _cursorSurface;
diff --git a/graphics/macgui/mactextwindow.h b/graphics/macgui/mactextwindow.h
index eb3f270..d1ee3c1 100644
--- a/graphics/macgui/mactextwindow.h
+++ b/graphics/macgui/mactextwindow.h
@@ -59,8 +59,6 @@ public:
void appendText(Common::String str, const MacFont *macFont, bool skipAdd = false);
void clearText();
- void setSelection(int selStartX, int selStartY, int selEndX, int selEndY);
-
void undrawCursor();
const Common::String getInput() { return _inputText; }
Commit: b3c8a8e1290eae0ca7628562c887cfa0ad354e6a
https://github.com/scummvm/scummvm/commit/b3c8a8e1290eae0ca7628562c887cfa0ad354e6a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
GRAPHICS: MACGUI: Align and store MacText selection coordinates
Changed paths:
graphics/macgui/mactext.cpp
graphics/macgui/mactext.h
graphics/macgui/mactextwindow.cpp
graphics/macgui/mactextwindow.h
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index 7316e5a..45e5249 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -445,7 +445,7 @@ void MacText::removeLastLine() {
_textMaxHeight -= h;
}
-void MacText::getRowCol(int x, int y, int *col, int *row) {
+void MacText::getRowCol(int x, int y, int *sx, int *sy, int *row, int *col) {
CLIP(y, 0, _textMaxHeight);
// FIXME: We should use bsearch() here
@@ -454,6 +454,8 @@ void MacText::getRowCol(int x, int y, int *col, int *row) {
while (*row < _textLines.size() - 1 && _textLines[*row].y < y)
(*row)++;
+ *sy = _textLines[*row].y;
+
*col = 0;
int width = 0, pwidth = 0;
@@ -476,8 +478,10 @@ void MacText::getRowCol(int x, int y, int *col, int *row) {
*col = mcol;
for (int i = str.size(); i >= 0; i--) {
- if (_textLines[*row].chunks[chunk].getFont()->getStringWidth(str) + pwidth < x) {
+ int strw = _textLines[*row].chunks[chunk].getFont()->getStringWidth(str);
+ if (strw + pwidth < x) {
*col = mcol + i;
+ *sx = strw + pwidth;
break;
}
diff --git a/graphics/macgui/mactext.h b/graphics/macgui/mactext.h
index fe5c583..ffc8c8d 100644
--- a/graphics/macgui/mactext.h
+++ b/graphics/macgui/mactext.h
@@ -113,7 +113,7 @@ public:
void render();
Graphics::ManagedSurface *getSurface() { return _surface; }
- void getRowCol(int x, int y, int *col, int *row);
+ void getRowCol(int x, int y, int *sx, int *sy, int *row, int *col);
private:
void splitString(Common::String &s);
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 0da3752..a5f7b05 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -266,7 +266,7 @@ void MacTextWindow::startMarking(int x, int y) {
y += _scrollPos;
- _mactext->getRowCol(x, y, &_selectedText.startX, &_selectedText.startY);
+ _mactext->getRowCol(x, y, &_selectedText.endX, &_selectedText.endY, &_selectedText.endRow, &_selectedText.endCol);
_selectedText.endY = -1;
@@ -279,7 +279,7 @@ void MacTextWindow::updateTextSelection(int x, int y) {
y += _scrollPos;
- _mactext->getRowCol(x, y, &_selectedText.endX, &_selectedText.endY);
+ _mactext->getRowCol(x, y, &_selectedText.endX, &_selectedText.endY, &_selectedText.endRow, &_selectedText.endCol);
_contentIsDirty = true;
}
diff --git a/graphics/macgui/mactextwindow.h b/graphics/macgui/mactextwindow.h
index d1ee3c1..b3d9ba8 100644
--- a/graphics/macgui/mactextwindow.h
+++ b/graphics/macgui/mactextwindow.h
@@ -31,10 +31,14 @@ namespace Graphics {
struct SelectedText {
int startX, startY;
int endX, endY;
+ int startRow, startCol;
+ int endRow, endCol;
SelectedText() {
startX = startY = 0;
endX = endY = 0;
+ startRow = startCol = 0;
+ endRow = endCol = 0;
}
bool needsRender() {
Commit: 145b7c9ec994e97ad36527e177ccaf45f224d398
https://github.com/scummvm/scummvm/commit/145b7c9ec994e97ad36527e177ccaf45f224d398
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
GRAPHICS: MACGUI: Initial selection drawing code to MacTextWindow
Changed paths:
graphics/macgui/mactextwindow.cpp
graphics/macgui/mactextwindow.h
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index a5f7b05..4fa8103 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -141,6 +141,9 @@ bool MacTextWindow::draw(ManagedSurface *g, bool forceRedraw) {
if (_cursorState)
_composeSurface.blitFrom(*_cursorSurface, *_cursorRect, Common::Point(_cursorX + kConWOverlap, _cursorY + kConHOverlap));
+ if (_inTextSelection)
+ drawSelection();
+
_composeSurface.transBlitFrom(_borderSurface, kColorGreen);
g->transBlitFrom(_composeSurface, _composeSurface.getBounds(), Common::Point(_dims.left - 2, _dims.top - 2), kColorGreen2);
@@ -148,6 +151,34 @@ bool MacTextWindow::draw(ManagedSurface *g, bool forceRedraw) {
return true;
}
+void MacTextWindow::drawSelection() {
+ int start = MIN(_selectedText.startY, _selectedText.endY);
+ start -= _scrollPos;
+ start = MAX(0, start);
+
+ if (start > getInnerDimensions().height())
+ return;
+
+ int end = MAX(_selectedText.startY, _selectedText.endY);
+
+ end -= _scrollPos;
+
+ if (end < 0)
+ return;
+
+ end = MIN((int)getInnerDimensions().height(), end);
+
+ for (int y = start; y < end; y++) {
+ byte *ptr = (byte *)_composeSurface.getBasePtr(kConWOverlap - 2, kConWOverlap - 2 + y);
+
+ for (int x = 0; x < getInnerDimensions().width(); x++, ptr++)
+ if (*ptr == kColorBlack)
+ *ptr = kColorWhite;
+ else
+ *ptr = kColorBlack;
+ }
+}
+
bool MacTextWindow::processEvent(Common::Event &event) {
/*WindowClick click =*/ isInBorder(event.mouse.x, event.mouse.y);
@@ -266,7 +297,7 @@ void MacTextWindow::startMarking(int x, int y) {
y += _scrollPos;
- _mactext->getRowCol(x, y, &_selectedText.endX, &_selectedText.endY, &_selectedText.endRow, &_selectedText.endCol);
+ _mactext->getRowCol(x, y, &_selectedText.startX, &_selectedText.startY, &_selectedText.startRow, &_selectedText.startCol);
_selectedText.endY = -1;
diff --git a/graphics/macgui/mactextwindow.h b/graphics/macgui/mactextwindow.h
index b3d9ba8..14f9d2c 100644
--- a/graphics/macgui/mactextwindow.h
+++ b/graphics/macgui/mactextwindow.h
@@ -71,6 +71,7 @@ public:
private:
void undrawInput();
void drawInput();
+ void drawSelection();
void updateCursorPos();
void startMarking(int x, int y);
Commit: 49ad5ff0cf6f8c943914d22355facb1cfca1c59e
https://github.com/scummvm/scummvm/commit/49ad5ff0cf6f8c943914d22355facb1cfca1c59e
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
GRAPHICS: MACGUI: Do not draw text selection at beginning of selection
Changed paths:
graphics/macgui/mactextwindow.cpp
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 4fa8103..36c2bd6 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -152,6 +152,9 @@ bool MacTextWindow::draw(ManagedSurface *g, bool forceRedraw) {
}
void MacTextWindow::drawSelection() {
+ if (_selectedText.endY == -1)
+ return;
+
int start = MIN(_selectedText.startY, _selectedText.endY);
start -= _scrollPos;
start = MAX(0, start);
Commit: 0be9566a5a82826199cbb283d3373680c7ead019
https://github.com/scummvm/scummvm/commit/0be9566a5a82826199cbb283d3373680c7ead019
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
GRAPHICS: MACGUI: Simplified selection drawing code
Changed paths:
graphics/macgui/mactextwindow.cpp
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 36c2bd6..2194fdd 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -155,16 +155,22 @@ void MacTextWindow::drawSelection() {
if (_selectedText.endY == -1)
return;
- int start = MIN(_selectedText.startY, _selectedText.endY);
- start -= _scrollPos;
+ SelectedText s = _selectedText;
+
+ if (s.startY > s.endY) {
+ SWAP(s.startX, s.endX);
+ SWAP(s.startY, s.endY);
+ SWAP(s.startRow, s.endRow);
+ SWAP(s.startCol, s.endCol);
+ }
+
+ int start = s.startY - _scrollPos;
start = MAX(0, start);
if (start > getInnerDimensions().height())
return;
- int end = MAX(_selectedText.startY, _selectedText.endY);
-
- end -= _scrollPos;
+ int end = s.endY - _scrollPos;
if (end < 0)
return;
Commit: 71aadb5645a8d19ec015b372f5331dbb6440a719
https://github.com/scummvm/scummvm/commit/71aadb5645a8d19ec015b372f5331dbb6440a719
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
GRAPHICS: MACGUI: Correctly calculate row in MacText::getRowCol()
Changed paths:
graphics/macgui/mactext.cpp
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index 45e5249..b3942f0 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -454,6 +454,9 @@ void MacText::getRowCol(int x, int y, int *sx, int *sy, int *row, int *col) {
while (*row < _textLines.size() - 1 && _textLines[*row].y < y)
(*row)++;
+ if (*row)
+ (*row)--;
+
*sy = _textLines[*row].y;
*col = 0;
Commit: 676b6082ab0bcbaf2a5303c7471f87c9cfe847dd
https://github.com/scummvm/scummvm/commit/676b6082ab0bcbaf2a5303c7471f87c9cfe847dd
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
GRAPHICS: GUI: Mark beginning and end column of selection in MacTextWindow
Changed paths:
graphics/macgui/mactext.h
graphics/macgui/mactextwindow.cpp
diff --git a/graphics/macgui/mactext.h b/graphics/macgui/mactext.h
index ffc8c8d..7cbf40e 100644
--- a/graphics/macgui/mactext.h
+++ b/graphics/macgui/mactext.h
@@ -109,6 +109,7 @@ public:
void removeLastLine();
int getLineCount() { return _textLines.size(); }
int getTextHeight() { return _textMaxHeight; }
+ int getLineHeight(int line);
void render();
Graphics::ManagedSurface *getSurface() { return _surface; }
@@ -121,7 +122,6 @@ private:
void recalcDims();
void reallocSurface();
int getLineWidth(int line, bool enforce = false);
- int getLineHeight(int line);
private:
MacWindowManager *_wm;
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 2194fdd..7873ea2 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -164,6 +164,9 @@ void MacTextWindow::drawSelection() {
SWAP(s.startCol, s.endCol);
}
+ int lastLineHeight = _mactext->getLineHeight(s.endRow);
+ s.endY += lastLineHeight;
+
int start = s.startY - _scrollPos;
start = MAX(0, start);
@@ -177,10 +180,29 @@ void MacTextWindow::drawSelection() {
end = MIN((int)getInnerDimensions().height(), end);
+ int numLines = 0;
+ int x1, x2;
+
for (int y = start; y < end; y++) {
- byte *ptr = (byte *)_composeSurface.getBasePtr(kConWOverlap - 2, kConWOverlap - 2 + y);
+ if (!numLines) {
+ x1 = 0;
+ x2 = getInnerDimensions().width();
+
+ if (y + _scrollPos == s.startY && s.startX > 0) {
+ numLines = _mactext->getLineHeight(s.startRow);
+ x1 = s.startX;
+ }
+ if (y + _scrollPos == s.endY - lastLineHeight) {
+ numLines = _mactext->getLineHeight(s.endRow);
+ x2 = s.endX;
+ }
+ } else {
+ numLines--;
+ }
+
+ byte *ptr = (byte *)_composeSurface.getBasePtr(x1 + kConWOverlap - 2, y + kConWOverlap - 2);
- for (int x = 0; x < getInnerDimensions().width(); x++, ptr++)
+ for (int x = x1; x < x2; x++, ptr++)
if (*ptr == kColorBlack)
*ptr = kColorWhite;
else
Commit: aab404864e16f07307e44ed20310037c05e09ceb
https://github.com/scummvm/scummvm/commit/aab404864e16f07307e44ed20310037c05e09ceb
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
GRAPHICS: GUI: Fix flicker in selection
Changed paths:
graphics/macgui/mactextwindow.cpp
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 7873ea2..506cd36 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -186,7 +186,7 @@ void MacTextWindow::drawSelection() {
for (int y = start; y < end; y++) {
if (!numLines) {
x1 = 0;
- x2 = getInnerDimensions().width();
+ x2 = getInnerDimensions().width() - 1;
if (y + _scrollPos == s.startY && s.startX > 0) {
numLines = _mactext->getLineHeight(s.startRow);
Commit: afb664df290c54febd48b25efe6eeb5fccc0cfcc
https://github.com/scummvm/scummvm/commit/afb664df290c54febd48b25efe6eeb5fccc0cfcc
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
GRAPHICS: MACGUI: Made selection affecting the MacMenu
Changed paths:
engines/wage/gui.cpp
graphics/macgui/macmenu.cpp
graphics/macgui/macmenu.h
graphics/macgui/mactextwindow.cpp
graphics/macgui/mactextwindow.h
graphics/macgui/macwindowmanager.cpp
graphics/macgui/macwindowmanager.h
diff --git a/engines/wage/gui.cpp b/engines/wage/gui.cpp
index e6e439b..f4028df 100644
--- a/engines/wage/gui.cpp
+++ b/engines/wage/gui.cpp
@@ -183,7 +183,7 @@ Gui::Gui(WageEngine *engine) {
uint maxWidth = _screen.w;
- _consoleWindow = _wm.addTextWindow(font, kColorBlack, kColorWhite, maxWidth, Graphics::kTextAlignLeft);
+ _consoleWindow = _wm.addTextWindow(font, kColorBlack, kColorWhite, maxWidth, Graphics::kTextAlignLeft, _menu);
#else
_consoleWindow = _wm.addWindow(true, true, true);
#endif // USE_MACTEXTWINDOW
diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index 6cb14f9..e42430b 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -591,6 +591,25 @@ void MacMenu::enableCommand(int menunum, int action, bool state) {
_contentIsDirty = true;
}
+void MacMenu::enableCommand(const char *menuitem, const char *menuaction, bool state) {
+ int menunum = 0;
+
+ while (menunum < _items.size())
+ if (_items[menunum]->name.equalsIgnoreCase(menuitem))
+ break;
+ else
+ menunum++;
+
+ if (menunum == _items.size())
+ return;
+
+ for (uint i = 0; i < _items[menunum]->subitems.size(); i++)
+ if (_items[menunum]->subitems[i]->text.equalsIgnoreCase(menuaction))
+ _items[menunum]->subitems[i]->enabled = state;
+
+ _contentIsDirty = true;
+}
+
void MacMenu::disableAllMenus() {
for (uint i = 1; i < _items.size(); i++) // Leave About menu on
for (uint j = 0; j < _items[i]->subitems.size(); j++)
diff --git a/graphics/macgui/macmenu.h b/graphics/macgui/macmenu.h
index e7dde9a..a25b65a 100644
--- a/graphics/macgui/macmenu.h
+++ b/graphics/macgui/macmenu.h
@@ -59,6 +59,7 @@ public:
bool processEvent(Common::Event &event);
void enableCommand(int menunum, int action, bool state);
+ void enableCommand(const char *menuitem, const char *menuaction, bool state);
void disableAllMenus();
void setActive(bool active) { _menuActivated = active; }
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 506cd36..ce84a5b 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -26,6 +26,7 @@
#include "graphics/macgui/macwindowmanager.h"
#include "graphics/macgui/macfontmanager.h"
#include "graphics/macgui/mactextwindow.h"
+#include "graphics/macgui/macmenu.h"
namespace Graphics {
@@ -42,10 +43,11 @@ enum {
static void cursorTimerHandler(void *refCon);
-MacTextWindow::MacTextWindow(MacWindowManager *wm, const MacFont *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment) :
+MacTextWindow::MacTextWindow(MacWindowManager *wm, const MacFont *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu) :
MacWindow(wm->getLastId(), true, true, true, wm) {
_font = font;
+ _menu = menu;
_mactext = new MacText("", _wm, font, fgcolor, bgcolor, maxWidth, textAlignment);
_fontRef = wm->_fontMan->getFont(*font);
@@ -294,17 +296,17 @@ bool MacTextWindow::processEvent(Common::Event &event) {
(_selectedText.endX == _selectedText.startX && _selectedText.endY == _selectedText.startY)) {
_selectedText.startY = _selectedText.endY = -1;
_contentIsDirty = true;
- //_menu->enableCommand(kMenuEdit, kMenuActionCopy, false);
+ _menu->enableCommand("Edit", "Copy", false);
} else {
- //_menu->enableCommand(kMenuEdit, kMenuActionCopy, true);
+ _menu->enableCommand("Edit", "Copy", 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);
+ _menu->enableCommand("Edit", "Cut", cutAllowed);
+ _menu->enableCommand("Edit", "Clear", cutAllowed);
}
}
diff --git a/graphics/macgui/mactextwindow.h b/graphics/macgui/mactextwindow.h
index 14f9d2c..bc1bf2d 100644
--- a/graphics/macgui/mactextwindow.h
+++ b/graphics/macgui/mactextwindow.h
@@ -48,7 +48,7 @@ struct SelectedText {
class MacTextWindow : public MacWindow {
public:
- MacTextWindow(MacWindowManager *wm, const MacFont *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment);
+ MacTextWindow(MacWindowManager *wm, const MacFont *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu);
virtual ~MacTextWindow();
virtual void resize(int w, int h);
@@ -102,6 +102,7 @@ private:
uint _inputTextHeight;
bool _inputIsDirty;
+ MacMenu *_menu;
};
} // End of namespace Graphics
diff --git a/graphics/macgui/macwindowmanager.cpp b/graphics/macgui/macwindowmanager.cpp
index d3f7d22..9a3e711 100644
--- a/graphics/macgui/macwindowmanager.cpp
+++ b/graphics/macgui/macwindowmanager.cpp
@@ -183,8 +183,8 @@ MacWindow *MacWindowManager::addWindow(bool scrollable, bool resizable, bool edi
return w;
}
-MacTextWindow *MacWindowManager::addTextWindow(const MacFont *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment) {
- MacTextWindow *w = new MacTextWindow(this, font, fgcolor, bgcolor, maxWidth, textAlignment);
+MacTextWindow *MacWindowManager::addTextWindow(const MacFont *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu) {
+ MacTextWindow *w = new MacTextWindow(this, font, fgcolor, bgcolor, maxWidth, textAlignment, menu);
addWindowInitialized(w);
diff --git a/graphics/macgui/macwindowmanager.h b/graphics/macgui/macwindowmanager.h
index 963fc35..bc0224a 100644
--- a/graphics/macgui/macwindowmanager.h
+++ b/graphics/macgui/macwindowmanager.h
@@ -107,7 +107,7 @@ public:
* @return Pointer to the newly created window.
*/
MacWindow *addWindow(bool scrollable, bool resizable, bool editable);
- MacTextWindow *addTextWindow(const MacFont *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment);
+ MacTextWindow *addTextWindow(const MacFont *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu);
/**
* Adds a window that has already been initialized to the registry.
Commit: 66f59aa893449596298a2cee1d8f761bcf8cc9bd
https://github.com/scummvm/scummvm/commit/66f59aa893449596298a2cee1d8f761bcf8cc9bd
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
GRAPHICS: MACGUI: Correctly display selection during scrolling
Changed paths:
graphics/macgui/mactextwindow.cpp
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index ce84a5b..9d1de2f 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -166,8 +166,8 @@ void MacTextWindow::drawSelection() {
SWAP(s.startCol, s.endCol);
}
- int lastLineHeight = _mactext->getLineHeight(s.endRow);
- s.endY += lastLineHeight;
+ int lastLineStart = s.endY;
+ s.endY += _mactext->getLineHeight(s.endRow);
int start = s.startY - _scrollPos;
start = MAX(0, start);
@@ -194,7 +194,7 @@ void MacTextWindow::drawSelection() {
numLines = _mactext->getLineHeight(s.startRow);
x1 = s.startX;
}
- if (y + _scrollPos == s.endY - lastLineHeight) {
+ if (y + _scrollPos == lastLineStart) {
numLines = _mactext->getLineHeight(s.endRow);
x2 = s.endX;
}
Commit: 23649e8d87bf2c1d8c93fa0c4a6502285b258429
https://github.com/scummvm/scummvm/commit/23649e8d87bf2c1d8c93fa0c4a6502285b258429
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
GRAPHICS: MACGUI: Initial code for copying selection to clipboard
Changed paths:
graphics/macgui/mactext.cpp
graphics/macgui/mactext.h
graphics/macgui/mactextwindow.cpp
graphics/macgui/mactextwindow.h
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index b3942f0..f236679 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -492,4 +492,80 @@ void MacText::getRowCol(int x, int y, int *sx, int *sy, int *row, int *col) {
}
}
+Common::String MacText::getTextChunk(int startRow, int startCol, int endRow, int endCol, bool formatted) {
+ Common::String res;
+
+ CLIP(startRow, 0, (int)_textLines.size() - 1);
+ CLIP(endRow, 0, (int)_textLines.size() - 1);
+
+ for (int i = startRow; i <= endRow; i++) {
+ if (i == startRow && i == endRow) {
+ for (uint chunk = 0; chunk < _textLines[i].chunks.size() - 1; chunk++) {
+ if (startCol <= 0) {
+ if (formatted)
+ res += _textLines[i].chunks[chunk].toString();
+
+ if (endCol <= _textLines[i].chunks[chunk].text.size())
+ res += _textLines[i].chunks[chunk].text;
+ else
+ res += Common::String(_textLines[i].chunks[chunk].text.c_str(), endCol);
+ } else if (_textLines[i].chunks[chunk].text.size() > startCol) {
+ if (formatted)
+ res += _textLines[i].chunks[chunk].toString();
+
+ res += Common::String(_textLines[i].chunks[chunk].text.c_str() + startCol);
+ }
+
+ startCol -= _textLines[i].chunks[chunk].text.size();
+ endCol -= _textLines[i].chunks[chunk].text.size();
+
+ if (endCol <= 0)
+ break;
+ }
+ } else if (i == startRow && startCol != 0) {
+ for (uint chunk = 0; chunk < _textLines[i].chunks.size() - 1; chunk++) {
+ if (startCol <= 0) {
+ if (formatted)
+ res += _textLines[i].chunks[chunk].toString();
+
+ res += _textLines[i].chunks[chunk].text;
+ } else if (_textLines[i].chunks[chunk].text.size() > startCol) {
+ if (formatted)
+ res += _textLines[i].chunks[chunk].toString();
+
+ res += Common::String(_textLines[i].chunks[chunk].text.c_str() + startCol);
+ }
+
+ startCol -= _textLines[i].chunks[chunk].text.size();
+ }
+ } else if (i == endRow) {
+ for (uint chunk = 0; chunk < _textLines[i].chunks.size() - 1; chunk++) {
+ if (formatted)
+ res += _textLines[i].chunks[chunk].toString();
+
+ if (endCol <= _textLines[i].chunks[chunk].text.size())
+ res += _textLines[i].chunks[chunk].text;
+ else
+ res += Common::String(_textLines[i].chunks[chunk].text.c_str(), endCol);
+
+ endCol -= _textLines[i].chunks[chunk].text.size();
+
+ if (endCol <= 0)
+ break;
+ }
+ } else {
+ for (uint chunk = 0; chunk < _textLines[i].chunks.size() - 1; chunk++) {
+ if (formatted)
+ res += _textLines[i].chunks[chunk].toString();
+
+ res += _textLines[i].chunks[chunk].text;
+ }
+
+ res += '\n';
+ }
+ }
+
+ return res;
+}
+
} // End of namespace Graphics
diff --git a/graphics/macgui/mactext.h b/graphics/macgui/mactext.h
index 7cbf40e..eb567cf 100644
--- a/graphics/macgui/mactext.h
+++ b/graphics/macgui/mactext.h
@@ -116,6 +116,8 @@ public:
void getRowCol(int x, int y, int *sx, int *sy, int *row, int *col);
+ Common::String getTextChunk(int startRow, int startCol, int endRow, int endCol, bool formatted = false);
+
private:
void splitString(Common::String &s);
void render(int from, int to);
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 9d1de2f..fb75f41 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -212,6 +212,20 @@ void MacTextWindow::drawSelection() {
}
}
+Common::String MacTextWindow::getSelection(bool formatted) {
+ if (_selectedText.endY == -1)
+ return Common::String("");
+
+ SelectedText s = _selectedText;
+
+ if (s.startY > s.endY) {
+ SWAP(s.startRow, s.endRow);
+ SWAP(s.startCol, s.endCol);
+ }
+
+ return _mactext->getTextChunk(s.startRow, s.startCol, s.endRow, s.endCol, formatted);
+}
+
bool MacTextWindow::processEvent(Common::Event &event) {
/*WindowClick click =*/ isInBorder(event.mouse.x, event.mouse.y);
diff --git a/graphics/macgui/mactextwindow.h b/graphics/macgui/mactextwindow.h
index bc1bf2d..60ed820 100644
--- a/graphics/macgui/mactextwindow.h
+++ b/graphics/macgui/mactextwindow.h
@@ -68,6 +68,8 @@ public:
const Common::String getInput() { return _inputText; }
void clearInput();
+ Common::String getSelection(bool formatted = false);
+
private:
void undrawInput();
void drawInput();
Commit: 951244ac3facbb512966938c0c9acdd1eeb87ff6
https://github.com/scummvm/scummvm/commit/951244ac3facbb512966938c0c9acdd1eeb87ff6
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
WAGE: Use MacTextWindow code for copying to clipboard
Changed paths:
engines/wage/gui-console.cpp
diff --git a/engines/wage/gui-console.cpp b/engines/wage/gui-console.cpp
index 53ccb55..56c111e 100644
--- a/engines/wage/gui-console.cpp
+++ b/engines/wage/gui-console.cpp
@@ -373,37 +373,7 @@ void Gui::drawInput() {
}
void Gui::actionCopy() {
- if (_selectionStartX == -1)
- return;
-
- int startX = _selectionStartX;
- int startY = _selectionStartY;
- int endX = _selectionEndX;
- int endY = _selectionEndY;
-
- if (startY > endY) {
- SWAP(startX, endX);
- SWAP(endX, endY);
- }
-
- _clipboard.clear();
-
- for (int i = startY; i <= endY; i++) {
- if (startY == endY) {
- _clipboard = Common::String(&_lines[i].c_str()[startX], &_lines[i].c_str()[endX]);
- break;
- }
-
- if (i == startY) {
- _clipboard += &_lines[i].c_str()[startX];
- _clipboard += '\n';
- } else if (i == endY) {
- _clipboard += Common::String(_lines[i].c_str(), &_lines[i].c_str()[endX]);
- } else {
- _clipboard += _lines[i];
- _clipboard += '\n';
- }
- }
+ _clipboard = _consoleWindow->getSelection();
_menu->enableCommand(kMenuEdit, kMenuActionPaste, true);
}
Commit: a5fa164b8e944a710dda6dd3c58c578ba88f72d9
https://github.com/scummvm/scummvm/commit/a5fa164b8e944a710dda6dd3c58c578ba88f72d9
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
GRAPHICS: MACGUI: Bugfixes for selection copying in MacText
Changed paths:
graphics/macgui/mactext.cpp
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index f236679..64a8ebf 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -500,12 +500,12 @@ Common::String MacText::getTextChunk(int startRow, int startCol, int endRow, int
for (int i = startRow; i <= endRow; i++) {
if (i == startRow && i == endRow) {
- for (uint chunk = 0; chunk < _textLines[i].chunks.size() - 1; chunk++) {
+ for (uint chunk = 0; chunk < _textLines[i].chunks.size(); chunk++) {
if (startCol <= 0) {
if (formatted)
res += _textLines[i].chunks[chunk].toString();
- if (endCol <= _textLines[i].chunks[chunk].text.size())
+ if (endCol >= _textLines[i].chunks[chunk].text.size())
res += _textLines[i].chunks[chunk].text;
else
res += Common::String(_textLines[i].chunks[chunk].text.c_str(), endCol);
@@ -513,7 +513,7 @@ Common::String MacText::getTextChunk(int startRow, int startCol, int endRow, int
if (formatted)
res += _textLines[i].chunks[chunk].toString();
- res += Common::String(_textLines[i].chunks[chunk].text.c_str() + startCol);
+ res += Common::String(_textLines[i].chunks[chunk].text.c_str() + startCol, endCol - startCol);
}
startCol -= _textLines[i].chunks[chunk].text.size();
@@ -523,7 +523,7 @@ Common::String MacText::getTextChunk(int startRow, int startCol, int endRow, int
break;
}
} else if (i == startRow && startCol != 0) {
- for (uint chunk = 0; chunk < _textLines[i].chunks.size() - 1; chunk++) {
+ for (uint chunk = 0; chunk < _textLines[i].chunks.size(); chunk++) {
if (startCol <= 0) {
if (formatted)
res += _textLines[i].chunks[chunk].toString();
@@ -539,11 +539,11 @@ Common::String MacText::getTextChunk(int startRow, int startCol, int endRow, int
startCol -= _textLines[i].chunks[chunk].text.size();
}
} else if (i == endRow) {
- for (uint chunk = 0; chunk < _textLines[i].chunks.size() - 1; chunk++) {
+ for (uint chunk = 0; chunk < _textLines[i].chunks.size(); chunk++) {
if (formatted)
res += _textLines[i].chunks[chunk].toString();
- if (endCol <= _textLines[i].chunks[chunk].text.size())
+ if (endCol >= _textLines[i].chunks[chunk].text.size())
res += _textLines[i].chunks[chunk].text;
else
res += Common::String(_textLines[i].chunks[chunk].text.c_str(), endCol);
@@ -554,7 +554,7 @@ Common::String MacText::getTextChunk(int startRow, int startCol, int endRow, int
break;
}
} else {
- for (uint chunk = 0; chunk < _textLines[i].chunks.size() - 1; chunk++) {
+ for (uint chunk = 0; chunk < _textLines[i].chunks.size(); chunk++) {
if (formatted)
res += _textLines[i].chunks[chunk].toString();
Commit: dd2123f8bfeb81e5cc3f36788df54bd92945bf07
https://github.com/scummvm/scummvm/commit/dd2123f8bfeb81e5cc3f36788df54bd92945bf07
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
GRAPHICS: MACGUI: Added method to append input to MacTextWindow
Changed paths:
graphics/macgui/mactextwindow.cpp
graphics/macgui/mactextwindow.h
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index fb75f41..6b46b05 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -398,6 +398,12 @@ void MacTextWindow::clearInput() {
_inputText.clear();
}
+void MacTextWindow::appendInput(Common::String str) {
+ _inputText += str;
+
+ drawInput();
+}
+
//////////////////
// Cursor stuff
static void cursorTimerHandler(void *refCon) {
diff --git a/graphics/macgui/mactextwindow.h b/graphics/macgui/mactextwindow.h
index 60ed820..e6672c7 100644
--- a/graphics/macgui/mactextwindow.h
+++ b/graphics/macgui/mactextwindow.h
@@ -67,6 +67,7 @@ public:
const Common::String getInput() { return _inputText; }
void clearInput();
+ void appendInput(Common::String str);
Common::String getSelection(bool formatted = false);
Commit: 532af0bb602397790bc53ef652b0ce12a030d648
https://github.com/scummvm/scummvm/commit/532af0bb602397790bc53ef652b0ce12a030d648
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
WAGE: Use MacTextWindow for Undo and Paste
Changed paths:
engines/wage/gui-console.cpp
diff --git a/engines/wage/gui-console.cpp b/engines/wage/gui-console.cpp
index 56c111e..7987f5a 100644
--- a/engines/wage/gui-console.cpp
+++ b/engines/wage/gui-console.cpp
@@ -380,16 +380,15 @@ void Gui::actionCopy() {
void Gui::actionPaste() {
_undobuffer = _engine->_inputText;
- _engine->_inputText += _clipboard;
- drawInput();
- _engine->_inputText = _out.back(); // Set last part of the multiline text
+
+ _consoleWindow->appendInput(_clipboard);
_menu->enableCommand(kMenuEdit, kMenuActionUndo, true);
}
void Gui::actionUndo() {
- _engine->_inputText = _undobuffer;
- drawInput();
+ _consoleWindow->clearInput();
+ _consoleWindow->appendInput(_clipboard);
_menu->enableCommand(kMenuEdit, kMenuActionUndo, false);
}
Commit: b2848951007b0667a258aaaea7b4d84a06bdeb83
https://github.com/scummvm/scummvm/commit/b2848951007b0667a258aaaea7b4d84a06bdeb83
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
GRAPHICS: MACGUI: Leave text highlight after selection is made
Changed paths:
graphics/macgui/mactextwindow.cpp
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 6b46b05..c55d24a 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -143,7 +143,7 @@ bool MacTextWindow::draw(ManagedSurface *g, bool forceRedraw) {
if (_cursorState)
_composeSurface.blitFrom(*_cursorSurface, *_cursorRect, Common::Point(_cursorX + kConWOverlap, _cursorY + kConHOverlap));
- if (_inTextSelection)
+ if (_selectedText.endY != -1)
drawSelection();
_composeSurface.transBlitFrom(_borderSurface, kColorGreen);
Commit: 55a241494e0045d6e9a6b573e4d2cae3f390244f
https://github.com/scummvm/scummvm/commit/55a241494e0045d6e9a6b573e4d2cae3f390244f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
GRAPHICS: MACGUI: Improved text selection edge case behaviour
Changed paths:
graphics/macgui/mactext.cpp
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index 64a8ebf..ade339f 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -451,11 +451,13 @@ void MacText::getRowCol(int x, int y, int *sx, int *sy, int *row, int *col) {
// FIXME: We should use bsearch() here
*row = 0;
- while (*row < _textLines.size() - 1 && _textLines[*row].y < y)
+ while (*row < _textLines.size() && _textLines[*row].y < y)
(*row)++;
- if (*row)
+ if (*row == _textLines.size()) {
(*row)--;
+ x = getLineWidth(*row);
+ }
*sy = _textLines[*row].y;
@@ -464,7 +466,7 @@ void MacText::getRowCol(int x, int y, int *sx, int *sy, int *row, int *col) {
int width = 0, pwidth = 0;
int mcol = 0, pmcol = 0;
uint chunk;
- for (chunk = 0; chunk < _textLines[*row].chunks.size() - 1; chunk++) {
+ for (chunk = 0; chunk < _textLines[*row].chunks.size(); chunk++) {
pwidth = width;
pmcol = mcol;
if (!_textLines[*row].chunks[chunk].text.empty()) {
@@ -476,6 +478,9 @@ void MacText::getRowCol(int x, int y, int *sx, int *sy, int *row, int *col) {
break;
}
+ if (chunk == _textLines[*row].chunks.size())
+ chunk--;
+
Common::String str = _textLines[*row].chunks[chunk].text;
*col = mcol;
Commit: 9e81f4de89d8625757578f152833a6e1f71c997a
https://github.com/scummvm/scummvm/commit/9e81f4de89d8625757578f152833a6e1f71c997a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
GRAPHICS: MACGUI: Better selection row detection
Changed paths:
graphics/macgui/mactext.cpp
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index ade339f..4647f9c 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -449,15 +449,13 @@ void MacText::getRowCol(int x, int y, int *sx, int *sy, int *row, int *col) {
CLIP(y, 0, _textMaxHeight);
// FIXME: We should use bsearch() here
- *row = 0;
+ *row = _textLines.size() - 1;
- while (*row < _textLines.size() && _textLines[*row].y < y)
- (*row)++;
-
- if (*row == _textLines.size()) {
+ while (*row && _textLines[*row].y > y)
(*row)--;
+
+ if (y > _textMaxHeight)
x = getLineWidth(*row);
- }
*sy = _textLines[*row].y;
Commit: 410efd9ff5a16821691efa29c438aeea4be8d497
https://github.com/scummvm/scummvm/commit/410efd9ff5a16821691efa29c438aeea4be8d497
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
GRAPHICS: MACGUI: Fix detection for Cut command enablement
Changed paths:
graphics/macgui/mactextwindow.cpp
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index c55d24a..cc8c117 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -316,7 +316,7 @@ bool MacTextWindow::processEvent(Common::Event &event) {
bool cutAllowed = false;
- if (_selectedText.startY == _selectedText.endY && _selectedText.startY == _mactext->getLineCount() - 1)
+ if (_selectedText.startRow == _selectedText.endRow && _selectedText.startRow == _mactext->getLineCount() - 1)
cutAllowed = true;
_menu->enableCommand("Edit", "Cut", cutAllowed);
Commit: c7f83cd43565cf1166c40a0d4cc4d9ddb4f6d866
https://github.com/scummvm/scummvm/commit/c7f83cd43565cf1166c40a0d4cc4d9ddb4f6d866
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
GRAPHICS: MACGUI: Fix end line text selection hihglight
Changed paths:
graphics/macgui/mactext.cpp
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index 4647f9c..d3a612c 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -455,7 +455,7 @@ void MacText::getRowCol(int x, int y, int *sx, int *sy, int *row, int *col) {
(*row)--;
if (y > _textMaxHeight)
- x = getLineWidth(*row);
+ x = _surface->w;
*sy = _textLines[*row].y;
Commit: 1241ada63a1117c44b0df7d87cb0ad9c863fd837
https://github.com/scummvm/scummvm/commit/1241ada63a1117c44b0df7d87cb0ad9c863fd837
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
GRAPHICS: MACGUI: Fixed bug with column detection in text selection
Changed paths:
graphics/macgui/mactext.cpp
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index d3a612c..88fe642 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -486,7 +486,7 @@ void MacText::getRowCol(int x, int y, int *sx, int *sy, int *row, int *col) {
for (int i = str.size(); i >= 0; i--) {
int strw = _textLines[*row].chunks[chunk].getFont()->getStringWidth(str);
if (strw + pwidth < x) {
- *col = mcol + i;
+ *col = pmcol + i;
*sx = strw + pwidth;
break;
}
Commit: 2aac665a2bd5c20b5b125711a32c0f677b65894f
https://github.com/scummvm/scummvm/commit/2aac665a2bd5c20b5b125711a32c0f677b65894f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:54:20+02:00
Commit Message:
GRAPHICS: MACGUI: Fix displaying two line text selections
Changed paths:
graphics/macgui/mactextwindow.cpp
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index cc8c117..be8d75f 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -194,7 +194,7 @@ void MacTextWindow::drawSelection() {
numLines = _mactext->getLineHeight(s.startRow);
x1 = s.startX;
}
- if (y + _scrollPos == lastLineStart) {
+ if (y + _scrollPos == lastLineStart + 1) {
numLines = _mactext->getLineHeight(s.endRow);
x2 = s.endX;
}
Commit: dfaadb176385761503906bdc90a1916c6c7e628e
https://github.com/scummvm/scummvm/commit/dfaadb176385761503906bdc90a1916c6c7e628e
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-08-04T21:55:08+02:00
Commit Message:
GRAPHICS: MACGUI: Fix compilation
Changed paths:
graphics/macgui/mactextwindow.cpp
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index be8d75f..2af4aef 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -227,7 +227,7 @@ Common::String MacTextWindow::getSelection(bool formatted) {
}
bool MacTextWindow::processEvent(Common::Event &event) {
- /*WindowClick click =*/ isInBorder(event.mouse.x, event.mouse.y);
+ WindowClick click = isInBorder(event.mouse.x, event.mouse.y);
if (event.type == Common::EVENT_KEYDOWN) {
_wm->setActive(getId());
More information about the Scummvm-git-logs
mailing list