diff --git a/clients/flower.c b/clients/flower.c index 8b576269..ae70d58e 100644 --- a/clients/flower.c +++ b/clients/flower.c @@ -105,6 +105,16 @@ draw_stuff(cairo_surface_t *surface, int width, int height) cairo_destroy(cr); } +static void +resize_handler(struct widget *widget, + int32_t width, int32_t height, void *data) +{ + struct flower *flower = data; + + /* Dont resize me */ + widget_set_size(flower->widget, flower->width, flower->height); +} + static void redraw_handler(struct widget *widget, void *data) { @@ -173,6 +183,7 @@ int main(int argc, char *argv[]) flower.window = window_create(d, flower.width, flower.height); flower.widget = window_add_widget(flower.window, &flower); + widget_set_resize_handler(flower.widget, resize_handler); widget_set_redraw_handler(flower.widget, redraw_handler); widget_set_motion_handler(flower.widget, motion_handler); widget_set_button_handler(flower.widget, button_handler); diff --git a/clients/window.c b/clients/window.c index fc1cfce8..2613b3cc 100644 --- a/clients/window.c +++ b/clients/window.c @@ -2038,9 +2038,11 @@ window_resize(struct window *window, int32_t width, int32_t height) allocation.height, widget->user_data); - window->allocation = widget->allocation; - - window_schedule_redraw(window); + if (window->allocation.width != widget->allocation.width || + window->allocation.height != widget->allocation.height) { + window->allocation = widget->allocation; + window_schedule_redraw(window); + } } static void