diff --git a/graphics/macgui/maceditabletext.cpp b/graphics/macgui/maceditabletext.cpp index 5295566b115..b5aa7ecbc96 100644 --- a/graphics/macgui/maceditabletext.cpp +++ b/graphics/macgui/maceditabletext.cpp @@ -45,8 +45,8 @@ enum { static void cursorTimerHandler(void *refCon); -MacEditableText::MacEditableText(Common::U32String s, MacWindow *parent, const MacFont *macFont, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, int interlinear) : - MacText(s, parent->_wm, macFont, fgcolor, bgcolor, maxWidth, textAlignment, interlinear), MacWidget(0, true, parent) { +MacEditableText::MacEditableText(MacWindow *parent, int x, int y, int w, int h, Common::U32String s, const MacFont *macFont, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, int interlinear) : + MacWidget(parent, x, y, w, h, true), MacText(s, parent->_wm, macFont, fgcolor, bgcolor, maxWidth, textAlignment, interlinear) { _parent = parent; _maxWidth = maxWidth; @@ -54,8 +54,8 @@ MacEditableText::MacEditableText(Common::U32String s, MacWindow *parent, const M init(); } -MacEditableText::MacEditableText(const Common::String &s, MacWindow *parent, const MacFont *macFont, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, int interlinear) : - MacText(s, parent->_wm, macFont, fgcolor, bgcolor, maxWidth, textAlignment, interlinear), MacWidget(0, true, parent) { +MacEditableText::MacEditableText(MacWindow *parent, int x, int y, int w, int h, const Common::String &s, const MacFont *macFont, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, int interlinear) : + MacWidget(parent, x, y, w, h, true), MacText(s, parent->_wm, macFont, fgcolor, bgcolor, maxWidth, textAlignment, interlinear) { _parent = parent; _maxWidth = maxWidth; @@ -132,7 +132,7 @@ void MacEditableText::clearText() { updateCursorPos(); } -void MacEditableText::setTextWindowFont(const MacFont *font) { +void MacEditableText::setTextFont(const MacFont *font) { _font = font; _fontRef = _wm->_fontMan->getFont(*font); @@ -140,7 +140,7 @@ void MacEditableText::setTextWindowFont(const MacFont *font) { MacText::setDefaultFormatting(font->getId(), font->getSlant(), font->getSize(), 0, 0, 0); } -const MacFont *MacEditableText::getTextWindowFont() { +const MacFont *MacEditableText::getTextFont() { return _font; } @@ -299,7 +299,8 @@ bool MacEditableText::processEvent(Common::Event &event) { if (!_editable) return false; - _wm->setActive(getId()); + // Make the parent window active + _wm->setActive(_parent->getId()); if (event.kbd.flags & (Common::KBD_ALT | Common::KBD_CTRL | Common::KBD_META)) { return false; diff --git a/graphics/macgui/maceditabletext.h b/graphics/macgui/maceditabletext.h index e81c497dfd9..519052893f8 100644 --- a/graphics/macgui/maceditabletext.h +++ b/graphics/macgui/maceditabletext.h @@ -52,9 +52,9 @@ struct SelectedText { class MacEditableText : public MacText, public MacWidget { public: - MacEditableText(Common::U32String s, MacWindow *parent, const MacFont *font, int fgcolor, int bgcolor, + MacEditableText(MacWindow *parent, int x, int y, int w, int h, Common::U32String s, const MacFont *font, int fgcolor, int bgcolor, int maxWidth = -1, TextAlign textAlignment = kTextAlignLeft, int interlinear = 0); - MacEditableText(const Common::String &s, MacWindow *parent, const MacFont *font, int fgcolor, int bgcolor, + MacEditableText(MacWindow *parent, int x, int y, int w, int h, const Common::String &s, const MacFont *font, int fgcolor, int bgcolor, int maxWidth = -1, TextAlign textAlignment = kTextAlignLeft, int interlinear = 0); // 0 pixels between the lines by default virtual ~MacEditableText(); @@ -65,8 +65,8 @@ public: virtual bool draw(ManagedSurface *g, bool forceRedraw = false); - void setTextWindowFont(const MacFont *macFont); - const MacFont *getTextWindowFont(); + void setTextFont(const MacFont *macFont); + const MacFont *getTextFont(); void appendText(Common::U32String str, const MacFont *macFont, bool skipAdd = false); void appendText(const Common::String &str, const MacFont *macFont, bool skipAdd = false); diff --git a/graphics/macgui/macwidget.cpp b/graphics/macgui/macwidget.cpp index 2ff77200191..56fa13c5fcf 100644 --- a/graphics/macgui/macwidget.cpp +++ b/graphics/macgui/macwidget.cpp @@ -24,9 +24,14 @@ namespace Graphics { -MacWidget::MacWidget(int id, bool focusable, MacWindow *parent) : - _id(id), _focusable(focusable), _parent(parent) { +MacWidget::MacWidget(MacWindow *parent, int x, int y, int w, int h, bool focusable) : + _focusable(focusable), _parent(parent) { _contentIsDirty = true; + + _dims.left = x; + _dims.right = x + w; + _dims.top = y; + _dims.bottom = y + h; } } // End of namespace Graphics diff --git a/graphics/macgui/macwidget.h b/graphics/macgui/macwidget.h index a6edef1f429..b5a4cd92176 100644 --- a/graphics/macgui/macwidget.h +++ b/graphics/macgui/macwidget.h @@ -25,29 +25,31 @@ #include "common/rect.h" +namespace Common { + struct Event; +} + namespace Graphics { class MacWindow; +class ManagedSurface; class MacWidget { friend class MacEditableText; public: - MacWidget(int id, bool focusable, MacWindow *parent); + MacWidget(MacWindow *parent, int x, int y, int w, int h, bool focusable); virtual ~MacWidget() {} const Common::Rect &getDimensions() { return _dims; } - int getId() { return _id; } bool isFocusable() { return _focusable; } virtual void setActive(bool active) = 0; void setDirty(bool dirty) { _contentIsDirty = dirty; } - //virtual bool draw(ManagedSurface *g, bool forceRedraw = false) = 0; - //virtual bool processEvent(Common::Event &event) = 0; + virtual bool draw(ManagedSurface *g, bool forceRedraw = false) = 0; + virtual bool processEvent(Common::Event &event) = 0; virtual bool hasAllFocus() = 0; protected: - int _id; - bool _focusable; bool _contentIsDirty;