29 #define G_LOG_DOMAIN "Widgets.Box"
38 #define DEFAULT_SPACING 2
65 int active_widgets = 0;
66 for (GList *iter = g_list_first(b->
children); iter != NULL;
67 iter = g_list_next(iter)) {
73 if (child->
expand == TRUE) {
79 if (active_widgets > 0) {
80 width += (active_widgets - 1) * spacing;
83 for (GList *iter = g_list_first(b->
children); iter != NULL;
84 iter = g_list_next(iter)) {
100 int active_widgets = 0;
101 for (GList *iter = g_list_first(b->
children); iter != NULL;
102 iter = g_list_next(iter)) {
110 if (active_widgets > 0) {
111 height += (active_widgets - 1) * spacing;
114 for (GList *iter = g_list_first(b->
children); iter != NULL;
115 iter = g_list_next(iter)) {
129 int expanding_widgets = 0;
130 int active_widgets = 0;
133 for (GList *iter = g_list_first(b->
children); iter != NULL;
134 iter = g_list_next(iter)) {
141 for (GList *iter = g_list_first(b->
children); iter != NULL;
142 iter = g_list_next(iter)) {
148 if (child->
expand == TRUE) {
156 if (active_widgets > 0) {
157 b->
max_size += (active_widgets - 1) * spacing;
161 g_debug(
"Widgets to large (height) for box: %d %d", b->
max_size,
165 if (active_widgets > 0) {
167 double rem = rem_height - b->
max_size;
169 for (GList *iter = g_list_first(b->
children); iter != NULL;
170 iter = g_list_next(iter)) {
175 if (child->
expand == TRUE) {
177 int expanding_widgets_size = (rem) / (expanding_widgets - index);
179 top += expanding_widgets_size;
182 rem -= expanding_widgets_size;
195 int expanding_widgets = 0;
196 int active_widgets = 0;
199 for (GList *iter = g_list_first(b->
children); iter != NULL;
200 iter = g_list_next(iter)) {
209 for (GList *iter = g_list_first(b->
children); iter != NULL;
210 iter = g_list_next(iter)) {
216 if (child->
expand == TRUE) {
225 b->
max_size += MAX(0, ((active_widgets - 1) * spacing));
228 g_debug(
"Widgets to large (width) for box: %d %d", b->
max_size,
232 if (active_widgets > 0) {
234 double rem = rem_width - b->
max_size;
239 for (GList *iter = g_list_first(b->
children); iter != NULL;
240 iter = g_list_next(iter)) {
245 if (child->
expand == TRUE) {
247 int expanding_widgets_size = (rem) / (expanding_widgets - index);
249 left += expanding_widgets_size;
252 rem -= expanding_widgets_size;
266 for (GList *iter = g_list_first(b->
children); iter != NULL;
267 iter = g_list_next(iter)) {
276 for (GList *iter = g_list_first(b->
children); iter != NULL;
277 iter = g_list_next(iter)) {
319 for (GList *iter = g_list_first(b->
children); iter != NULL;
320 iter = g_list_next(iter)) {
326 gint rx = x - child->
x;
327 gint ry = y - child->
y;
329 if (target != NULL) {
338 for (GList *iter = g_list_first(((
box *)wid)->children); iter != NULL;
339 iter = g_list_next(iter)) {
346 box *b = g_malloc0(
sizeof(
box));
static void vert_calculate_size(box *b)
static int box_get_desired_width(widget *wid)
static void box_set_state(widget *wid, const char *state)
static void box_update(widget *wid)
static void hori_calculate_size(box *b)
static void box_free(widget *wid)
static void box_resize(widget *widget, short w, short h)
static int box_get_desired_height(widget *wid)
static widget * box_find_mouse_target(widget *wid, WidgetType type, gint x, gint y)
static void box_draw(widget *wid, cairo_t *draw)
void box_add(box *box, widget *child, gboolean expand)
box * box_create(widget *parent, const char *name, RofiOrientation type)
@ ROFI_ORIENTATION_HORIZONTAL
@ ROFI_ORIENTATION_VERTICAL
RofiDistance rofi_theme_get_distance(const widget *widget, const char *property, int def)
int rofi_theme_get_boolean(const widget *widget, const char *property, int def)
int distance_get_pixel(RofiDistance d, RofiOrientation ori)
RofiOrientation rofi_theme_get_orientation(const widget *widget, const char *property, RofiOrientation def)