-/* $Id$
-
-This file is part of libmspgltk
-Copyright © 2009 Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
#ifndef MSP_GLTK_CONTAINER_H_
#define MSP_GLTK_CONTAINER_H_
#include <list>
+#include <stdexcept>
#include <sigc++/trackable.h>
#include "widget.h"
namespace Msp {
namespace GLtk {
+class hierarchy_error: public std::logic_error
+{
+public:
+ hierarchy_error(const std::string &);
+ virtual ~hierarchy_error() throw() { }
+};
+
+
class Container: virtual public Widget
{
protected:
Widget *click_focus;
unsigned click_button;
- Container(const Resources &);
+ Container();
public:
virtual ~Container();
void add(Widget &);
void remove(Widget &);
+protected:
+ virtual Child *create_child(Widget *);
+public:
std::list<Widget *> get_children() const;
Widget *get_child_at(int, int);
Widget *get_descendant_at(int, int);
virtual void pointer_motion(int, int);
virtual void pointer_leave();
protected:
- virtual Child *create_child(Widget *);
+ virtual void on_reparent();
+ virtual void on_child_added(Widget &) { }
+ virtual void on_child_removed(Widget &) { }
};
} // namespace GLtk