namespace ob {
-OBButtonWidget::OBButtonWidget(otk::OtkWidget *parent,
- OBWidget::WidgetType type)
- : otk::OtkWidget(parent),
- OBWidget(type),
+ButtonWidget::ButtonWidget(otk::Widget *parent,
+ WidgetBase::WidgetType type)
+ : otk::Widget(parent),
+ WidgetBase(type),
_pressed(false),
_button(0)
{
}
-OBButtonWidget::~OBButtonWidget()
+ButtonWidget::~ButtonWidget()
{
}
-void OBButtonWidget::setTextures()
+void ButtonWidget::setTextures()
{
switch (type()) {
case Type_LeftGrip:
}
-void OBButtonWidget::setStyle(otk::Style *style)
+void ButtonWidget::setStyle(otk::Style *style)
{
- otk::OtkWidget::setStyle(style);
+ otk::Widget::setStyle(style);
setTextures();
switch (type()) {
}
-void OBButtonWidget::update()
+void ButtonWidget::update()
{
otk::PixmapMask *pm;
int width;
+ bool draw = _dirty;
+
+ otk::Widget::update();
+
+ if (draw) {
+ switch (type()) {
+ case Type_StickyButton:
+ pm = _style->getStickyButtonMask();
+ break;
+ case Type_CloseButton:
+ pm = _style->getCloseButtonMask();
+ break;
+ case Type_MaximizeButton:
+ pm = _style->getMaximizeButtonMask();
+ break;
+ case Type_IconifyButton:
+ pm = _style->getIconifyButtonMask();
+ break;
+ case Type_LeftGrip:
+ case Type_RightGrip:
+ return; // no drawing
+ default:
+ assert(false); // there's no other button widgets!
+ }
- otk::OtkWidget::update();
-
- switch (type()) {
- case Type_StickyButton:
- pm = _style->getStickyButtonMask();
- break;
- case Type_CloseButton:
- pm = _style->getCloseButtonMask();
- break;
- case Type_MaximizeButton:
- pm = _style->getMaximizeButtonMask();
- break;
- case Type_IconifyButton:
- pm = _style->getIconifyButtonMask();
- break;
- case Type_LeftGrip:
- case Type_RightGrip:
- return; // no drawing
- default:
- assert(false); // there's no other button widgets!
- }
-
- if (pm->mask == None) return; // no mask for the button, leave it empty
+ if (pm->mask == None) return; // no mask for the button, leave it empty
- width = _rect.width();
+ width = _rect.width();
- otk::BPen pen(_focused ? *_style->getButtonPicFocus() :
- *_style->getButtonPicUnfocus());
-
- // set the clip region
- XSetClipMask(otk::OBDisplay::display, pen.gc(), pm->mask);
- XSetClipOrigin(otk::OBDisplay::display, pen.gc(),
- (width - pm->w)/2, (width - pm->h)/2);
-
- // fill in the clipped region
- XFillRectangle(otk::OBDisplay::display, _window, pen.gc(),
- (width - pm->w)/2, (width - pm->h)/2,
- (width + pm->w)/2, (width + pm->h)/2);
-
- // unset the clip region
- XSetClipMask(otk::OBDisplay::display, pen.gc(), None);
- XSetClipOrigin(otk::OBDisplay::display, pen.gc(), 0, 0);
+ otk::Pen pen(_focused ? *_style->getButtonPicFocus() :
+ *_style->getButtonPicUnfocus());
+
+ // set the clip region
+ XSetClipMask(**otk::display, pen.gc(), pm->mask);
+ XSetClipOrigin(**otk::display, pen.gc(),
+ (width - pm->w)/2, (width - pm->h)/2);
+
+ // fill in the clipped region
+ XFillRectangle(**otk::display, _window, pen.gc(),
+ (width - pm->w)/2, (width - pm->h)/2,
+ (width + pm->w)/2, (width + pm->h)/2);
+
+ // unset the clip region
+ XSetClipMask(**otk::display, pen.gc(), None);
+ XSetClipOrigin(**otk::display, pen.gc(), 0, 0);
+ }
}
-void OBButtonWidget::adjust()
+void ButtonWidget::adjust()
{
- // XXX: adjust shit
+ // nothing to adjust. no children.
}
-void OBButtonWidget::focus()
+void ButtonWidget::focus()
{
- otk::OtkWidget::focus();
+ otk::Widget::focus();
setTextures();
}
-void OBButtonWidget::unfocus()
+void ButtonWidget::unfocus()
{
- otk::OtkWidget::unfocus();
+ otk::Widget::unfocus();
setTextures();
}
-void OBButtonWidget::buttonPressHandler(const XButtonEvent &e)
+void ButtonWidget::buttonPressHandler(const XButtonEvent &e)
{
- OtkWidget::buttonPressHandler(e);
+ otk::Widget::buttonPressHandler(e);
if (_button) return;
_button = e.button;
_pressed = true;
}
-void OBButtonWidget::buttonReleaseHandler(const XButtonEvent &e)
+void ButtonWidget::buttonReleaseHandler(const XButtonEvent &e)
{
- OtkWidget::buttonPressHandler(e);
+ otk::Widget::buttonPressHandler(e);
if (e.button != _button) return;
_button = 0;
_pressed = false;