1
0
mirror of https://github.com/gryf/wmaker.git synced 2026-02-02 06:05:45 +01:00

- german po file for WINGs (Guido Scholz <guido.scholz@bayernline.de>)

- misc fixes in selection code in WINGs
- fix for a crash if WMState is missing on startup
This commit is contained in:
dan
2002-01-01 18:40:24 +00:00
parent 372da5ca39
commit 89cb6559cc
7 changed files with 688 additions and 36 deletions

View File

@@ -89,7 +89,7 @@ WMDeleteSelectionCallback(WMView *view, Atom selection, Time timestamp)
WM_ITERATE_ARRAY(selCallbacks, handler, iter) {
if (handler->view == view
&& (handler->selection == selection || selection == 0)
&& (handler->selection == selection || selection == None)
&& (handler->timestamp == timestamp || timestamp == CurrentTime)) {
if (handler->flags.done_pending) {
@@ -152,7 +152,7 @@ notifySelection(XEvent *event, Atom prop)
{
XEvent ev;
/* printf("envent to %x\n", event->xselectionrequest.requestor); */
/* printf("event to %x\n", event->xselectionrequest.requestor); */
ev.xselection.type = SelectionNotify;
ev.xselection.serial = 0;
@@ -176,7 +176,7 @@ handleRequestEvent(XEvent *event)
SelectionHandler *handler;
WMArrayIterator iter;
WMArray *copy;
Bool handledRequest = False;
Bool handledRequest;
WM_ITERATE_ARRAY(selHandlers, handler, iter) {
@@ -196,9 +196,8 @@ handleRequestEvent(XEvent *event)
handler->flags.delete_pending = 1;
break;
case SelectionRequest:
if (W_VIEW_DRAWABLE(handler->view)
!= event->xselectionrequest.owner) {
case SelectionRequest:
if (W_VIEW_DRAWABLE(handler->view)!=event->xselectionrequest.owner) {
break;
}
@@ -215,6 +214,8 @@ handleRequestEvent(XEvent *event)
break;
}
handledRequest = False;
handler->flags.done_pending = 1;
data = handler->procs.convertSelection(handler->view,
@@ -222,41 +223,31 @@ handleRequestEvent(XEvent *event)
event->xselectionrequest.target,
handler->data,
&atom);
if (data == NULL) {
break;
}
handledRequest = True;
prop = event->xselectionrequest.property;
/* obsolete clients that don't set the property field */
if (prop == None)
prop = event->xselectionrequest.target;
if (!writeSelection(event->xselectionrequest.display,
event->xselectionrequest.requestor,
prop, atom, data)) {
WMReleaseData(data);
notifySelection(event, None);
break;
}
WMReleaseData(data);
notifySelection(event, prop);
if (data) {
if (writeSelection(event->xselectionrequest.display,
event->xselectionrequest.requestor,
prop, atom, data)) {
handledRequest = True;
}
WMReleaseData(data);
}
notifySelection(event, (handledRequest==True ? prop : None));
if (handler->procs.selectionDone != NULL) {
handler->procs.selectionDone(handler->view,
handler->selection,
event->xselectionrequest.target,
handler->data);
}
handler->flags.done_pending = 0;
if (!handledRequest) {
notifySelection(event, None);
}
}
break;
}
@@ -293,9 +284,6 @@ getSelectionData(Display *dpy, Window win, Atom where)
bpi = bits/8;
wdata = WMCreateDataWithBytesNoCopy(data, len*bpi, (WMFreeDataProc*)XFree);
if (wdata == NULL) {
return NULL;
}
WMSetDataFormat(wdata, bits);
return wdata;