diff --git a/WPrefs.app/Icons.c b/WPrefs.app/Icons.c index 702e4bb..d65a7a5 100644 --- a/WPrefs.app/Icons.c +++ b/WPrefs.app/Icons.c @@ -142,8 +142,7 @@ static void showIconLayout(WMWidget * widget, void *data) break; } - /* Force full redisplay of the entire icon position panel */ - WMRedisplayWidget(panel->posF); + WMRedisplayWidget(panel->posVF); } static void minipreview_slider_changed(WMWidget *w, void *data) diff --git a/src/backend/wayland/wl_backend.c b/src/backend/wayland/wl_backend.c index b23adef..e3ff601 100644 --- a/src/backend/wayland/wl_backend.c +++ b/src/backend/wayland/wl_backend.c @@ -3702,10 +3702,17 @@ wl_event_loop_run(void) void *ectx = wmscr->eventBackendCtx; WMEvent wev; int limit = 64; + int handled = 0; while (be->pending(ectx) && limit-- > 0) { be->fetch(ectx, &wev); WMHandleEvent(&wev); + handled++; } + /* If WINGs events were processed (which may trigger client + * surface commits via wl_redisplay), do another short dispatch + * to process those commits so the next frame renders them. */ + if (handled) + wl_event_loop_dispatch(loop, 0); } } }