X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/b6bd159922608fa474026837771d63bf7eadcf97..94f0aa3464955865f5abdac6b335a86aca3e180a:/src/xselect.c diff --git a/src/xselect.c b/src/xselect.c index adee1872db..15ce8d487f 100644 --- a/src/xselect.c +++ b/src/xselect.c @@ -1,5 +1,5 @@ /* X Selection processing for Emacs. - Copyright (C) 1993-1997, 2000-2011 Free Software Foundation, Inc. + Copyright (C) 1993-1997, 2000-2012 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -516,7 +516,7 @@ static struct selection_data *converted_selections; static Atom conversion_fail_tag; /* Used as an unwind-protect clause so that, if a selection-converter signals - an error, we tell the requester that we were unable to do what they wanted + an error, we tell the requestor that we were unable to do what they wanted before we throw to top-level or go into the debugger or whatever. */ static Lisp_Object @@ -693,7 +693,7 @@ x_reply_selection_request (struct input_event *event, bytes_remaining = cs->size; bytes_remaining *= format_bytes; - /* Wait for the requester to ack by deleting the property. + /* Wait for the requestor to ack by deleting the property. This can run Lisp code (process handlers) or signal. */ if (! had_errors) { @@ -732,7 +732,7 @@ x_reply_selection_request (struct input_event *event, if (had_errors) break; - /* Wait for the requester to ack this chunk by deleting + /* Wait for the requestor to ack this chunk by deleting the property. This can run Lisp code or signal. */ TRACE1 ("Waiting for increment ACK (deletion of %s)", XGetAtomName (display, cs->property)); @@ -740,7 +740,7 @@ x_reply_selection_request (struct input_event *event, } /* Now write a zero-length chunk to the property to tell the - requester that we're done. */ + requestor that we're done. */ BLOCK_INPUT; if (! waiting_for_other_props_on_window (display, window)) XSelectInput (display, window, 0L); @@ -757,7 +757,7 @@ x_reply_selection_request (struct input_event *event, /* The window we're communicating with may have been deleted in the meantime (that's a real situation from a bug report). In this case, there may be events in the event queue still - refering to the deleted window, and we'll get a BadWindow error + referring to the deleted window, and we'll get a BadWindow error in XTread_socket when processing the events. I don't have an idea how to fix that. gerd, 2001-01-98. */ /* 2004-09-10: XSync and UNBLOCK so that possible protocol errors are @@ -931,6 +931,7 @@ x_convert_selection (struct input_event *event, Lisp_Object selection_symbol, /* Otherwise, record the converted selection to binary. */ cs = xmalloc (sizeof (struct selection_data)); + cs->data = NULL; cs->nofree = 1; cs->property = property; cs->wait_object = NULL; @@ -1982,7 +1983,9 @@ VALUE is typically a string, or a cons of two markers, but may be anything that the functions on `selection-converter-alist' know about. FRAME should be a frame that should own the selection. If omitted or -nil, it defaults to the selected frame. */) +nil, it defaults to the selected frame. + +On Nextstep, FRAME is unused. */) (Lisp_Object selection, Lisp_Object value, Lisp_Object frame) { if (NILP (frame)) frame = selected_frame; @@ -2003,15 +2006,18 @@ nil, it defaults to the selected frame. */) DEFUN ("x-get-selection-internal", Fx_get_selection_internal, Sx_get_selection_internal, 2, 4, 0, doc: /* Return text selected from some X window. -SELECTION is a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD'. +SELECTION-SYMBOL is typically `PRIMARY', `SECONDARY', or `CLIPBOARD'. \(Those are literal upper-case symbol names, since that's what X expects.) -TYPE is the type of data desired, typically `STRING'. -TIME_STAMP is the time to use in the XConvertSelection call for foreign +TARGET-TYPE is the type of data desired, typically `STRING'. + +TIME-STAMP is the time to use in the XConvertSelection call for foreign selections. If omitted, defaults to the time for the last event. TERMINAL should be a terminal object or a frame specifying the X server to query. If omitted or nil, that stands for the selected -frame's display, or the first available X display. */) +frame's display, or the first available X display. + +On Nextstep, TIME-STAMP and TERMINAL are unused. */) (Lisp_Object selection_symbol, Lisp_Object target_type, Lisp_Object time_stamp, Lisp_Object terminal) { @@ -2052,9 +2058,15 @@ DEFUN ("x-disown-selection-internal", Fx_disown_selection_internal, doc: /* If we own the selection SELECTION, disown it. Disowning it means there is no such selection. +Sets the last-change time for the selection to TIME-OBJECT (by default +the time of the last event). + TERMINAL should be a terminal object or a frame specifying the X server to query. If omitted or nil, that stands for the selected -frame's display, or the first available X display. */) +frame's display, or the first available X display. + +On Nextstep, the TIME-OBJECT and TERMINAL arguments are unused. +On MS-DOS, all this does is return non-nil if we own the selection. */) (Lisp_Object selection, Lisp_Object time_object, Lisp_Object terminal) { Time timestamp; @@ -2110,7 +2122,9 @@ and t is the same as `SECONDARY'. TERMINAL should be a terminal object or a frame specifying the X server to query. If omitted or nil, that stands for the selected -frame's display, or the first available X display. */) +frame's display, or the first available X display. + +On Nextstep, TERMINAL is unused. */) (Lisp_Object selection, Lisp_Object terminal) { struct frame *f = frame_for_x_selection (terminal); @@ -2129,13 +2143,15 @@ DEFUN ("x-selection-exists-p", Fx_selection_exists_p, Sx_selection_exists_p, 0, 2, 0, doc: /* Whether there is an owner for the given X selection. SELECTION should be the name of the selection in question, typically -one of the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'. (X expects -these literal upper-case names.) The symbol nil is the same as -`PRIMARY', and t is the same as `SECONDARY'. +one of the symbols `PRIMARY', `SECONDARY', `CLIPBOARD', or +`CLIPBOARD_MANAGER' (X expects these literal upper-case names.) The +symbol nil is the same as `PRIMARY', and t is the same as `SECONDARY'. TERMINAL should be a terminal object or a frame specifying the X server to query. If omitted or nil, that stands for the selected -frame's display, or the first available X display. */) +frame's display, or the first available X display. + +On Nextstep, TERMINAL is unused. */) (Lisp_Object selection, Lisp_Object terminal) { Window owner; @@ -2258,8 +2274,14 @@ x_clipboard_manager_save_all (void) local_frame = XCAR (XCDR (XCDR (XCDR (local_selection)))); if (FRAME_LIVE_P (XFRAME (local_frame))) - internal_condition_case_1 (x_clipboard_manager_save, local_frame, - Qt, x_clipboard_manager_error_2); + { + Lisp_Object args[1]; + args[0] = build_string ("Saving clipboard to X clipboard manager..."); + Fmessage (1, args); + + internal_condition_case_1 (x_clipboard_manager_save, local_frame, + Qt, x_clipboard_manager_error_2); + } } } @@ -2355,7 +2377,7 @@ x_fill_property_data (Display *dpy, Lisp_Object data, void *ret, int format) F is the frame to be used to look up X atoms if the TYPE is XA_ATOM. DATA is a C array of values to be converted. TYPE is the type of the data. Only XA_ATOM is special, it converts - each number in DATA to its corresponfing X atom as a symbol. + each number in DATA to its corresponding X atom as a symbol. FORMAT is 8, 16 or 32 and gives the size in bits for each C value to be stored in RET. SIZE is the number of elements in DATA.