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)) {
101 int active_widgets = 0;
102 for (GList *iter = g_list_first(b->
children); iter != NULL;
103 iter = g_list_next(iter)) {
111 if (active_widgets > 0) {
112 height += (active_widgets - 1) * spacing;
115 for (GList *iter = g_list_first(b->
children); iter != NULL;
116 iter = g_list_next(iter)) {
130 int expanding_widgets = 0;
131 int active_widgets = 0;
134 for (GList *iter = g_list_first(b->
children); iter != NULL;
135 iter = g_list_next(iter)) {
143 for (GList *iter = g_list_first(b->
children); iter != NULL;
144 iter = g_list_next(iter)) {
150 if (child->
expand == TRUE) {
158 if (active_widgets > 0) {
159 b->
max_size += (active_widgets - 1) * spacing;
163 g_debug(
"Widgets to large (height) for box: %d %d", b->
max_size,
167 if (active_widgets > 0) {
169 double rem = rem_height - b->
max_size;
171 for (GList *iter = g_list_first(b->
children); iter != NULL;
172 iter = g_list_next(iter)) {
177 if (child->
expand == TRUE) {
179 int expanding_widgets_size = (rem) / (expanding_widgets - index);
181 top += expanding_widgets_size;
184 rem -= expanding_widgets_size;
197 int expanding_widgets = 0;
198 int active_widgets = 0;
201 for (GList *iter = g_list_first(b->
children); iter != NULL;
202 iter = g_list_next(iter)) {
211 for (GList *iter = g_list_first(b->
children); iter != NULL;
212 iter = g_list_next(iter)) {
218 if (child->
expand == TRUE) {
227 b->
max_size += MAX(0, ((active_widgets - 1) * spacing));
230 g_debug(
"Widgets to large (width) for box: %d %d", b->
max_size,
234 if (active_widgets > 0) {
236 double rem = rem_width - b->
max_size;
241 for (GList *iter = g_list_first(b->
children); iter != NULL;
242 iter = g_list_next(iter)) {
247 if (child->
expand == TRUE) {
249 int expanding_widgets_size = (rem) / (expanding_widgets - index);
251 left += expanding_widgets_size;
254 rem -= expanding_widgets_size;
268 for (GList *iter = g_list_first(b->
children); iter != NULL;
269 iter = g_list_next(iter)) {
278 for (GList *iter = g_list_first(b->
children); iter != NULL;
279 iter = g_list_next(iter)) {
321 for (GList *iter = g_list_first(b->
children); iter != NULL;
322 iter = g_list_next(iter)) {
328 gint rx = x - child->
x;
329 gint ry = y - child->
y;
331 if (target != NULL) {
340 for (GList *iter = g_list_first(((
box *)wid)->children); iter != NULL;
341 iter = g_list_next(iter)) {
348 box *b = g_malloc0(
sizeof(
box));
static void vert_calculate_size(box *b)
static int box_get_desired_width(widget *wid, const int height)
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_resize(widget *wid, short w, short h)
static void box_free(widget *wid)
static widget * box_find_mouse_target(widget *wid, WidgetType type, gint x, gint y)
static int box_get_desired_height(widget *wid, const int width)
static void box_draw(widget *wid, cairo_t *draw)
void box_add(box *wid, widget *child, gboolean expand)
box * box_create(widget *parent, const char *name, RofiOrientation type)
@ ROFI_ORIENTATION_HORIZONTAL
@ ROFI_ORIENTATION_VERTICAL
int distance_get_pixel(RofiDistance d, RofiOrientation ori)
int rofi_theme_get_boolean(const widget *wid, const char *property, int def)
RofiOrientation rofi_theme_get_orientation(const widget *wid, const char *property, RofiOrientation def)
RofiDistance rofi_theme_get_distance(const widget *wid, const char *property, int def)