Volver al índice ; Próximo: Dibujando en X ; Previo: Introducción

Ventanas

Jerarquía de ventanas

Las ventanas de cada pantalla están organizadas en forma de árbol con una ventana raíz que se crea al arrancar el servidor y ocupa toda la pantalla.

La parte visible de una ventana es sólo la que está inscrita en la ventana "padre". El gestor de ventanas maneja sólo las ventanas hijas de la raíz.

El orden de apilamiento determina qué ventana queda encima entre ventanas "hermanas" que se solapan. Las ventanas "hijas" permanecen siempre delante de su padre.


Ejemplo: Mostrando la jerarquía de ventanas


Visibilidad

Una ventana creada es visible cuando:

  1. Está proyectada (XMapWindow).
  2. Sus ventanas antecesoras están proyectadas.
  3. No está oculta por otras ventanas.

Manteniendo el contenido de las ventanas

El servidor no guarda el contenido de las partes no visibles de las ventanas (excepto si incluye Backing store). Cuando se hacen visibles se generan eventos Expose. La aplicación deberá elegir entre:

Atributos de las ventanas

Xlib proporciona dos funciones para crear ventanas: XCreateSimpleWindow y XCreateWindow. La primera permite crear una ventana especificando sólo su geometría y dos atributos configurables (color de fondo y del borde). El resto de los atributos se heredan de la ventana padre. La segunda permite especificar todos los atributos heredándose igualmente los no especificados.

Los atributos de una ventana se pueden dividir en tres grupos:

Cambiando los atributos de una ventana existente

Los atributos configurables de una ventana ya existente pueden ser modificados usando la primitiva XChangeWindowAttributes. Adicionalmente, existen primitivas para cambiar específicamente algún atributo (por ejemplo, el cursor se puede cambiar usando XDefineCursor y el color de fondo de la ventana mediante XSetWindowBackground).

Asimismo, se puede modificar la geometría de una ventana existente usando la primitiva XConfigureWindow que permite cambiar cualquier atributo geométrico. Como en el caso anterior, existen también primitivas para cambiar algún atributo geométrico específico (por ejemplo, XMoveWindow para cambiar la posición o XLowerWindow para poner a una ventana "debajo de sus hermanas").


Ejemplo: Creando una ventana con XCreateSimpleWindow
(Ver nota sobre la compilación de aplicaciones que usan Xlib)


Ejemplo: Creando una ventana con XCreateWindow


Ejemplo: Cambiando atributos de una ventana existente


Ejemplo: Creando una jerarquía de ventanas y cambiando geometría


Volver al índice ; Próximo: Dibujando en X ; Previo: Introducción