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 |
x eventloop ev { |
||
expose { |
expose { |
||
# Paint the window |
# Paint the window |