Lessico IT › Programmazione › XmDrawingArea

XmDrawingArea

Programmazione Svenska → Aggiornato: 2026-10-10

Il widget vuoto di Motif: una superficie senza aspetto proprio che si limita a segnalare quando va ridisegnata, è stata ridimensionata o ha ricevuto un clic, lasciando tutto il disegno al programma.

Motif offriva pulsanti, liste e campi di testo già rifiniti, ma nessun modo di mostrare un grafico, una mappa o uno schema personalizzato. XmDrawingArea è la risposta: un manager widget che non disegna nulla da sé e offre invece tre callback. XmNexposeCallback scatta quando il server X invia un evento Expose, XmNresizeCallback quando cambia la dimensione e XmNinputCallback alla pressione di tasti e pulsanti del mouse. Nel callback il programma ricava la finestra del widget con XtWindow, crea un graphics context e disegna con Xlib esattamente come un programma privo di toolkit. Essendo anche un manager, accetta figli a coordinate arbitrarie, il che ne faceva la cosa più vicina a una tela con pulsanti sopra che Motif avesse.

Le insidie sono quelle classiche di X. Una finestra scoperta in più rettangoli produce più eventi Expose, per cui ridisegnare tutto a ogni chiamata significa ridisegnare più volte per nulla, e il callback di ridimensionamento può arrivare prima che la finestra sia mappata, quando non c'è ancora nulla su cui disegnare. GLwMDrawingArea di SGI era lo stesso widget con un contesto OpenGL dietro, ed è così che gran parte dei CAD Unix degli anni Novanta portò la vista 3D in una finestra Motif.

← Torna al lessico