Selección de ventana X


Las selecciones , los búferes de corte y arrastrar y soltar son los mecanismos utilizados en el sistema X Window para permitir que un usuario transfiera datos de una ventana a otra. Las selecciones y el búfer de corte se utilizan normalmente cuando un usuario selecciona texto u otros datos en una ventana y los pega en otra. Arrastrar y soltar se usa cuando un usuario selecciona algo en una ventana, luego hace clic en la selección y la arrastra a otra ventana.

Dado que las dos ventanas pueden ser manejadas por dos aplicaciones diferentes, estos mecanismos requieren dos clientes diferentes conectados con el mismo servidor X para intercambiar datos. El protocolo central del sistema X Window incluye algunas solicitudes y eventos que son específicos del intercambio de selección, pero la transferencia se realiza principalmente mediante el envío de eventos y las propiedades de la ventana, que no son específicas de la transferencia de selección.

Se pueden transferir diferentes tipos de datos: suele ser texto, pero también puede ser una imagen, un número, una lista de objetos, etc. A continuación, solo se considera el caso del texto.

Los métodos de transferencia de datos se pueden clasificar en activos y pasivos, dependiendo de si el cliente que maneja los datos seleccionados tiene que participar activamente en la transferencia a un cliente que los solicita:

Las selecciones y arrastrar y soltar son mecanismos activos: después de seleccionar algún texto en una ventana, el cliente que maneja la ventana debe admitir activamente un protocolo para transferir los datos a la aplicación que los solicita. Por el contrario, los búferes de corte son un mecanismo pasivo: después de seleccionar algún texto, se transfiere a un búfer de corte y permanece allí incluso si la aplicación que maneja la ventana finaliza y la ventana se destruye. El portapapeles X es un mecanismo pasivo según lo percibe el cliente que tiene la selección, pero requiere que el xclipboardcliente admita activamente cualquier transferencia de datos posterior.

Una ventaja de los mecanismos activos es que los datos se pueden convertir a un formato diferente antes de la transferencia. En particular, el cliente que recibe los datos puede solicitar que los datos de selección se conviertan en un formulario adecuado. Si el cliente emisor se niega a hacerlo, el receptor puede solicitar un formato diferente. Por ejemplo, un fragmento de texto que representa código HTML puede transferirse como texto a un solicitante que solo puede manejar texto, pero también puede transferirse como código HTML si el solicitante puede manejarlo. Tal negociación de formato no puede realizarse mediante mecanismos pasivos, en los que el cliente que tiene la selección (y le da semántica) transfiere la selección y no está involucrado en la transferencia posterior a un cliente que la solicita.