From 72377068fd61c13aecef533b9f6fbf4c34066e98 Mon Sep 17 00:00:00 2001 From: Levi Neely <141506390+lneely@users.noreply.github.com> Date: Wed, 13 May 2026 19:58:55 +0200 Subject: [PATCH] Dialog rendering: child view compositing and text field fixes - wl_realize: allocate pixman backing image for every view - wl_map_subviews: recursively trigger redisplay on child views - wl_redisplay: composite child backing into parent, commit top-level - wtextfield.c: replace XDefineCursor with W_SetViewCursor - wtextfield.c: guard W_LookupString against NULL _x11_raw --- WINGs/wtextfield.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/WINGs/wtextfield.c b/WINGs/wtextfield.c index 2d24738..cbd5750 100644 --- a/WINGs/wtextfield.c +++ b/WINGs/wtextfield.c @@ -1379,7 +1379,7 @@ static void handleTextFieldActionEvents(WMEvent * event, void *data) } if (tPtr->flags.enabled && tPtr->flags.focused) { handleTextFieldKeyPress(tPtr, event); - XDefineCursor(dpy, W_VIEW(tPtr)->window, W_VIEW(tPtr)->screen->invisibleCursor); + W_SetViewCursor(W_VIEW(tPtr), W_VIEW(tPtr)->screen->invisibleCursor); tPtr->flags.pointerGrabbed = 1; } break; @@ -1388,7 +1388,7 @@ static void handleTextFieldActionEvents(WMEvent * event, void *data) if (tPtr->flags.pointerGrabbed) { tPtr->flags.pointerGrabbed = 0; - XDefineCursor(dpy, W_VIEW(tPtr)->window, W_VIEW(tPtr)->screen->textCursor); + W_SetViewCursor(W_VIEW(tPtr), W_VIEW(tPtr)->screen->textCursor); } if (tPtr->flags.waitingSelection) { return; @@ -1429,7 +1429,7 @@ static void handleTextFieldActionEvents(WMEvent * event, void *data) case WME_BUTTON_PRESS: if (tPtr->flags.pointerGrabbed) { tPtr->flags.pointerGrabbed = 0; - XDefineCursor(dpy, W_VIEW(tPtr)->window, W_VIEW(tPtr)->screen->textCursor); + W_SetViewCursor(W_VIEW(tPtr), W_VIEW(tPtr)->screen->textCursor); break; } @@ -1496,7 +1496,7 @@ static void handleTextFieldActionEvents(WMEvent * event, void *data) case WME_BUTTON_RELEASE: if (tPtr->flags.pointerGrabbed) { tPtr->flags.pointerGrabbed = 0; - XDefineCursor(dpy, W_VIEW(tPtr)->window, W_VIEW(tPtr)->screen->textCursor); + W_SetViewCursor(W_VIEW(tPtr), W_VIEW(tPtr)->screen->textCursor); } if (tPtr->flags.waitingSelection) { break;