1 /* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*-
3 button.c for the Openbox window manager
4 Copyright (c) 2012 Mikael Magnusson
5 Copyright (c) 2012 Dana Jansens
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 See the COPYING file for a copy of the GNU General Public License.
25 #include <X11/Xutil.h>
28 RrButton
*RrButtonNew (const RrInstance
*inst
)
32 out
= g_new(RrButton
, 1);
35 /* no need to alloc colors, set them null (for freeing later) */
36 out
->focused_unpressed_color
= NULL
;
37 out
->unfocused_unpressed_color
= NULL
;
38 out
->focused_pressed_color
= NULL
;
39 out
->unfocused_pressed_color
= NULL
;
40 out
->disabled_focused_color
= NULL
;
41 out
->disabled_unfocused_color
= NULL
;
42 out
->hover_focused_color
= NULL
;
43 out
->hover_unfocused_color
= NULL
;
44 out
->toggled_hover_focused_color
= NULL
;
45 out
->toggled_hover_unfocused_color
= NULL
;
46 out
->toggled_focused_pressed_color
= NULL
;
47 out
->toggled_unfocused_pressed_color
= NULL
;
48 out
->toggled_focused_unpressed_color
= NULL
;
49 out
->toggled_unfocused_unpressed_color
= NULL
;
53 out
->pressed_mask
= NULL
;
54 out
->disabled_mask
= NULL
;
55 out
->hover_mask
= NULL
;
56 out
->toggled_mask
= NULL
;
57 out
->toggled_hover_mask
= NULL
;
58 out
->toggled_pressed_mask
= NULL
;
60 /* allocate appearances */
61 out
->a_focused_unpressed
= RrAppearanceNew(inst
, 1);
62 out
->a_unfocused_unpressed
= RrAppearanceNew(inst
, 1);
63 out
->a_focused_pressed
= RrAppearanceNew(inst
, 1);
64 out
->a_unfocused_pressed
= RrAppearanceNew(inst
, 1);
65 out
->a_disabled_focused
= RrAppearanceNew(inst
, 1);
66 out
->a_disabled_unfocused
= RrAppearanceNew(inst
, 1);
67 out
->a_hover_focused
= RrAppearanceNew(inst
, 1);
68 out
->a_hover_unfocused
= RrAppearanceNew(inst
, 1);
69 out
->a_toggled_focused_unpressed
= RrAppearanceNew(inst
, 1);
70 out
->a_toggled_unfocused_unpressed
= RrAppearanceNew(inst
, 1);
71 out
->a_toggled_focused_pressed
= RrAppearanceNew(inst
, 1);
72 out
->a_toggled_unfocused_pressed
= RrAppearanceNew(inst
, 1);
73 out
->a_toggled_hover_focused
= RrAppearanceNew(inst
, 1);
74 out
->a_toggled_hover_unfocused
= RrAppearanceNew(inst
, 1);
79 void RrButtonFree(RrButton
*b
)
82 if (b
->focused_unpressed_color
)
83 RrColorFree(b
->focused_unpressed_color
);
84 if (b
->unfocused_unpressed_color
)
85 RrColorFree(b
->unfocused_unpressed_color
);
86 if (b
->focused_pressed_color
)
87 RrColorFree(b
->focused_pressed_color
);
88 if (b
->unfocused_pressed_color
)
89 RrColorFree(b
->unfocused_pressed_color
);
90 if (b
->disabled_focused_color
)
91 RrColorFree(b
->disabled_focused_color
);
92 if (b
->disabled_unfocused_color
)
93 RrColorFree(b
->disabled_unfocused_color
);
94 if (b
->hover_focused_color
)
95 RrColorFree(b
->hover_focused_color
);
96 if (b
->hover_unfocused_color
)
97 RrColorFree(b
->hover_unfocused_color
);
98 if (b
->toggled_hover_focused_color
)
99 RrColorFree(b
->toggled_hover_focused_color
);
100 if (b
->toggled_hover_unfocused_color
)
101 RrColorFree(b
->toggled_hover_unfocused_color
);
102 if (b
->toggled_focused_pressed_color
)
103 RrColorFree(b
->toggled_focused_pressed_color
);
104 if (b
->toggled_unfocused_pressed_color
)
105 RrColorFree(b
->toggled_unfocused_pressed_color
);
106 if (b
->toggled_focused_unpressed_color
)
107 RrColorFree(b
->toggled_focused_unpressed_color
);
108 if (b
->toggled_unfocused_unpressed_color
)
109 RrColorFree(b
->toggled_unfocused_unpressed_color
);
112 if (b
->mask
) RrPixmapMaskFree(b
->mask
);
113 if (b
->pressed_mask
) RrPixmapMaskFree(b
->pressed_mask
);
114 if (b
->disabled_mask
) RrPixmapMaskFree(b
->disabled_mask
);
115 if (b
->hover_mask
) RrPixmapMaskFree(b
->hover_mask
);
116 if (b
->toggled_mask
) RrPixmapMaskFree(b
->toggled_mask
);
117 if (b
->toggled_hover_mask
) RrPixmapMaskFree(b
->toggled_hover_mask
);
118 if (b
->toggled_pressed_mask
) RrPixmapMaskFree(b
->toggled_pressed_mask
);
121 RrAppearanceFree(b
->a_focused_unpressed
);
122 RrAppearanceFree(b
->a_unfocused_unpressed
);
123 RrAppearanceFree(b
->a_focused_pressed
);
124 RrAppearanceFree(b
->a_unfocused_pressed
);
125 RrAppearanceFree(b
->a_disabled_focused
);
126 RrAppearanceFree(b
->a_disabled_unfocused
);
127 RrAppearanceFree(b
->a_hover_focused
);
128 RrAppearanceFree(b
->a_hover_unfocused
);
129 RrAppearanceFree(b
->a_toggled_focused_unpressed
);
130 RrAppearanceFree(b
->a_toggled_unfocused_unpressed
);
131 RrAppearanceFree(b
->a_toggled_focused_pressed
);
132 RrAppearanceFree(b
->a_toggled_unfocused_pressed
);
133 RrAppearanceFree(b
->a_toggled_hover_focused
);
134 RrAppearanceFree(b
->a_toggled_hover_unfocused
);