diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/widgets.cc | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/lib/widgets.cc b/lib/widgets.cc index 16899da..9851c10 100644 --- a/lib/widgets.cc +++ b/lib/widgets.cc @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id: widgets.cc,v 1.11 2004-12-27 18:47:24 pixel Exp $ */ +/* $Id: widgets.cc,v 1.12 2005-03-29 16:38:06 orphis Exp $ */ #include <SDL.h> #include <vector> @@ -708,6 +708,25 @@ mogltk::rect mogltk::widgets::SmartBox::GetDrawRect() { return r; } +/****************************************** +* The SmartBox window with a close button * +******************************************/ + +class SmartBoxCloseAction : public mogltk::widgets::action { + public: + SmartBoxCloseAction(mogltk::widget * _parent) : parent(_parent) { } + virtual void do_action(mogltk::widget *) { + delete parent; + delete this; + } + private: + mogltk::widget * parent; +}; + +mogltk::widgets::SmartBoxClose::SmartBoxClose(mogltk::shape * sh, mogltk::widget * father, int x, int y, int w, int h, const String & _caption) : SmartBox(sh, father, x, y, w, h, _caption) { + new mogltk::widgets::Button(new SmartBoxCloseAction(this), sh, this, 1, 1, 16, 16, "X"); +} + /*********************** * The MessageBox child * @@ -724,7 +743,7 @@ class MessageBoxAction : public mogltk::widgets::action { mogltk::widget * parent; }; -mogltk::widgets::MsgBox::MsgBox(shape * sh, mogltk::widget * father, const String & caption, const String & text) : SmartBox(sh, father, 0, 0, 0, 0, caption) { +mogltk::widgets::MsgBox::MsgBox(shape * sh, mogltk::widget * father, const String & caption, const String & text) : SmartBoxClose(sh, father, 0, 0, 0, 0, caption) { rect size = SystemFont->size(text); rect lsize = size; |