src/buttonwidget.cc (raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- #ifdef HAVE_CONFIG_H # include "../config.h" #endif #include "buttonwidget.hh" namespace ob { OBButtonWidget::OBButtonWidget(otk::OtkWidget *parent, OBWidget::WidgetType type) : otk::OtkWidget(parent), OBWidget(type), _pressed(false), _button(0) { } OBButtonWidget::~OBButtonWidget() { } void OBButtonWidget::setTextures() { switch (type()) { case Type_LeftGrip: case Type_RightGrip: if (_focused) setTexture(_style->getGripFocus()); else setTexture(_style->getGripUnfocus()); break; case Type_StickyButton: case Type_CloseButton: case Type_MaximizeButton: case Type_IconifyButton: if (_pressed) { if (_focused) setTexture(_style->getButtonPressedFocus()); else setTexture(_style->getButtonPressedUnfocus()); } else { if (_focused) setTexture(_style->getButtonFocus()); else setTexture(_style->getButtonUnfocus()); } break; default: assert(false); // there's no other button widgets! } } void OBButtonWidget::setStyle(otk::Style *style) { otk::OtkWidget::setStyle(style); setTextures(); switch (type()) { case Type_LeftGrip: case Type_RightGrip: setBorderColor(_style->getBorderColor()); break; case Type_StickyButton: case Type_CloseButton: case Type_MaximizeButton: case Type_IconifyButton: break; default: assert(false); // there's no other button widgets! } } void OBButtonWidget::focus() { otk::OtkWidget::focus(); setTextures(); } void OBButtonWidget::unfocus() { otk::OtkWidget::unfocus(); setTextures(); } void OBButtonWidget::adjust() { // XXX: adjust shit } void OBButtonWidget::buttonPressHandler(const XButtonEvent &e) { OtkWidget::buttonPressHandler(e); if (_button) return; _button = e.button; _pressed = true; setTextures(); update(); } void OBButtonWidget::buttonReleaseHandler(const XButtonEvent &e) { OtkWidget::buttonPressHandler(e); if (e.button != _button) return; _button = 0; _pressed = false; setTextures(); update(); } } |