+#ifndef MSP_GLTK_STACK_H_
+#define MSP_GLTK_STACK_H_
+
+#include <msp/datafile/objectloader.h>
+#include "arrangement.h"
+
+namespace Msp {
+namespace GLtk {
+
+/**
+Arranges widgets on top of one another. This can be useful in implementing a
+tabbed view where only one tab is visible at a time.
+*/
+class Stack: public Arrangement
+{
+public:
+ class Loader: public DataFile::ObjectLoader<Stack>
+ {
+ public:
+ Loader(Stack &);
+ };
+
+ Stack(Layout &);
+
+private:
+ virtual void process_widget(Widget &, Side, bool);
+ virtual void finish_widget(Widget &);
+ virtual void finish_slot() { }
+};
+
+} // namespace GLtk
+} // namespace Msp
+
+#endif