aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFederico Angelilli <code@fedang.net>2024-03-06 21:36:14 +0100
committerFederico Angelilli <code@fedang.net>2024-03-06 21:36:14 +0100
commitf7e94e7a0f33cbf6b5ee784974a431d633aada0f (patch)
tree4bdfd2a42d198c0a295880cf433ec3ee5c8863fb /src
parentf4b80335df97b6136682b1acb71ecf4766d636ed (diff)
Fix button ordering bug
Diffstat (limited to 'src')
-rw-r--r--src/comet.c4
-rw-r--r--src/state.c15
-rw-r--r--src/state.h2
3 files changed, 19 insertions, 2 deletions
diff --git a/src/comet.c b/src/comet.c
index 586245f..a969677 100644
--- a/src/comet.c
+++ b/src/comet.c
@@ -293,8 +293,6 @@ int main(int argc, char **argv)
// Dwm tags
DwmIpc *dwm = dwm_create(state, "/tmp/dwm.sock");
- // FIXME: BUG! Explodes if the buttons are not loaded with the left first!!!
- // And I have no clue as to why!!!!!
dwm_register_tags(dwm, color, purple, text_color, line_color);
register_buttons(state, color, line_color, text_color);
@@ -363,6 +361,8 @@ int main(int argc, char **argv)
button_group_append(group, menu);
state_add_button(state, group);
+ state_order_button(state);
+
connect_attach_state(con, state);
connect_attach_source(con);
diff --git a/src/state.c b/src/state.c
index e8ddbe0..c5dc759 100644
--- a/src/state.c
+++ b/src/state.c
@@ -55,6 +55,21 @@ void state_redraw(State *state, bool changed_layout)
state->id = g_idle_add_full(G_PRIORITY_HIGH_IDLE, changed_layout ? redraw_and_layout : redraw, state, NULL);
}
+static gint align_compare(gconstpointer a, gconstpointer b)
+{
+ PangoAlignment a_align = ((Button *)a)->align;
+ PangoAlignment b_align = ((Button *)b)->align;
+
+ if (a_align < b_align) return -1;
+ if (a_align > b_align) return 1;
+ return 0;
+}
+
+void state_order_button(State *state)
+{
+ state->btns = g_list_sort(state->btns, align_compare);
+}
+
void state_destroy(State *state)
{
g_list_free_full(state->btns, (void *)button_destroy);
diff --git a/src/state.h b/src/state.h
index 1dedd8e..9ce4cc9 100644
--- a/src/state.h
+++ b/src/state.h
@@ -22,6 +22,8 @@ void state_add_button(State *state, Button *btn);
void state_remove_button(State *state, Button *btn);
+void state_order_button(State *state);
+
void state_redraw(State *state, bool changed_layout);
void state_destroy(State *state);