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
This commit is contained in:
Levi Neely 2026-05-13 19:58:55 +02:00
parent b53cc4f0da
commit 72377068fd
1 changed files with 4 additions and 4 deletions

View File

@ -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;