NAME¶
Tk_CreateSelHandler, Tk_DeleteSelHandler - arrange to handle requests for a
selection
SYNOPSIS¶
#include <tk.h>
Tk_CreateSelHandler(tkwin, selection, target, proc, clientData, format)
Tk_DeleteSelHandler(tkwin, selection, target)
ARGUMENTS¶
- Tk_Window tkwin (in)
- Window for which proc will provide selection information.
- Atom selection (in)
- The name of the selection for which proc will provide selection
information.
- Atom target (in)
- Form in which proc can provide the selection (e.g. STRING or
FILE_NAME). Corresponds to type arguments in selection
commands.
- Tk_SelectionProc *proc (in)
- Procedure to invoke whenever the selection is owned by tkwin and
the selection contents are requested in the format given by
target.
- ClientData clientData (in)
- Arbitrary one-word value to pass to proc.
- Atom format (in)
- If the selection requestor is not in this process, format
determines the representation used to transmit the selection to its
requestor.
DESCRIPTION¶
Tk_CreateSelHandler arranges for a particular procedure (
proc) to
be called whenever
selection is owned by
tkwin and the selection
contents are requested in the form given by
target.
Target
should be one of the entries defined in the left column of Table 2 of the X
Inter-Client Communication Conventions Manual (ICCCM) or any other form in
which an application is willing to present the selection. The most common form
is STRING.
Proc should have arguments and result that match the type
Tk_SelectionProc:
typedef int Tk_SelectionProc(
ClientData clientData,
int offset,
char * buffer,
int maxBytes);
The
clientData parameter to
proc is a copy of the
clientData argument given to
Tk_CreateSelHandler. Typically,
clientData points to a data structure containing application-specific
information that is needed to retrieve the selection.
Offset specifies
an offset position into the selection,
buffer specifies a location at
which to copy information about the selection, and
maxBytes specifies
the amount of space available at
buffer.
Proc should place a
NULL-terminated string at
buffer containing
maxBytes or fewer
characters (not including the terminating NULL), and it should return a count
of the number of non-NULL characters stored at
buffer. If the selection
no longer exists (e.g. it once existed but the user deleted the range of
characters containing it), then
proc should return -1.
When transferring large selections, Tk will break them up into smaller pieces
(typically a few thousand bytes each) for more efficient transmission. It will
do this by calling
proc one or more times, using successively higher
values of
offset to retrieve successive portions of the selection. If
proc returns a count less than
maxBytes it means that the entire
remainder of the selection has been returned. If
proc's return value is
maxBytes it means there may be additional information in the selection,
so Tk must make another call to
proc to retrieve the next portion.
Proc always returns selection information in the form of a character
string. However, the ICCCM allows for information to be transmitted from the
selection owner to the selection requestor in any of several formats, such as
a string, an array of atoms, an array of integers, etc. The
format
argument to
Tk_CreateSelHandler indicates what format should be used to
transmit the selection to its requestor (see the middle column of Table 2 of
the ICCCM for examples). If
format is not STRING, then Tk will take the
value returned by
proc and divided it into fields separated by white
space. If
format is ATOM, then Tk will return the selection as an array
of atoms, with each field in
proc's result treated as the name of one
atom. For any other value of
format, Tk will return the selection as an
array of 32-bit values where each field of
proc's result is treated as
a number and translated to a 32-bit value. In any event, the
format
atom is returned to the selection requestor along with the contents of the
selection.
If
Tk_CreateSelHandler is called when there already exists a handler for
selection and
target on
tkwin, then the existing handler
is replaced with a new one.
Tk_DeleteSelHandler removes the handler given by
tkwin,
selection, and
target, if such a handler exists. If there is no
such handler then it has no effect.
KEYWORDS¶
format, handler, selection, target