IT-lexicon › Programmeren › XmDrawingArea

XmDrawingArea

Programmeren Svenska → Bijgewerkt: 2026-10-10

De lege widget van Motif: een vlak zonder eigen uiterlijk dat alleen meldt wanneer het opnieuw getekend moet worden, van grootte is veranderd of is aangeklikt, en al het tekenwerk aan het programma overlaat.

Motif leverde knoppen, lijsten en tekstvelden met een kant-en-klaar uiterlijk, maar geen manier om een grafiek, kaart of eigen diagram te tonen. XmDrawingArea is het antwoord: een manager-widget die zelf niets tekent en in plaats daarvan drie callbacks aanbiedt. XmNexposeCallback wordt aangeroepen wanneer de X-server een Expose-event stuurt, XmNresizeCallback bij een groottewijziging en XmNinputCallback bij toetsaanslagen en muisknoppen. In de callback haalt het programma het venster van de widget op met XtWindow, maakt een graphics context aan en tekent met Xlib precies zoals een programma zonder toolkit. Omdat het ook een manager is, accepteert het kinderen op willekeurige coördinaten, waardoor het het dichtst bij een canvas met knoppen kwam dat Motif had.

De valkuilen zijn klassiek X. Een venster dat in meerdere rechthoeken weer zichtbaar wordt, geeft meerdere Expose-events, dus alles bij elke aanroep opnieuw tekenen betekent meerdere keren voor niets tekenen, en de resize-callback kan aankomen voordat het venster is gemapt, wanneer er nog niets is om in te tekenen. GLwMDrawingArea van SGI was dezelfde widget met een OpenGL-context erachter, en zo kreeg het meeste Unix-CAD uit de jaren negentig zijn 3D-weergave in een Motif-venster.

← Terug naar het lexicon