aboutsummaryrefslogtreecommitdiff
path: root/src/draw.c
diff options
context:
space:
mode:
authorFederico Angelilli <code@fedang.net>2024-03-15 00:21:01 +0100
committerFederico Angelilli <code@fedang.net>2024-03-15 00:21:18 +0100
commit430def6e39315b6cee807aba3e4126134b93b164 (patch)
treee400668cb1890c1f338655bd57994dbdbc8ab7cc /src/draw.c
parent5765bea99e1d497063ab312d879390b0dd3d2efd (diff)
Fix layout animation and animation handler
Diffstat (limited to 'src/draw.c')
-rw-r--r--src/draw.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/draw.c b/src/draw.c
index 5171321..1a8fe5c 100644
--- a/src/draw.c
+++ b/src/draw.c
@@ -113,7 +113,7 @@ void draw_paint(Drawer *draw, Window *win)
if (!layout->btn->anim->paint_func(layout->btn->anim, cr, layout))
layout->btn->anim->paint_func = NULL;
- } else if (layout->btn->anim->paint_func == NULL) {
+ } else if (layout->btn->anim->layout_func == NULL) {
// Remove animation if both paint_func and layout_func finished
animation_destroy(layout->btn->anim);
layout->btn->anim = NULL;
@@ -245,20 +245,22 @@ void draw_compute_layout(Drawer *draw, Window *win, GList *btns)
}
}
- if (btn->anim != NULL && btn->anim->layout_func != NULL) {
- if (layout->btn->anim->start == 0) {
- layout->btn->anim->start = g_get_monotonic_time();
- log_debug("Starting animation [start=%ld, duration=%ld, button=%p]",
- layout->btn->anim->start, layout->btn->anim->duration, layout->btn);
- }
-
- if (!btn->anim->layout_func(btn->anim, layout))
- btn->anim->layout_func = NULL;
- }
-
if (layout->btn->simple) {
layout->pl = pango_cairo_create_layout(window_get_context(win));
layout_text(layout, draw->desc, height, radius);
+
+ // TODO: make it work for groups
+ if (btn->anim != NULL && btn->anim->layout_func != NULL) {
+ if (btn->anim->start == 0) {
+ btn->anim->start = g_get_monotonic_time();
+ log_debug("Starting animation [type=%d, start=%ld, duration=%ld, button=%p]",
+ btn->anim->type, btn->anim->start, btn->anim->duration, btn);
+ }
+
+ if (!btn->anim->layout_func(btn->anim, layout))
+ btn->anim->layout_func = NULL;
+ }
+
x += layout->width + line_w * 2;
layout->width -= 2 * btn->padding;