Window creation/X11: Difference between revisions

Content added Content deleted
(→‎{{header|Tcl}}: Rewrite to be clearer about how different levels of interface can exist)
(→‎{{header|Tcl}}: Make the event handling less fundamentally sucky, though still vastly incomplete)
Line 247: Line 247:
XNextEvent(d, &e);
XNextEvent(d, &e);
switch (e.type) {
switch (e.type) {
case Expose: return "expose";
case Expose: return "type expose";
case KeyPress: return "key";
case KeyPress: return "type key";
/* etc. This is a cheap hack version. */
/* etc. This is a cheap hack version. */
default: return "?";
default: return "type ?";
}
}
}
}
Line 271: Line 271:
set w [XCreateSimpleWindow 10 10 100 100 1]
set w [XCreateSimpleWindow 10 10 100 100 1]
XMapWindow $w
XMapWindow $w
while {[XNextEvent] == "expose"} {
while {[lindex [XNextEvent] 0] == "expose"} {
XFillRectangle $w 20 20 10 10
XFillRectangle $w 20 20 10 10
XDrawString $w 10 50 "Hello, World!"
XDrawString $w 10 50 "Hello, World!"
Line 303: Line 303:
while 1 {
while 1 {
set v [XNextEvent]
set v [XNextEvent]
uplevel 1 [list switch $v $handlers]
uplevel 1 [list switch [dict get $v type] $handlers]
}
}
}
}
Line 340: Line 340:
$w map
$w map


x eventloop e {
x eventloop ev {
expose {
expose {
# Paint the window
# Paint the window