aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/button.c1
-rw-r--r--src/draw.c4
-rw-r--r--src/state.c5
-rw-r--r--src/state.h2
4 files changed, 11 insertions, 1 deletions
diff --git a/src/button.c b/src/button.c
index 24eaf0c..7bee576 100644
--- a/src/button.c
+++ b/src/button.c
@@ -9,6 +9,7 @@ Button *button_simple_create(PangoAlignment align, Color color, Color line_color
btn->align = align;
btn->color = color;
btn->line_color = line_color;
+ CAST(btn, ButtonSimple)->action = NULL;
return btn;
}
diff --git a/src/draw.c b/src/draw.c
index fa59b0e..131b944 100644
--- a/src/draw.c
+++ b/src/draw.c
@@ -104,6 +104,8 @@ void draw_paint(Drawable *draw, Window *win)
cairo_set_source_rgba(cr, color.r, color.g, color.b, color.a);
cairo_move_to(cr, text_x, text_y);
+ // NOTE: This works only if the text didn't change in size after the layouting
+ pango_layout_set_text(layout->pl, CAST(layout->btn, ButtonSimple)->text, -1);
pango_cairo_update_layout(cr, layout->pl);
pango_cairo_show_layout(cr, layout->pl);
}
@@ -213,7 +215,7 @@ void draw_compute_layout(Drawable *draw, Window *win, GList *btns)
child->btn = btn;
child->x = x + btn->padding;
- child->y = btn->padding;;
+ child->y = btn->padding;
child->pl = pango_cairo_create_layout(window_get_context(win));
layout_text(child, draw->desc, scale, height, radius);
diff --git a/src/state.c b/src/state.c
index 0debb1f..e8ddbe0 100644
--- a/src/state.c
+++ b/src/state.c
@@ -21,6 +21,11 @@ void state_add_button(State *state, Button *btn)
state->btns = g_list_append(state->btns, btn);
}
+void state_remove_button(State *state, Button *btn)
+{
+ state->btns = g_list_remove(state->btns, btn);
+}
+
static gboolean redraw_and_layout(gpointer data)
{
State *state = data;
diff --git a/src/state.h b/src/state.h
index 5814415..1dedd8e 100644
--- a/src/state.h
+++ b/src/state.h
@@ -20,6 +20,8 @@ State *state_create(Window *win, Drawable *draw);
void state_add_button(State *state, Button *btn);
+void state_remove_button(State *state, Button *btn);
+
void state_redraw(State *state, bool changed_layout);
void state_destroy(State *state);