--- rxvt-unicode/src/command.C 2006/01/20 10:27:08 1.274 +++ rxvt-unicode/src/command.C 2006/01/20 18:50:49 1.278 @@ -463,7 +463,7 @@ { /* normal XTerm key bindings */ case XK_Insert: /* Shift+Insert = paste mouse selection */ - selection_request (ev.time, Sel_Primary); + selection_request (ev.time); return; #if TODO /* rxvt extras */ @@ -1404,52 +1404,35 @@ case ClientMessage: if (ev.xclient.format == 32 - && ev.xclient.message_type == xa[XA_WM_PROTOCOLS]) + && !HOOK_INVOKE ((this, HOOK_CLIENT_MESSAGE, DT_XEVENT, &ev, DT_END))) { - if (ev.xclient.data.l[0] == xa[XA_WM_DELETE_WINDOW]) - destroy (); + if (ev.xclient.message_type == xa[XA_WM_PROTOCOLS]) + { + if (!HOOK_INVOKE ((this, HOOK_WM_PROTOCOLS, DT_XEVENT, &ev, DT_END))) + { + if (ev.xclient.data.l[0] == xa[XA_WM_DELETE_WINDOW]) + { + if (!HOOK_INVOKE ((this, HOOK_WM_DELETE_WINDOW, DT_XEVENT, &ev, DT_END))) + destroy (); + } #if ENABLE_EWMH - else if (ev.xclient.data.l[0] == xa[XA_NET_WM_PING]) - XSendEvent (disp, ev.xclient.window = display->root, - False, SubstructureRedirectMask | SubstructureNotifyMask, - &ev); + else if (ev.xclient.data.l[0] == xa[XA_NET_WM_PING]) + XSendEvent (disp, ev.xclient.window = display->root, + False, SubstructureRedirectMask | SubstructureNotifyMask, + &ev); #endif - } + } + } #if ENABLE_XEMBED - else if (ev.xclient.format == 32 && ev.xclient.message_type == xa[XA_XEMBED]) - { - if (ev.xclient.data.l[1] == XEMBED_FOCUS_IN) - focus_in (); - else if (ev.xclient.data.l[1] == XEMBED_FOCUS_OUT) - focus_out (); - } + else if (ev.xclient.format == 32 && ev.xclient.message_type == xa[XA_XEMBED]) + { + if (ev.xclient.data.l[1] == XEMBED_FOCUS_IN) + focus_in (); + else if (ev.xclient.data.l[1] == XEMBED_FOCUS_OUT) + focus_out (); + } #endif -#ifdef OFFIX_DND - /* OffiX Dnd (drag 'n' drop) protocol */ - else if (ev.xclient.message_type == xa[XA_DNDPROTOCOL] - && (ev.xclient.data.l[0] == DndFile - || ev.xclient.data.l[0] == DndDir - || ev.xclient.data.l[0] == DndLink)) - { - /* Get Dnd data */ - Atom ActualType; - int ActualFormat; - unsigned char *data; - unsigned long Size, RemainingBytes; - - XGetWindowProperty (disp, display->root, - xa[XA_DNDSELECTION], - 0L, 1000000L, - False, AnyPropertyType, - &ActualType, &ActualFormat, - &Size, &RemainingBytes, - &data); - set_string_property (XA_CUT_BUFFER0, data); - XFree (data); - selection_paste (display->root, XA_CUT_BUFFER0, true); - XSetInputFocus (disp, display->root, RevertToNone, CurrentTime); } -#endif /* OFFIX_DND */ break; case MappingNotify: @@ -1511,9 +1494,10 @@ break; case PropertyNotify: - if (ev.xproperty.atom == xa[XA_VT_SELECTION] - && ev.xproperty.state == PropertyNewValue) - selection_property (ev.xproperty.window, ev.xproperty.atom); + if (!HOOK_INVOKE ((this, HOOK_PROPERTY_NOTIFY, DT_XEVENT, &ev, DT_END))) + if (ev.xproperty.atom == xa[XA_VT_SELECTION] + && ev.xproperty.state == PropertyNewValue) + selection_property (ev.xproperty.window, ev.xproperty.atom); break; @@ -2156,14 +2140,8 @@ break; case Button2: - if (IN_RANGE_EXC (ev.x, 0, width) - && IN_RANGE_EXC (ev.y, 0, height)) // inside window? - { - if (ev.state & ShiftMask) - selection_request (ev.time, Sel_Clipboard); - else - selection_request (ev.time, Sel_Primary); - } + if (IN_RANGE_EXC (ev.x, 0, width) && IN_RANGE_EXC (ev.y, 0, height)) // inside window? + selection_request (ev.time, ev.state & ShiftMask ? Sel_Clipboard : Sel_Primary); break; #ifdef MOUSE_WHEEL