fix clipboard pasting

This commit is contained in:
Matthew 2025-11-30 17:10:53 +11:00
parent e42372cb17
commit a9607ec0cd

View File

@ -425,6 +425,7 @@ enum Atoms
WMProtocols,
DeleteWindow,
StateHidden,
XselData,
Max,
}
@ -438,6 +439,7 @@ const char[][] ATOM_STRS = [
Atoms.WMProtocols: CastStr!(char)("WM_PROTOCOLS"),
Atoms.DeleteWindow: CastStr!(char)("WM_DELETE_WINDOW"),
Atoms.StateHidden: CastStr!(char)("_NET_WM_STATE_HIDDEN"),
Atoms.XselData: CastStr!(char)("XSEL_DATA"),
];
alias PThreadProc = extern (C) void* function(void*);
@ -1059,19 +1061,14 @@ ClipboardText(PlatformWindow* w, ClipboardMode mode)
if(sel.owned)
{
buf = GetClipboardSelection(w, sel);
Unlock(&w.cb_mut);
}
else
{
Window owner = XGetSelectionOwner(w.display, sel.xmode);
if(owner == None)
{
Free(sel.data);
sel.data = [];
Unlock(&w.cb_mut);
u64 ticket = w.cb_mut.next_ticket;
u64 ticket = Unlock(&w.cb_mut)+1;
sel.target = w.atoms[Atoms.Utf8String];
XConvertSelection(w.display, sel.xmode, sel.target, sel.xmode, w.window, CurrentTime);
@ -1081,9 +1078,6 @@ ClipboardText(PlatformWindow* w, ClipboardMode mode)
buf = GetClipboardSelection(w, sel);
}
}
Unlock(&w.cb_mut);
return buf;
}