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