diff options
| -rw-r--r-- | src/button.c | 3 | ||||
| -rw-r--r-- | src/button.h | 3 | ||||
| -rw-r--r-- | src/comet.c | 4 | ||||
| -rw-r--r-- | src/draw.c | 5 |
4 files changed, 8 insertions, 7 deletions
diff --git a/src/button.c b/src/button.c index 6e0e263..3a4e311 100644 --- a/src/button.c +++ b/src/button.c @@ -2,11 +2,10 @@ #include "button.h" -Button *button_create(const char *text, bool fixed_size) +Button *button_create(const char *text) { Button *btn = g_malloc0(sizeof(Button)); btn->text = g_strdup(text); - btn->fixed_size = fixed_size; return btn; } diff --git a/src/button.h b/src/button.h index 11b6507..7df70d3 100644 --- a/src/button.h +++ b/src/button.h @@ -10,12 +10,11 @@ typedef struct Button Button; typedef void (* ButtonAction)(Button *btn); struct Button { - bool fixed_size; ButtonAction action; char *text; }; -Button *button_create(const char *text, bool fixed_size); +Button *button_create(const char *text); void button_set_action(Button *btn, ButtonAction action); diff --git a/src/comet.c b/src/comet.c index 2b0cf40..268d846 100644 --- a/src/comet.c +++ b/src/comet.c @@ -69,12 +69,12 @@ int main(int argc, char **argv) for (int i = 0; i < 9; ++i) { char text[] = { '1' + i, '\0' }; - Button *btn = button_create(text, true); + Button *btn = button_create(text); button_set_action(btn, action); state_add_button(state, btn); } - Button *btn = button_create("long button", false); + Button *btn = button_create("long button"); button_set_action(btn, action); state_add_button(state, btn); @@ -151,7 +151,10 @@ void draw_compute_layout(Drawable *draw, GList *btns, cairo_t *cr) layout->text_w = ceil(text_w / scale); layout->text_h = ceil(text_h / scale); - layout->width = btn->fixed_size ? height : layout->text_w + 2 * radius; + // If there is only one glyph the button should be round + size_t text_l = g_utf8_strlen(btn->text, -1); + + layout->width = text_l == 1 ? height : layout->text_w + 2 * radius; layout->height = height; draw->layouts = g_list_append(draw->layouts, layout); |
