[Scummvm-git-logs] scummvm master -> 7d81e1c14f5f9742f8b0222a279a53edd684b417

sev- sev at scummvm.org
Tue Feb 25 17:23:47 UTC 2020


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

Summary:
7d81e1c14f GRAPHICS: MACGUI: Implemented addWidget() to BaseMacWindow class


Commit: 7d81e1c14f5f9742f8b0222a279a53edd684b417
    https://github.com/scummvm/scummvm/commit/7d81e1c14f5f9742f8b0222a279a53edd684b417
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-02-25T18:23:00+01:00

Commit Message:
GRAPHICS: MACGUI: Implemented addWidget() to BaseMacWindow class

Changed paths:
    graphics/macgui/maceditabletext.cpp
    graphics/macgui/maceditabletext.h
    graphics/macgui/macwidget.cpp
    graphics/macgui/macwidget.h
    graphics/macgui/macwindow.cpp
    graphics/macgui/macwindow.h


diff --git a/graphics/macgui/maceditabletext.cpp b/graphics/macgui/maceditabletext.cpp
index b5aa7ecbc9..02579a55b3 100644
--- a/graphics/macgui/maceditabletext.cpp
+++ b/graphics/macgui/maceditabletext.cpp
@@ -45,19 +45,17 @@ enum {
 
 static void cursorTimerHandler(void *refCon);
 
-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) {
+MacEditableText::MacEditableText(int w, int h, MacWindowManager *wm, Common::U32String s, const MacFont *macFont, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, int interlinear) :
+		MacWidget(w, h, true), MacText(s, wm, macFont, fgcolor, bgcolor, maxWidth, textAlignment, interlinear) {
 
-	_parent = parent;
 	_maxWidth = maxWidth;
 
 	init();
 }
 
-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) {
+MacEditableText::MacEditableText(int w, int h, MacWindowManager *wm, const Common::String &s, const MacFont *macFont, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, int interlinear) :
+		MacWidget(w, h, true), MacText(s, wm, macFont, fgcolor, bgcolor, maxWidth, textAlignment, interlinear) {
 
-	_parent = parent;
 	_maxWidth = maxWidth;
 
 	init();
diff --git a/graphics/macgui/maceditabletext.h b/graphics/macgui/maceditabletext.h
index 519052893f..39747775b8 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(MacWindow *parent, int x, int y, int w, int h, Common::U32String s, const MacFont *font, int fgcolor, int bgcolor,
+	MacEditableText(int w, int h, MacWindowManager *wm, Common::U32String s, const MacFont *font, int fgcolor, int bgcolor,
 			int maxWidth = -1, TextAlign textAlignment = kTextAlignLeft, int interlinear = 0);
-	MacEditableText(MacWindow *parent, int x, int y, int w, int h, const Common::String &s, const MacFont *font, int fgcolor, int bgcolor,
+	MacEditableText(int w, int h, MacWindowManager *wm, 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();
diff --git a/graphics/macgui/macwidget.cpp b/graphics/macgui/macwidget.cpp
index 56fa13c5fc..66901e8f39 100644
--- a/graphics/macgui/macwidget.cpp
+++ b/graphics/macgui/macwidget.cpp
@@ -24,14 +24,14 @@
 
 namespace Graphics {
 
-MacWidget::MacWidget(MacWindow *parent, int x, int y, int w, int h, bool focusable) :
-		_focusable(focusable), _parent(parent) {
+MacWidget::MacWidget(int w, int h, bool focusable) :
+		_focusable(focusable) {
 	_contentIsDirty = true;
 
-	_dims.left = x;
-	_dims.right = x + w;
-	_dims.top = y;
-	_dims.bottom = y + h;
+	_dims.left = 0;
+	_dims.right = w;
+	_dims.top = 0;
+	_dims.bottom = h;
 }
 
 } // End of namespace Graphics
diff --git a/graphics/macgui/macwidget.h b/graphics/macgui/macwidget.h
index b5a4cd9217..3b2d70017e 100644
--- a/graphics/macgui/macwidget.h
+++ b/graphics/macgui/macwidget.h
@@ -31,14 +31,14 @@ namespace Common {
 
 namespace Graphics {
 
-class MacWindow;
+class BaseMacWindow;
 class ManagedSurface;
 
 class MacWidget {
 	friend class MacEditableText;
 
 public:
-	MacWidget(MacWindow *parent, int x, int y, int w, int h, bool focusable);
+	MacWidget(int w, int h, bool focusable);
 	virtual ~MacWidget() {}
 
 	const Common::Rect &getDimensions() { return _dims; }
@@ -48,6 +48,7 @@ public:
 	virtual bool draw(ManagedSurface *g, bool forceRedraw = false) = 0;
 	virtual bool processEvent(Common::Event &event) = 0;
 	virtual bool hasAllFocus() = 0;
+	void setParent(BaseMacWindow *parent) { _parent = parent; }
 
 protected:
 	bool _focusable;
@@ -56,7 +57,7 @@ protected:
 	Common::Rect _dims;
 
 public:
-	MacWindow *_parent;
+	BaseMacWindow *_parent;
 };
 
 } // End of namespace Graphics
diff --git a/graphics/macgui/macwindow.cpp b/graphics/macgui/macwindow.cpp
index 803dc762e5..c9a276857a 100644
--- a/graphics/macgui/macwindow.cpp
+++ b/graphics/macgui/macwindow.cpp
@@ -26,6 +26,7 @@
 #include "graphics/macgui/macfontmanager.h"
 #include "graphics/macgui/macwindowmanager.h"
 #include "graphics/macgui/macwindow.h"
+#include "graphics/macgui/macwidget.h"
 #include "image/bmp.h"
 
 namespace Graphics {
@@ -40,6 +41,22 @@ BaseMacWindow::BaseMacWindow(int id, bool editable, MacWindowManager *wm) :
 	_type = kWindowUnknown;
 }
 
+WidgetInfo::WidgetInfo(MacWidget *widget_, int x, int y) {
+	widget = widget_;
+	bbox = widget->getDimensions();
+	bbox.moveTo(x, y);
+}
+
+WidgetInfo::~WidgetInfo() {
+	delete widget;
+}
+
+void BaseMacWindow::addWidget(MacWidget *widget, int x, int y) {
+	_widgets.push_back(new WidgetInfo(widget, x, y));
+
+	widget->setParent(this);
+}
+
 MacWindow::MacWindow(int id, bool scrollable, bool resizable, bool editable, MacWindowManager *wm) :
 		BaseMacWindow(id, editable, wm), _scrollable(scrollable), _resizable(resizable) {
 	_active = false;
diff --git a/graphics/macgui/macwindow.h b/graphics/macgui/macwindow.h
index 47c9189d5f..c6ebdd20f5 100644
--- a/graphics/macgui/macwindow.h
+++ b/graphics/macgui/macwindow.h
@@ -36,6 +36,7 @@ namespace Graphics {
 
 class MacWindowManager;
 class MacWindowBorder;
+class MacWidget;
 
 namespace MacWindowConstants {
 enum WindowType {
@@ -62,6 +63,14 @@ enum WindowClick {
 }
 using namespace MacWindowConstants;
 
+struct WidgetInfo {
+	Common::Rect bbox;
+	MacWidget *widget;
+
+	WidgetInfo(MacWidget *widget_, int x, int y);
+	~WidgetInfo();
+};
+
 /**
  * Abstract class that defines common functionality for all window classes.
  * It supports event callbacks and drawing.
@@ -150,6 +159,8 @@ public:
 	 */
 	void setCallback(bool (*callback)(WindowClick, Common::Event &, void *), void *data) { _callback = callback; _dataPtr = data; }
 
+	void addWidget(MacWidget *widget, int x, int y);
+
 protected:
 	int _id;
 	WindowType _type;
@@ -164,6 +175,8 @@ protected:
 	bool (*_callback)(WindowClick, Common::Event &, void *);
 	void *_dataPtr;
 
+	Common::List<WidgetInfo *> _widgets;
+
 public:
 	MacWindowManager *_wm;
 };




More information about the Scummvm-git-logs mailing list