[Scummvm-git-logs] scummvm master -> c8c30f845173e4c0cfa15ec30402eb4ad5233a17
sev-
noreply at scummvm.org
Sun Sep 21 20:13:01 UTC 2025
This automated email contains information about 17 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
5fd7cf914f DIRECTOR: Remove leftovers of MacTextWindow usage
7348fee0b9 GRAPHICS: MACGUI: Allow specifying MacWidget border color instead of hardcode
d52f0d2dbd GRAPHICS: MACGUI: Add 'padding' parameter to MacTextWindow
5067819370 GRAPHICS: MACGUI: Fix crash on MacText destruction
16092a2502 GRAPHICS: MACGUI: Partial fixes for border drawing in MacText
5fcf39afc9 WAGE: Set text border color to white
e8ab5b08ab GPRAHICS: MACGUI: Drop cursor handling parameter from MacTextWindow
4f50cdb020 GRAPHICS: MACGUI: Remove cursor handling from MacTextWindow
f68f2635b8 WAGE: Always switch focus to text window on keypress
6db5cd36d5 GRAPHICS: MACGUI: Remove text selection code from MacTextWindow
8dffab6e37 GRAPHICS: MACGUI: Adjust event coordinates when passing it to MacText
a7b33811fb GRAPHICS: MACGUI: Do not redraw text selection needlessly
4fcee50d46 GRAPHOCS: MACGUI: Do not force MacText to redraw unless required
78bc41ea8d GRAPHICS: MACGUI: Fix cursor and selection positions with non-zero border
100acf2fd0 JANITORIAL: Remove trailing spaces
5486674fd9 GRAPHICS: MACGIU: Fix MacText maxWidth calculation
c8c30f8451 WAGE: Set inner text passing to 1
Commit: 5fd7cf914f1a899a2b647c06b068cd5ad289370f
https://github.com/scummvm/scummvm/commit/5fd7cf914f1a899a2b647c06b068cd5ad289370f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-21T22:12:37+02:00
Commit Message:
DIRECTOR: Remove leftovers of MacTextWindow usage
Since now we switched all to use MacText directly, this code
became a no-op
Changed paths:
engines/director/channel.cpp
diff --git a/engines/director/channel.cpp b/engines/director/channel.cpp
index cbddbe15d06..17a4f5abfd0 100644
--- a/engines/director/channel.cpp
+++ b/engines/director/channel.cpp
@@ -35,7 +35,6 @@
#include "director/castmember/movie.h"
#include "graphics/macgui/mactext.h"
-#include "graphics/macgui/mactextwindow.h"
#include "graphics/macgui/macbutton.h"
namespace Director {
@@ -767,10 +766,6 @@ int Channel::getMouseLine(int x, int y) {
return -1;
}
- // If widget is type textWindow, then we need to get the line from the window
- if (dynamic_cast<Graphics::MacTextWindow *>(_widget))
- return ((Graphics::MacTextWindow *)_widget)->getMouseLine(x, y);
-
return ((Graphics::MacText *)_widget)->getMouseLine(x, y);
}
Commit: 7348fee0b99bc61b191de0b9ae9c7a3b2dadab5b
https://github.com/scummvm/scummvm/commit/7348fee0b99bc61b191de0b9ae9c7a3b2dadab5b
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-21T22:12:37+02:00
Commit Message:
GRAPHICS: MACGUI: Allow specifying MacWidget border color instead of hardcode
Changed paths:
graphics/macgui/mactext.cpp
graphics/macgui/mactextwindow.h
graphics/macgui/macwidget.cpp
graphics/macgui/macwidget.h
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index a3929059acc..8eb498e310a 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -954,7 +954,7 @@ bool MacText::draw(bool forceRedraw) {
for (int bb = 0; bb < _border; bb++) {
Common::Rect borderRect(bb, bb, _composeSurface->w - bb, _composeSurface->h - bb);
- _composeSurface->frameRect(borderRect, 0xff);
+ _composeSurface->frameRect(borderRect, _borderColor);
}
if (_selectedText.endY != -1)
diff --git a/graphics/macgui/mactextwindow.h b/graphics/macgui/mactextwindow.h
index 194ed7f7d04..069bea3eeca 100644
--- a/graphics/macgui/mactextwindow.h
+++ b/graphics/macgui/mactextwindow.h
@@ -89,6 +89,7 @@ public:
int getMouseLine(int x, int y);
+ virtual void setBorderColor(uint32 color) override { _mactext->setBorderColor(color); }
/**
* if we want to draw the text which color is not black, then we need to set _textColorRGB
* @param rgb text color you want to draw
diff --git a/graphics/macgui/macwidget.cpp b/graphics/macgui/macwidget.cpp
index 1d2ecb6425c..e04d8f98747 100644
--- a/graphics/macgui/macwidget.cpp
+++ b/graphics/macgui/macwidget.cpp
@@ -47,6 +47,8 @@ MacWidget::MacWidget(MacWidget *parent, int x, int y, int w, int h, MacWindowMan
_active = false;
_editable = false;
+
+ _borderColor = 0xff;
}
MacWidget::~MacWidget() {
diff --git a/graphics/macgui/macwidget.h b/graphics/macgui/macwidget.h
index fc0fbfb575b..a1781f3a046 100644
--- a/graphics/macgui/macwidget.h
+++ b/graphics/macgui/macwidget.h
@@ -71,6 +71,10 @@ public:
virtual bool isEditable() { return _editable; }
virtual void setColors(uint32 fg, uint32 bg);
+ virtual void setBorderColor(uint32 color) {
+ _borderColor = color;
+ _contentIsDirty = true;
+ }
virtual void setDimensions(const Common::Rect &r) {
_dims = r;
@@ -87,6 +91,7 @@ protected:
uint16 _border;
uint16 _gutter;
uint16 _shadow;
+ uint32 _borderColor;
uint32 _fgcolor, _bgcolor;
Commit: d52f0d2dbdb50a059c3c3f1f573c493f3a100ea4
https://github.com/scummvm/scummvm/commit/d52f0d2dbdb50a059c3c3f1f573c493f3a100ea4
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-21T22:12:37+02:00
Commit Message:
GRAPHICS: MACGUI: Add 'padding' parameter to MacTextWindow
Specifies internal text padding from the window borders
Changed paths:
graphics/macgui/mactextwindow.cpp
graphics/macgui/mactextwindow.h
graphics/macgui/macwindowmanager.cpp
graphics/macgui/macwindowmanager.h
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 5915a7ac295..2669b0ace36 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -42,22 +42,22 @@ enum {
static void cursorTimerHandler(void *refCon);
-MacTextWindow::MacTextWindow(MacWindowManager *wm, const MacFont *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, bool cursorHandler) :
+MacTextWindow::MacTextWindow(MacWindowManager *wm, const MacFont *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, bool cursorHandler, int padding) :
MacWindow(wm->getLastId(), true, true, true, wm), _bgcolor(bgcolor), _maxWidth(maxWidth), _menu(menu) {
_font = font;
- _mactext = new MacText(this, 0, 0, 0, 0, _wm, Common::U32String(""), font, fgcolor, bgcolor, maxWidth, textAlignment);
+ _mactext = new MacText(this, 0, 0, 0, 0, _wm, Common::U32String(""), font, fgcolor, bgcolor, maxWidth, textAlignment, 0, padding);
_fontRef = wm->_fontMan->getFont(*font);
init(cursorHandler);
}
-MacTextWindow::MacTextWindow(MacWindowManager *wm, const Font *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, bool cursorHandler) :
+MacTextWindow::MacTextWindow(MacWindowManager *wm, const Font *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, bool cursorHandler, int padding) :
MacWindow(wm->getLastId(), true, true, true, wm), _bgcolor(bgcolor), _maxWidth(maxWidth), _menu(menu) {
_font = nullptr;
- _mactext = new MacText(Common::U32String(""), _wm, font, fgcolor, bgcolor, maxWidth, textAlignment);
+ _mactext = new MacText(Common::U32String(""), _wm, font, fgcolor, bgcolor, maxWidth, textAlignment, 0, padding);
_fontRef = font;
@@ -374,7 +374,7 @@ int MacTextWindow::getMouseLine(int x, int y) {
// sometimes error of +2 rows
x -= getInnerDimensions().left;
y -= getInnerDimensions().top + kConScrollStep;
- return _mactext->getMouseLine(x, y);
+ return _mactext->getMouseLine(x, y);
}
void MacTextWindow::calcScrollBar() {
diff --git a/graphics/macgui/mactextwindow.h b/graphics/macgui/mactextwindow.h
index 069bea3eeca..d491257a8dc 100644
--- a/graphics/macgui/mactextwindow.h
+++ b/graphics/macgui/mactextwindow.h
@@ -29,8 +29,8 @@ namespace Graphics {
class MacTextWindow : public MacWindow {
public:
- MacTextWindow(MacWindowManager *wm, const MacFont *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, bool cursorHandler = true);
- MacTextWindow(MacWindowManager *wm, const Font *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, bool cursorHandler = true);
+ MacTextWindow(MacWindowManager *wm, const MacFont *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, bool cursorHandler = true, int padding = 0);
+ MacTextWindow(MacWindowManager *wm, const Font *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, bool cursorHandler = true, int padding = 0);
virtual ~MacTextWindow();
virtual void resize(int w, int h) override;
diff --git a/graphics/macgui/macwindowmanager.cpp b/graphics/macgui/macwindowmanager.cpp
index 944e2661f2b..039b63fbb0e 100644
--- a/graphics/macgui/macwindowmanager.cpp
+++ b/graphics/macgui/macwindowmanager.cpp
@@ -399,8 +399,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, MacMenu *menu, bool cursorHandler) {
- MacTextWindow *w = new MacTextWindow(this, font, fgcolor, bgcolor, maxWidth, textAlignment, menu, cursorHandler);
+MacTextWindow *MacWindowManager::addTextWindow(const MacFont *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, bool cursorHandler, int padding) {
+ MacTextWindow *w = new MacTextWindow(this, font, fgcolor, bgcolor, maxWidth, textAlignment, menu, cursorHandler, padding);
addWindowInitialized(w);
@@ -409,8 +409,8 @@ MacTextWindow *MacWindowManager::addTextWindow(const MacFont *font, int fgcolor,
return w;
}
-MacTextWindow *MacWindowManager::addTextWindow(const Font *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, bool cursorHandler) {
- MacTextWindow *w = new MacTextWindow(this, font, fgcolor, bgcolor, maxWidth, textAlignment, menu, cursorHandler);
+MacTextWindow *MacWindowManager::addTextWindow(const Font *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, bool cursorHandler, int padding) {
+ MacTextWindow *w = new MacTextWindow(this, font, fgcolor, bgcolor, maxWidth, textAlignment, menu, cursorHandler, padding);
addWindowInitialized(w);
diff --git a/graphics/macgui/macwindowmanager.h b/graphics/macgui/macwindowmanager.h
index 87ae6a563d7..f27b8a1990f 100644
--- a/graphics/macgui/macwindowmanager.h
+++ b/graphics/macgui/macwindowmanager.h
@@ -179,8 +179,8 @@ 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, MacMenu *menu, bool cursorHandler = true);
- MacTextWindow *addTextWindow(const Font *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, bool cursorHandler = true);
+ MacTextWindow *addTextWindow(const MacFont *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, bool cursorHandler = true, int padding = 0);
+ MacTextWindow *addTextWindow(const Font *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, bool cursorHandler = true, int padding = 0);
void resizeScreen(int w, int h);
/**
Commit: 50678193709787207b3530a8e5528901339c0078
https://github.com/scummvm/scummvm/commit/50678193709787207b3530a8e5528901339c0078
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-21T22:12:37+02:00
Commit Message:
GRAPHICS: MACGUI: Fix crash on MacText destruction
Changed paths:
graphics/macgui/mactext.cpp
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index 8eb498e310a..fc23e1b3a2d 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -278,6 +278,8 @@ MacText::~MacText() {
if (_wm->getActiveWidget() == this)
_wm->setActiveWidget(nullptr);
+ g_system->getTimerManager()->removeTimerProc(&cursorTimerHandler);
+
_borderSurface.free();
delete _cursorRect;
Commit: 16092a25028cd70b25a8ffe937428847afab2686
https://github.com/scummvm/scummvm/commit/16092a25028cd70b25a8ffe937428847afab2686
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-21T22:12:38+02:00
Commit Message:
GRAPHICS: MACGUI: Partial fixes for border drawing in MacText
Changed paths:
graphics/macgui/mactext.cpp
graphics/macgui/mactextwindow.cpp
graphics/macgui/mactextwindow.h
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index fc23e1b3a2d..177f715b000 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -198,7 +198,7 @@ MacText::MacText(const Common::U32String &s, MacWindowManager *wm, const Font *f
void MacText::init(uint32 fgcolor, uint32 bgcolor, int maxWidth, TextAlign textAlignment, int interlinear, uint16 textShadow, bool macFontMode) {
_fullRefresh = true;
- _canvas._maxWidth = maxWidth;
+ _canvas._maxWidth = maxWidth - _border * 2 - _gutter * 2 - _shadow;
_canvas._textAlignment = textAlignment;
_canvas._textShadow = textShadow;
_canvas._interLinear = interlinear;
@@ -240,8 +240,8 @@ void MacText::init(uint32 fgcolor, uint32 bgcolor, int maxWidth, TextAlign textA
_menu = nullptr;
- _cursorX = 0;
- _cursorY = 0;
+ _cursorX = _border;
+ _cursorY = _border;
_cursorState = false;
_cursorOff = false;
@@ -2135,7 +2135,7 @@ static void cursorTimerHandler(void *refCon) {
void MacText::updateCursorPos() {
if (_canvas._text.empty()) {
- _cursorX = _cursorY = 0;
+ _cursorX = _cursorY = _border;
} else {
undrawCursor();
@@ -2143,8 +2143,8 @@ void MacText::updateCursorPos() {
int alignOffset = _canvas.getAlignOffset(_cursorRow);
- _cursorY = _canvas._text[_cursorRow].y - _scrollPos;
- _cursorX = _canvas.getLineWidth(_cursorRow, false, _cursorCol) + alignOffset;
+ _cursorY = _canvas._text[_cursorRow].y - _scrollPos + _border;
+ _cursorX = _canvas.getLineWidth(_cursorRow, false, _cursorCol) + alignOffset + _border;
}
int cursorHeight = getLineHeight(_cursorRow);
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 2669b0ace36..a711a6fe6bc 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -74,8 +74,8 @@ void MacTextWindow::init(bool cursorHandler) {
_editable = true;
_selectable = true;
- _cursorX = 0;
- _cursorY = 0;
+ _cursorX = _border;
+ _cursorY = _border;
_cursorState = false;
_cursorOff = false;
@@ -209,7 +209,7 @@ const MacFont *MacTextWindow::getTextWindowFont() {
}
bool MacTextWindow::draw(bool forceRedraw) {
- if (!_borderIsDirty && !_contentIsDirty && !_cursorDirty && !_inputIsDirty && !forceRedraw)
+ if (!_borderIsDirty && !_contentIsDirty && !_mactext->needsRedraw() && !_inputIsDirty && !forceRedraw)
return false;
if (_borderIsDirty || forceRedraw) {
@@ -618,7 +618,7 @@ void MacTextWindow::drawInput() {
// Now recalc new text height
int newLen = _mactext->getLineCount();
_inputTextHeight = newLen - oldLen;
- _cursorX = _inputText.empty() ? 0 : _mactext->getLastLineWidth();
+ _cursorX = _inputText.empty() ? _border : _mactext->getLastLineWidth() + _border;
updateCursorPos();
@@ -628,7 +628,7 @@ void MacTextWindow::drawInput() {
void MacTextWindow::clearInput() {
undrawCursor();
- _cursorX = 0;
+ _cursorX = _border;
_inputText.clear();
}
@@ -654,7 +654,7 @@ static void cursorTimerHandler(void *refCon) {
}
void MacTextWindow::updateCursorPos() {
- _cursorY = _mactext->getTextHeight() - _scrollPos - kCursorHeight;
+ _cursorY = _mactext->getTextHeight() - _scrollPos - kCursorHeight + _border;
_cursorY += _inputText.empty() ? 3 : 0;
_cursorDirty = true;
}
diff --git a/graphics/macgui/mactextwindow.h b/graphics/macgui/mactextwindow.h
index d491257a8dc..b0be03707fb 100644
--- a/graphics/macgui/mactextwindow.h
+++ b/graphics/macgui/mactextwindow.h
@@ -51,6 +51,7 @@ public:
void setMarkdownText(const Common::U32String &str);
void setEditable(bool editable) { _editable = editable; _mactext->setEditable(editable); }
+ void setActive(bool active) override { MacWindow::setActive(active); if (_editable) _mactext->setActive(active); }
void setSelectable(bool selectable) { _selectable = selectable; }
void undrawCursor();
Commit: 5fcf39afc962141ae58d1f6ad625d663d2a71b5c
https://github.com/scummvm/scummvm/commit/5fcf39afc962141ae58d1f6ad625d663d2a71b5c
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-21T22:12:38+02:00
Commit Message:
WAGE: Set text border color to white
Changed paths:
engines/wage/gui.cpp
diff --git a/engines/wage/gui.cpp b/engines/wage/gui.cpp
index feed8231468..882adb46cce 100644
--- a/engines/wage/gui.cpp
+++ b/engines/wage/gui.cpp
@@ -133,6 +133,7 @@ Gui::Gui(WageEngine *engine) {
_consoleWindow = _wm->addTextWindow(font, kColorBlack, kColorWhite, maxWidth, Graphics::kTextAlignLeft, _menu);
_consoleWindow->setCallback(consoleWindowCallback, this);
+ _consoleWindow->setBorderColor(kColorWhite);
_consoleWindow->setEditable(true);
_selectedMenuItem = -1;
Commit: e8ab5b08abfd60d90ff5d2bdf21a00c2624dd34a
https://github.com/scummvm/scummvm/commit/e8ab5b08abfd60d90ff5d2bdf21a00c2624dd34a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-21T22:12:38+02:00
Commit Message:
GPRAHICS: MACGUI: Drop cursor handling parameter from MacTextWindow
Changed paths:
engines/macventure/gui.cpp
engines/pink/objects/actions/action_text.cpp
graphics/macgui/macwindowmanager.cpp
graphics/macgui/macwindowmanager.h
diff --git a/engines/macventure/gui.cpp b/engines/macventure/gui.cpp
index a16c0943cd4..b0f023b8311 100644
--- a/engines/macventure/gui.cpp
+++ b/engines/macventure/gui.cpp
@@ -364,7 +364,7 @@ void Gui::initWindows() {
bounds = getWindowData(kOutConsoleWindow).bounds;
bbs = borderBounds(findWindowData(kOutConsoleWindow).type);
_outConsoleWindow = _wm.addTextWindow(&getCurrentFont(), kColorBlack, kColorWhite,
- bounds.width() - bbs.rightScrollbarWidth, Graphics::kTextAlignLeft, _menu, false);
+ bounds.width() - bbs.rightScrollbarWidth, Graphics::kTextAlignLeft, _menu);
_outConsoleWindow->enableScrollbar(true);
_outConsoleWindow->setEditable(false);
loadBorders(_outConsoleWindow, findWindowData(kOutConsoleWindow).type);
diff --git a/engines/pink/objects/actions/action_text.cpp b/engines/pink/objects/actions/action_text.cpp
index ada5e722f63..18006ac422f 100644
--- a/engines/pink/objects/actions/action_text.cpp
+++ b/engines/pink/objects/actions/action_text.cpp
@@ -153,7 +153,7 @@ void ActionText::start() {
if (_scrollBar) {
_txtWnd = screen->getWndManager().addTextWindow(screen->getTextFont(), _textColorIndex, _backgroundColorIndex,
- _xRight - _xLeft, align, nullptr, false);
+ _xRight - _xLeft, align, nullptr);
_txtWnd->setTextColorRGB(_textRGB);
_txtWnd->enableScrollbar(true);
// it will hide the scrollbar when the text height is smaller than the window height
diff --git a/graphics/macgui/macwindowmanager.cpp b/graphics/macgui/macwindowmanager.cpp
index 039b63fbb0e..51483df37e7 100644
--- a/graphics/macgui/macwindowmanager.cpp
+++ b/graphics/macgui/macwindowmanager.cpp
@@ -399,8 +399,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, MacMenu *menu, bool cursorHandler, int padding) {
- MacTextWindow *w = new MacTextWindow(this, font, fgcolor, bgcolor, maxWidth, textAlignment, menu, cursorHandler, padding);
+MacTextWindow *MacWindowManager::addTextWindow(const MacFont *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, int padding) {
+ MacTextWindow *w = new MacTextWindow(this, font, fgcolor, bgcolor, maxWidth, textAlignment, menu, false, padding);
addWindowInitialized(w);
@@ -409,8 +409,8 @@ MacTextWindow *MacWindowManager::addTextWindow(const MacFont *font, int fgcolor,
return w;
}
-MacTextWindow *MacWindowManager::addTextWindow(const Font *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, bool cursorHandler, int padding) {
- MacTextWindow *w = new MacTextWindow(this, font, fgcolor, bgcolor, maxWidth, textAlignment, menu, cursorHandler, padding);
+MacTextWindow *MacWindowManager::addTextWindow(const Font *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, int padding) {
+ MacTextWindow *w = new MacTextWindow(this, font, fgcolor, bgcolor, maxWidth, textAlignment, menu, false, padding);
addWindowInitialized(w);
diff --git a/graphics/macgui/macwindowmanager.h b/graphics/macgui/macwindowmanager.h
index f27b8a1990f..18f31544dc4 100644
--- a/graphics/macgui/macwindowmanager.h
+++ b/graphics/macgui/macwindowmanager.h
@@ -179,8 +179,8 @@ 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, MacMenu *menu, bool cursorHandler = true, int padding = 0);
- MacTextWindow *addTextWindow(const Font *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, bool cursorHandler = true, int padding = 0);
+ MacTextWindow *addTextWindow(const MacFont *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, int padding = 0);
+ MacTextWindow *addTextWindow(const Font *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, int padding = 0);
void resizeScreen(int w, int h);
/**
Commit: 4f50cdb0209e483564c6cba672c5419d66640b9f
https://github.com/scummvm/scummvm/commit/4f50cdb0209e483564c6cba672c5419d66640b9f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-21T22:12:38+02:00
Commit Message:
GRAPHICS: MACGUI: Remove cursor handling from MacTextWindow
Now MacText is fully owning it
Changed paths:
graphics/macgui/mactext.cpp
graphics/macgui/mactextwindow.cpp
graphics/macgui/mactextwindow.h
graphics/macgui/macwindowmanager.cpp
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index 177f715b000..ec9d0fb6842 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -829,7 +829,7 @@ void MacText::appendText_(const Common::U32String &strWithFont, uint oldLen) {
if (_editable) {
_scrollPos = MAX<int>(0, getTextHeight() - getDimensions().height());
- _cursorRow = getLineCount();
+ _cursorRow = MAX<int>(getLineCount() - 1, 0);
_cursorCol = _canvas.getLineCharWidth(_cursorRow);
updateCursorPos();
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index a711a6fe6bc..e3296bcf004 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -36,13 +36,9 @@ enum {
kConHPadding = 4,
kConOverscan = 3,
kConScrollStep = 12,
-
- kCursorHeight = 12
};
-static void cursorTimerHandler(void *refCon);
-
-MacTextWindow::MacTextWindow(MacWindowManager *wm, const MacFont *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, bool cursorHandler, int padding) :
+MacTextWindow::MacTextWindow(MacWindowManager *wm, const MacFont *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, int padding) :
MacWindow(wm->getLastId(), true, true, true, wm), _bgcolor(bgcolor), _maxWidth(maxWidth), _menu(menu) {
_font = font;
@@ -50,10 +46,10 @@ MacTextWindow::MacTextWindow(MacWindowManager *wm, const MacFont *font, int fgco
_fontRef = wm->_fontMan->getFont(*font);
- init(cursorHandler);
+ init();
}
-MacTextWindow::MacTextWindow(MacWindowManager *wm, const Font *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, bool cursorHandler, int padding) :
+MacTextWindow::MacTextWindow(MacWindowManager *wm, const Font *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, int padding) :
MacWindow(wm->getLastId(), true, true, true, wm), _bgcolor(bgcolor), _maxWidth(maxWidth), _menu(menu) {
_font = nullptr;
@@ -61,10 +57,10 @@ MacTextWindow::MacTextWindow(MacWindowManager *wm, const Font *font, int fgcolor
_fontRef = font;
- init(cursorHandler);
+ init();
}
-void MacTextWindow::init(bool cursorHandler) {
+void MacTextWindow::init() {
_inputTextHeight = 0;
_inputIsDirty = true;
@@ -74,23 +70,8 @@ void MacTextWindow::init(bool cursorHandler) {
_editable = true;
_selectable = true;
- _cursorX = _border;
- _cursorY = _border;
- _cursorState = false;
- _cursorOff = false;
-
- _cursorDirty = true;
-
- _cursorRect = new Common::Rect(0, 0, 1, kCursorHeight);
-
- _cursorSurface = new ManagedSurface(1, kCursorHeight);
- _cursorSurface->fillRect(*_cursorRect, _wm->_colorBlack);
-
_textColorRGB = 0;
- if (cursorHandler)
- g_system->getTimerManager()->installTimerProc(&cursorTimerHandler, 200000, this, "textWindowCursor");
-
if (_wm->_mode & kWMModeWin95) {
// in win95 mode, we set scrollbar as default
_hasScrollBar = true;
@@ -142,8 +123,6 @@ void MacTextWindow::appendText(const Common::U32String &str, const MacFont *macF
if (_editable) {
_scrollPos = MAX<int>(0, _mactext->getTextHeight() - getInnerDimensions().height());
-
- updateCursorPos();
}
if (_wm->_mode & kWMModeWin95)
@@ -184,16 +163,10 @@ void MacTextWindow::clearText() {
_contentIsDirty = true;
_borderIsDirty = true;
-
- updateCursorPos();
}
MacTextWindow::~MacTextWindow() {
- delete _cursorRect;
- delete _cursorSurface;
delete _mactext;
-
- g_system->getTimerManager()->removeTimerProc(&cursorTimerHandler);
}
void MacTextWindow::setTextWindowFont(const MacFont *font) {
@@ -228,14 +201,10 @@ bool MacTextWindow::draw(bool forceRedraw) {
}
_contentIsDirty = false;
- _cursorDirty = false;
// Compose
_mactext->draw(_composeSurface, true);
- if (_cursorState)
- _composeSurface->blitFrom(*_cursorSurface, *_cursorRect, Common::Point(_cursorX, _cursorY));
-
return true;
}
@@ -554,8 +523,6 @@ bool MacTextWindow::processEvent(Common::Event &event) {
}
void MacTextWindow::scroll(int delta) {
- int oldScrollPos = _scrollPos;
-
_scrollPos += delta * kConScrollStep;
if (_editable)
@@ -563,8 +530,6 @@ void MacTextWindow::scroll(int delta) {
else
_scrollPos = CLIP<int>(_scrollPos, 0, MAX<int>(0, _mactext->getTextHeight() - getInnerDimensions().height()));
- undrawCursor();
- _cursorY -= (_scrollPos - oldScrollPos);
_contentIsDirty = true;
_borderIsDirty = true;
@@ -618,17 +583,11 @@ void MacTextWindow::drawInput() {
// Now recalc new text height
int newLen = _mactext->getLineCount();
_inputTextHeight = newLen - oldLen;
- _cursorX = _inputText.empty() ? _border : _mactext->getLastLineWidth() + _border;
-
- updateCursorPos();
_contentIsDirty = true;
}
void MacTextWindow::clearInput() {
- undrawCursor();
-
- _cursorX = _border;
_inputText.clear();
}
@@ -642,27 +601,4 @@ void MacTextWindow::appendInput(const Common::String &str) {
appendInput(Common::U32String(str));
}
-//////////////////
-// Cursor stuff
-static void cursorTimerHandler(void *refCon) {
- MacTextWindow *w = (MacTextWindow *)refCon;
-
- if (!w->_cursorOff)
- w->_cursorState = !w->_cursorState;
-
- w->_cursorDirty = true;
-}
-
-void MacTextWindow::updateCursorPos() {
- _cursorY = _mactext->getTextHeight() - _scrollPos - kCursorHeight + _border;
- _cursorY += _inputText.empty() ? 3 : 0;
- _cursorDirty = true;
-}
-
-void MacTextWindow::undrawCursor() {
- _cursorState = false;
- _cursorDirty = true;
-}
-
-
} // End of namespace Graphics
diff --git a/graphics/macgui/mactextwindow.h b/graphics/macgui/mactextwindow.h
index b0be03707fb..a1754077f64 100644
--- a/graphics/macgui/mactextwindow.h
+++ b/graphics/macgui/mactextwindow.h
@@ -29,8 +29,8 @@ namespace Graphics {
class MacTextWindow : public MacWindow {
public:
- MacTextWindow(MacWindowManager *wm, const MacFont *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, bool cursorHandler = true, int padding = 0);
- MacTextWindow(MacWindowManager *wm, const Font *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, bool cursorHandler = true, int padding = 0);
+ MacTextWindow(MacWindowManager *wm, const MacFont *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, int padding = 0);
+ MacTextWindow(MacWindowManager *wm, const Font *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, int padding = 0);
virtual ~MacTextWindow();
virtual void resize(int w, int h) override;
@@ -54,8 +54,6 @@ public:
void setActive(bool active) override { MacWindow::setActive(active); if (_editable) _mactext->setActive(active); }
void setSelectable(bool selectable) { _selectable = selectable; }
- void undrawCursor();
-
const Common::U32String &getInput() { return _inputText; }
void clearInput();
void appendInput(const Common::U32String &str);
@@ -98,7 +96,7 @@ public:
void setTextColorRGB (uint32 rgb) { _textColorRGB = rgb; }
private:
- void init(bool cursorHandler);
+ void init();
bool isCutAllowed();
void scroll(int delta);
@@ -107,18 +105,11 @@ private:
void undrawInput();
void drawInput();
void drawSelection();
- void updateCursorPos();
void startMarking(int x, int y);
void updateTextSelection(int x, int y);
public:
- int _cursorX, _cursorY;
- bool _cursorState;
-
- bool _cursorDirty;
- Common::Rect *_cursorRect;
- bool _cursorOff;
bool _editable;
bool _selectable;
@@ -129,8 +120,6 @@ private:
const MacFont *_font;
const Font *_fontRef;
- ManagedSurface *_cursorSurface;
-
bool _inTextSelection;
SelectedText _selectedText;
diff --git a/graphics/macgui/macwindowmanager.cpp b/graphics/macgui/macwindowmanager.cpp
index 51483df37e7..203fa1db297 100644
--- a/graphics/macgui/macwindowmanager.cpp
+++ b/graphics/macgui/macwindowmanager.cpp
@@ -400,7 +400,7 @@ MacWindow *MacWindowManager::addWindow(bool scrollable, bool resizable, bool edi
}
MacTextWindow *MacWindowManager::addTextWindow(const MacFont *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, int padding) {
- MacTextWindow *w = new MacTextWindow(this, font, fgcolor, bgcolor, maxWidth, textAlignment, menu, false, padding);
+ MacTextWindow *w = new MacTextWindow(this, font, fgcolor, bgcolor, maxWidth, textAlignment, menu, padding);
addWindowInitialized(w);
@@ -410,7 +410,7 @@ MacTextWindow *MacWindowManager::addTextWindow(const MacFont *font, int fgcolor,
}
MacTextWindow *MacWindowManager::addTextWindow(const Font *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, MacMenu *menu, int padding) {
- MacTextWindow *w = new MacTextWindow(this, font, fgcolor, bgcolor, maxWidth, textAlignment, menu, false, padding);
+ MacTextWindow *w = new MacTextWindow(this, font, fgcolor, bgcolor, maxWidth, textAlignment, menu, padding);
addWindowInitialized(w);
Commit: f68f2635b846da0617316f4feb9c0e93bc759221
https://github.com/scummvm/scummvm/commit/f68f2635b846da0617316f4feb9c0e93bc759221
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-21T22:12:38+02:00
Commit Message:
WAGE: Always switch focus to text window on keypress
Changed paths:
engines/wage/gui.cpp
diff --git a/engines/wage/gui.cpp b/engines/wage/gui.cpp
index 882adb46cce..4f29a4da0c5 100644
--- a/engines/wage/gui.cpp
+++ b/engines/wage/gui.cpp
@@ -222,6 +222,10 @@ bool Gui::processSceneEvents(WindowClick click, Common::Event &event) {
return true;
}
+ if (event.type == Common::EVENT_KEYDOWN) {
+ return _consoleWindow->processEvent(event);
+ }
+
return false;
}
Commit: 6db5cd36d5738e13af3a6fed2c949ae2750ad0e7
https://github.com/scummvm/scummvm/commit/6db5cd36d5738e13af3a6fed2c949ae2750ad0e7
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-21T22:12:38+02:00
Commit Message:
GRAPHICS: MACGUI: Remove text selection code from MacTextWindow
It now lives fully in MacText
Changed paths:
graphics/macgui/mactext.h
graphics/macgui/mactextwindow.cpp
graphics/macgui/mactextwindow.h
diff --git a/graphics/macgui/mactext.h b/graphics/macgui/mactext.h
index 00d40407979..a45e81f7038 100644
--- a/graphics/macgui/mactext.h
+++ b/graphics/macgui/mactext.h
@@ -167,6 +167,7 @@ public:
void clearSelection();
Common::U32String cutSelection();
const SelectedText *getSelectedText() { return &_selectedText; }
+ bool hasSelection() { return _selectedText.endY != -1; }
int getLineSpacing() { return _canvas._interLinear; }
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index e3296bcf004..796aeb8c014 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -64,7 +64,6 @@ void MacTextWindow::init() {
_inputTextHeight = 0;
_inputIsDirty = true;
- _inTextSelection = false;
_scrollPos = 0;
_editable = true;
@@ -223,119 +222,8 @@ void MacTextWindow::blit(ManagedSurface *g, Common::Rect &dest) {
g->transBlitFrom(*_composeSurface, _composeSurface->getBounds(), dest, _wm->_colorGreen2);
}
-void MacTextWindow::drawSelection() {
- if (_selectedText.endY == -1)
- return;
-
- SelectedText s = _selectedText;
-
- if (s.startY > s.endY || (s.startY == s.endY && s.startX > s.endX)) {
- SWAP(s.startX, s.endX);
- SWAP(s.startY, s.endY);
- SWAP(s.startRow, s.endRow);
- SWAP(s.startCol, s.endCol);
- }
-
- int lastLineStart = s.endY;
- s.endY += _mactext->getLineHeight(s.endRow);
-
- int start = s.startY - _scrollPos;
- start = MAX(0, start);
-
- if (start > getInnerDimensions().height())
- return;
-
- int end = s.endY - _scrollPos;
-
- if (end < 0)
- return;
-
- end = MIN((int)getInnerDimensions().height(), end);
-
- int numLines = 0;
- int x1 = 0, x2 = 0;
-
- for (int y = start; y < end; y++) {
- if (!numLines) {
- x1 = 0;
- x2 = getInnerDimensions().width() - 1;
-
- if (y + _scrollPos == s.startY && s.startX > 0) {
- numLines = _mactext->getLineHeight(s.startRow);
- x1 = s.startX;
- }
- if (y + _scrollPos >= lastLineStart) {
- numLines = _mactext->getLineHeight(s.endRow);
- x2 = s.endX;
- }
- } else {
- numLines--;
- }
-
- byte *ptr = (byte *)_composeSurface->getBasePtr(x1 + 1, y + 1);
-
- for (int x = x1; x < x2; x++, ptr++)
- if (*ptr == _wm->_colorBlack)
- *ptr = _wm->_colorWhite;
- else
- *ptr = _wm->_colorBlack;
- }
-}
-
Common::U32String MacTextWindow::getSelection(bool formatted, bool newlines) {
- if (_selectedText.endY == -1)
- return Common::U32String();
-
- SelectedText s = _selectedText;
-
- if (s.startY > s.endY || (s.startY == s.endY && s.startX > s.endX)) {
- SWAP(s.startRow, s.endRow);
- SWAP(s.startCol, s.endCol);
- }
-
- return _mactext->getTextChunk(s.startRow, s.startCol, s.endRow, s.endCol, formatted, newlines);
-}
-
-void MacTextWindow::clearSelection() {
- _selectedText.endY = _selectedText.startY = -1;
-}
-
-bool MacTextWindow::isCutAllowed() {
- if (_selectedText.startRow >= (int)(_mactext->getLineCount() - _inputTextHeight) &&
- _selectedText.endRow >= (int)(_mactext->getLineCount() - _inputTextHeight))
- return true;
-
- return false;
-}
-
-Common::U32String MacTextWindow::cutSelection() {
- if (!isCutAllowed())
- return Common::U32String();
-
- SelectedText s = _selectedText;
-
- if (s.startY > s.endY || (s.startY == s.endY && s.startX > s.endX)) {
- SWAP(s.startRow, s.endRow);
- SWAP(s.startCol, s.endCol);
- }
-
- Common::U32String selection = _mactext->getTextChunk(s.startRow, s.startCol, s.endRow, s.endCol, false, false);
-
- uint32 selPos = _inputText.find(selection);
-
- if (selPos == Common::U32String::npos) {
- //warning("Cannot find substring '%s' in '%s'", selection.c_str(), _inputText.c_str()); // Needed encode method
-
- return Common::U32String();
- }
-
- Common::U32String newInput = _inputText.substr(0, selPos) + _inputText.substr(selPos + selection.size());
-
- clearSelection();
- clearInput();
- appendInput(newInput);
-
- return selection;
+ return _mactext->getSelection(formatted, newlines);
}
int MacTextWindow::getMouseLine(int x, int y) {
@@ -382,32 +270,14 @@ bool MacTextWindow::processEvent(Common::Event &event) {
_wm->setActiveWindow(getId());
if (event.kbd.flags & (Common::KBD_ALT | Common::KBD_CTRL | Common::KBD_META)) {
- switch (event.kbd.keycode) {
- case Common::KEYCODE_x:
- _wm->setTextInClipboard(cutSelection());
- return true;
- case Common::KEYCODE_c:
- _wm->setTextInClipboard(getSelection(true, false));
- return true;
- case Common::KEYCODE_v:
- if (g_system->hasTextInClipboard()) {
- if (_selectedText.endY != -1)
- cutSelection();
- appendInput(_wm->getTextFromClipboard());
- _inputIsDirty = true;
- }
- return true;
- default:
- break;
- }
- return false;
+ return _mactext->processEvent(event);
}
switch (event.kbd.keycode) {
case Common::KEYCODE_BACKSPACE:
if (!_inputText.empty()) {
- if (_selectedText.endY != -1) {
- cutSelection();
+ if (_mactext->hasSelection()) {
+ _mactext->cutSelection();
} else {
_inputText.deleteLastChar();
}
@@ -425,8 +295,8 @@ bool MacTextWindow::processEvent(Common::Event &event) {
return false;
if (event.kbd.ascii >= 0x20 && event.kbd.ascii <= 0x7f) {
- if (_selectedText.endY != -1)
- cutSelection();
+ if (_mactext->hasSelection())
+ _mactext->cutSelection();
_inputText += (char)event.kbd.ascii;
_inputIsDirty = true;
@@ -437,7 +307,7 @@ bool MacTextWindow::processEvent(Common::Event &event) {
}
}
- if (hasAllFocus())
+ if (hasAllFocus()) // We are being dragged or resized
return MacWindow::processEvent(event); // Pass it to upstream
if (event.type == Common::EVENT_WHEELUP) {
@@ -485,38 +355,7 @@ bool MacTextWindow::processEvent(Common::Event &event) {
if (!_selectable)
return false;
- if (event.type == Common::EVENT_LBUTTONDOWN) {
- startMarking(event.mouse.x, event.mouse.y);
-
- return true;
- } else if (event.type == Common::EVENT_LBUTTONUP && _menu) {
- 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("Edit", "Copy", false);
- } else {
- _menu->enableCommand("Edit", "Copy", true);
-
- bool cutAllowed = isCutAllowed();
-
- _menu->enableCommand("Edit", "Cut", cutAllowed);
- _menu->enableCommand("Edit", "Clear", cutAllowed);
- }
- }
-
- return true;
- } else if (event.type == Common::EVENT_MOUSEMOVE) {
- if (_inTextSelection) {
- updateTextSelection(event.mouse.x, event.mouse.y);
- return true;
- }
- }
-
- return false;
+ return _mactext->processEvent(event);
}
return MacWindow::processEvent(event);
@@ -536,34 +375,6 @@ void MacTextWindow::scroll(int delta) {
_mactext->scroll(delta);
}
-void MacTextWindow::startMarking(int x, int y) {
- x -= getInnerDimensions().left - 2;
- y -= getInnerDimensions().top;
-
- y += _scrollPos;
-
- _mactext->getRowCol(x, y, &_selectedText.startX, &_selectedText.startY, &_selectedText.startRow, &_selectedText.startCol);
-
- _selectedText.endY = -1;
-
- _inTextSelection = true;
-}
-
-void MacTextWindow::updateTextSelection(int x, int y) {
- x -= getInnerDimensions().left - 2;
- y -= getInnerDimensions().top;
-
- y += _scrollPos;
-
- _mactext->getRowCol(x, y, &_selectedText.endX, &_selectedText.endY, &_selectedText.endRow, &_selectedText.endCol);
-
- debug(3, "s: %d,%d (%d, %d) e: %d,%d (%d, %d)", _selectedText.startX, _selectedText.startY,
- _selectedText.startRow, _selectedText.startCol, _selectedText.endX,
- _selectedText.endY, _selectedText.endRow, _selectedText.endCol);
-
- _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 a1754077f64..2aa95481277 100644
--- a/graphics/macgui/mactextwindow.h
+++ b/graphics/macgui/mactextwindow.h
@@ -60,9 +60,9 @@ public:
void appendInput(const Common::String &str);
Common::U32String getSelection(bool formatted = false, bool newlines = true);
- void clearSelection();
- Common::U32String cutSelection();
- const SelectedText *getSelectedText() { return &_selectedText; }
+ void clearSelection() { _mactext->clearSelection(); }
+ Common::U32String cutSelection() { return _mactext->cutSelection(); }
+ const SelectedText *getSelectedText() { return _mactext->getSelectedText(); }
uint32 getTextColor() { return _mactext->getTextColor(); }
uint32 getTextColor(int start, int end) { return _mactext->getTextColor(start, end); }
void setTextColor(uint32 color, int start, int end) { return _mactext->setTextColor(color, start, end); }
@@ -97,7 +97,6 @@ public:
private:
void init();
- bool isCutAllowed();
void scroll(int delta);
void calcScrollBar();
@@ -106,9 +105,6 @@ private:
void drawInput();
void drawSelection();
- void startMarking(int x, int y);
- void updateTextSelection(int x, int y);
-
public:
bool _editable;
bool _selectable;
@@ -120,9 +116,6 @@ private:
const MacFont *_font;
const Font *_fontRef;
- bool _inTextSelection;
- SelectedText _selectedText;
-
int _maxWidth;
Common::U32String _inputText;
uint _inputTextHeight;
Commit: 8dffab6e3782365df5b8ec1bf9b731e4614aeaa8
https://github.com/scummvm/scummvm/commit/8dffab6e3782365df5b8ec1bf9b731e4614aeaa8
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-21T22:12:38+02:00
Commit Message:
GRAPHICS: MACGUI: Adjust event coordinates when passing it to MacText
Changed paths:
graphics/macgui/mactextwindow.cpp
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index 796aeb8c014..d5edd41eee3 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -355,6 +355,8 @@ bool MacTextWindow::processEvent(Common::Event &event) {
if (!_selectable)
return false;
+ event.mouse.x -= _innerDims.left;
+ event.mouse.y -= _innerDims.top;
return _mactext->processEvent(event);
}
Commit: a7b33811fbf2fcb7dcf203549db1faccc91e2d29
https://github.com/scummvm/scummvm/commit/a7b33811fbf2fcb7dcf203549db1faccc91e2d29
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-21T22:12:38+02:00
Commit Message:
GRAPHICS: MACGUI: Do not redraw text selection needlessly
Changed paths:
graphics/macgui/mactext.cpp
graphics/macgui/mactext.h
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index ec9d0fb6842..94aa7b225ad 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -231,6 +231,7 @@ void MacText::init(uint32 fgcolor, uint32 bgcolor, int maxWidth, TextAlign textA
_fullRefresh = true;
_inTextSelection = false;
+ _selectionIsDirty = false;
_scrollPos = 0;
_editable = false;
@@ -1012,9 +1013,11 @@ uint getNewlinesInString(const Common::U32String &str) {
}
void MacText::drawSelection(int xoff, int yoff) {
- if (_selectedText.endY == -1)
+ if (_selectedText.endY == -1 || !_selectionIsDirty)
return;
+ _selectionIsDirty = false;
+
// we check if the selection size is 0, then we don't draw it anymore, and we set the cursor here
// it's a small optimize, but can bring us correct behavior
if (!_inTextSelection && _selectedText.startX == _selectedText.endX && _selectedText.startY == _selectedText.endY) {
@@ -1144,6 +1147,7 @@ Common::U32String MacText::getSelection(bool formatted, bool newlines) {
void MacText::clearSelection() {
_selectedText.endY = _selectedText.startY = -1;
+ _selectionIsDirty = true;
}
uint MacText::getSelectionIndex(bool start) {
@@ -1232,6 +1236,7 @@ void MacText::setSelection(int pos, bool start) {
}
_contentIsDirty = true;
+ _selectionIsDirty = true;
}
bool MacText::isCutAllowed() {
@@ -1463,6 +1468,7 @@ bool MacText::processEvent(Common::Event &event) {
(_selectedText.endX == _selectedText.startX && _selectedText.endY == _selectedText.startY)) {
_selectedText.startY = _selectedText.endY = -1;
_contentIsDirty = true;
+ _selectionIsDirty = true;
if (_menu)
_menu->enableCommand("Edit", "Copy", false);
@@ -1531,6 +1537,7 @@ void MacText::startMarking(int x, int y) {
_selectedText.endY = -1;
_inTextSelection = true;
+ _selectionIsDirty = true;
}
void MacText::updateTextSelection(int x, int y) {
@@ -1547,6 +1554,7 @@ void MacText::updateTextSelection(int x, int y) {
_selectedText.endY, _selectedText.endRow, _selectedText.endCol);
_contentIsDirty = true;
+ _selectionIsDirty = true;
}
int MacText::getMouseChar(int x, int y) {
diff --git a/graphics/macgui/mactext.h b/graphics/macgui/mactext.h
index a45e81f7038..2e44447b71e 100644
--- a/graphics/macgui/mactext.h
+++ b/graphics/macgui/mactext.h
@@ -246,6 +246,7 @@ private:
bool _inTextSelection;
SelectedText _selectedText;
+ bool _selectionIsDirty;
MacMenu *_menu;
};
Commit: 4fcee50d46c3d47fd45ec61d6ba63d8ac333b4d3
https://github.com/scummvm/scummvm/commit/4fcee50d46c3d47fd45ec61d6ba63d8ac333b4d3
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-21T22:12:38+02:00
Commit Message:
GRAPHOCS: MACGUI: Do not force MacText to redraw unless required
Changed paths:
graphics/macgui/mactextwindow.cpp
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp
index d5edd41eee3..f1ef180f331 100644
--- a/graphics/macgui/mactextwindow.cpp
+++ b/graphics/macgui/mactextwindow.cpp
@@ -202,7 +202,7 @@ bool MacTextWindow::draw(bool forceRedraw) {
_contentIsDirty = false;
// Compose
- _mactext->draw(_composeSurface, true);
+ _mactext->draw(_composeSurface, _inputIsDirty || forceRedraw);
return true;
}
Commit: 78bc41ea8d1aed395d251f19021b376771bbf778
https://github.com/scummvm/scummvm/commit/78bc41ea8d1aed395d251f19021b376771bbf778
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-21T22:12:39+02:00
Commit Message:
GRAPHICS: MACGUI: Fix cursor and selection positions with non-zero border
Changed paths:
graphics/macgui/mactext.cpp
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index 94aa7b225ad..cda271da2c7 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -241,8 +241,8 @@ void MacText::init(uint32 fgcolor, uint32 bgcolor, int maxWidth, TextAlign textA
_menu = nullptr;
- _cursorX = _border;
- _cursorY = _border;
+ _cursorX = 0;
+ _cursorY = 0;
_cursorState = false;
_cursorOff = false;
@@ -1527,8 +1527,8 @@ void MacText::startMarking(int x, int y) {
return;
Common::Point offset = calculateOffset();
- x -= getDimensions().left - offset.x;
- y -= getDimensions().top - offset.y;
+ x -= getDimensions().left + offset.x;
+ y -= getDimensions().top + offset.y;
y += _scrollPos;
@@ -1542,8 +1542,8 @@ void MacText::startMarking(int x, int y) {
void MacText::updateTextSelection(int x, int y) {
Common::Point offset = calculateOffset();
- x -= getDimensions().left - offset.x;
- y -= getDimensions().top - offset.y;
+ x -= getDimensions().left + offset.x;
+ y -= getDimensions().top + offset.y;
y += _scrollPos;
@@ -2143,7 +2143,7 @@ static void cursorTimerHandler(void *refCon) {
void MacText::updateCursorPos() {
if (_canvas._text.empty()) {
- _cursorX = _cursorY = _border;
+ _cursorX = _cursorY = 0;
} else {
undrawCursor();
@@ -2151,8 +2151,8 @@ void MacText::updateCursorPos() {
int alignOffset = _canvas.getAlignOffset(_cursorRow);
- _cursorY = _canvas._text[_cursorRow].y - _scrollPos + _border;
- _cursorX = _canvas.getLineWidth(_cursorRow, false, _cursorCol) + alignOffset + _border;
+ _cursorY = _canvas._text[_cursorRow].y - _scrollPos;
+ _cursorX = _canvas.getLineWidth(_cursorRow, false, _cursorCol) + alignOffset;
}
int cursorHeight = getLineHeight(_cursorRow);
Commit: 100acf2fd05467132a4bf3cdec86b2a1f7a7687a
https://github.com/scummvm/scummvm/commit/100acf2fd05467132a4bf3cdec86b2a1f7a7687a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-21T22:12:39+02:00
Commit Message:
JANITORIAL: Remove trailing spaces
Changed paths:
graphics/macgui/mactext-canvas.cpp
diff --git a/graphics/macgui/mactext-canvas.cpp b/graphics/macgui/mactext-canvas.cpp
index 387604bb8dd..c429864e1d5 100644
--- a/graphics/macgui/mactext-canvas.cpp
+++ b/graphics/macgui/mactext-canvas.cpp
@@ -94,7 +94,7 @@ void MacTextCanvas::chopChunk(const Common::U32String &str, int *curLinePtr, int
if (w < maxWidth) {
chunk->text += str; // Only append if within bounds
}
-
+
getLineCharWidth(curLine, true);
return;
@@ -751,9 +751,9 @@ void MacTextCanvas::render(int from, int to) {
}
int getStringMaxWordWidth(MacFontRun &format, const Common::U32String &str) {
- if (str.empty())
+ if (str.empty())
return 0;
-
+
if (format.plainByteMode()) {
Common::StringTokenizer tok(Common::convertFromU32String(str, format.getEncoding()));
int maxW = 0;
Commit: 5486674fd9ed48dfdb361c2cc85eb9a0e9d1eba1
https://github.com/scummvm/scummvm/commit/5486674fd9ed48dfdb361c2cc85eb9a0e9d1eba1
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-21T22:12:39+02:00
Commit Message:
GRAPHICS: MACGIU: Fix MacText maxWidth calculation
Changed paths:
graphics/macgui/mactext.cpp
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index cda271da2c7..38716edc41f 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -355,6 +355,8 @@ int getStringWidth(MacFontRun &format, const Common::U32String &str) {
}
void MacText::setMaxWidth(int maxWidth) {
+ maxWidth = maxWidth - _border * 2 - _gutter * 2 - _shadow;
+
if (maxWidth == _canvas._maxWidth)
return;
Commit: c8c30f845173e4c0cfa15ec30402eb4ad5233a17
https://github.com/scummvm/scummvm/commit/c8c30f845173e4c0cfa15ec30402eb4ad5233a17
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-09-21T22:12:39+02:00
Commit Message:
WAGE: Set inner text passing to 1
Changed paths:
engines/wage/gui.cpp
diff --git a/engines/wage/gui.cpp b/engines/wage/gui.cpp
index 4f29a4da0c5..106df1bf62c 100644
--- a/engines/wage/gui.cpp
+++ b/engines/wage/gui.cpp
@@ -131,7 +131,7 @@ Gui::Gui(WageEngine *engine) {
uint maxWidth = _screen.w;
- _consoleWindow = _wm->addTextWindow(font, kColorBlack, kColorWhite, maxWidth, Graphics::kTextAlignLeft, _menu);
+ _consoleWindow = _wm->addTextWindow(font, kColorBlack, kColorWhite, maxWidth, Graphics::kTextAlignLeft, _menu, 1);
_consoleWindow->setCallback(consoleWindowCallback, this);
_consoleWindow->setBorderColor(kColorWhite);
_consoleWindow->setEditable(true);
More information about the Scummvm-git-logs
mailing list