#ifndef __widget_hh
#define __widget_hh
+#include "surface.hh"
#include "rect.hh"
#include "point.hh"
#include "texture.hh"
namespace otk {
-class Widget : public EventHandler {
+class Widget : public Surface, public EventHandler {
public:
inline const Widget *parent(void) const { return _parent; }
inline const WidgetList &children(void) const { return _children; }
inline unsigned int screen(void) const { return _screen; }
- inline const Rect &rect(void) const { return _rect; }
+ inline Rect rect(void) const { return Rect(_pos, size()); }
void move(const Point &to);
void move(int x, int y);
virtual void setWidth(int);
virtual void setHeight(int);
- virtual int width() const { return _rect.width(); }
- virtual int height() const { return _rect.height(); }
-
virtual void resize(const Point &to);
virtual void resize(int x, int y);
inline const Color *borderColor(void) const { return _bcolor; }
virtual void setBorderColor(const Color *color) {
assert(color); _bcolor = color;
- XSetWindowBorder(Display::display, _window, color->pixel());
+ XSetWindowBorder(**display, _window, color->pixel());
}
inline int borderWidth(void) const { return _bwidth; }
void setBorderWidth(int width) {
_bwidth = width;
- XSetWindowBorderWidth(Display::display, _window, width);
+ XSetWindowBorderWidth(**display, _window, width);
}
virtual void addChild(Widget *child, bool front = false);
inline Cursor cursor(void) const { return _cursor; }
void setCursor(Cursor cursor) {
_cursor = cursor;
- XDefineCursor(Display::display, _window, _cursor);
+ XDefineCursor(**display, _window, _cursor);
}
inline int bevelWidth(void) const { return _bevel_width; }
const Color *_bcolor;
unsigned int _bwidth;
- Rect _rect;
+ Point _pos;
unsigned int _screen;
bool _fixed_width;