|
42 | 42 | %event-mouse-button %last-common-attr %event-key |
43 | 43 | %event-motion %event-motion-out %event-active |
44 | 44 | %event-deactive %event-button-down %event-button-up) |
45 | | - (import (scheme) (gui graphic) (gui stb) (gui utils)) |
| 45 | + (import (scheme) (gui keys) (gui graphic) (gui stb) |
| 46 | + (gui utils)) |
46 | 47 | (define %draw 5) |
47 | 48 | (define %x 0) |
48 | 49 | (define %y 1) |
|
103 | 104 | (define default-cursor '()) |
104 | 105 | (define default-cursor-mode '()) |
105 | 106 | (define $last-hover '()) |
106 | | - (define default-key-map (make-hashtable equal-hash equal?)) |
107 | | - (define default-key-maps |
108 | | - (list '(ctl 2) '(shift 1) '(alt 4) '(super 8) '(caps-lock 16) |
109 | | - '(num-lock 32) '(a 65) '(b 66) '(c 67) '(d 68) '(v 86) |
110 | | - '(x 88) '(up 265) '(down 264) '(left 263) '(right 262))) |
111 | 107 | (define $widgets (list)) |
112 | 108 | (define (widget-init-cursor cursor) |
113 | 109 | (set! default-cursor cursor)) |
|
125 | 121 | (set-default-key-map (cadar l) (caar l)) |
126 | 122 | (set-default-key-map (caar l) (cadar l)) |
127 | 123 | (loop (cdr l)))))) |
128 | | - (define (set-default-key-map key val) |
129 | | - (hashtable-set! default-key-map key val)) |
130 | | - (define (get-default-key-map key) |
131 | | - (hashtable-ref default-key-map key '())) |
132 | 124 | (define (plus-child-y-offset widget offsety) |
133 | 125 | (let loop ([child (vector-ref widget %child)]) |
134 | 126 | (if (pair? child) |
|
259 | 251 | [(quote up) |
260 | 252 | (if (< cy gy) (set! ret (append ret (list (car child)))))] |
261 | 253 | [(quote down) |
262 | | - (if (> cy gy) |
263 | | - (set! ret (append ret (list (car child)))))]) |
| 254 | + (if (> cy gy) (set! ret (append ret (list (car child)))))] |
| 255 | + [(quote next) |
| 256 | + (if (> cx gx) |
| 257 | + (set! ret (append ret (list (car child)))) |
| 258 | + (if (> cy gy) |
| 259 | + (set! ret (append ret (list (car child))))))] |
| 260 | + [(quote prev) |
| 261 | + (if (< cx gx) |
| 262 | + (set! ret (append ret (list (car child)))) |
| 263 | + (if (< cy gy) |
| 264 | + (set! ret (append ret (list (car child))))))]) |
264 | 265 | (loop (cdr child))))) |
265 | 266 | (set! ret |
266 | 267 | (list-sort |
|
274 | 275 | ret)) |
275 | 276 | (define (widget-child-focus-event widget type data) |
276 | 277 | (if (= (vector-ref data 2) 1) |
277 | | - (let ([focus-child (widget-get-attrs widget 'focus-child)]) |
| 278 | + (let ([focus-child (widget-get-attrs widget 'focus-child)] |
| 279 | + [focus-key-map-fun (widget-get-attrs |
| 280 | + widget |
| 281 | + 'focus-key-map-fun |
| 282 | + get-default-key-map)]) |
278 | 283 | (if (> (length (widget-get-child widget)) 0) |
279 | 284 | (let ([ret '()]) |
280 | 285 | (if (null? focus-child) |
|
286 | 291 | (set! ret |
287 | 292 | (widget-find-child-focus |
288 | 293 | widget |
289 | | - (get-default-key-map (vector-ref data 0)) |
| 294 | + (focus-key-map-fun (vector-ref data 0)) |
290 | 295 | (list-ref gxy 0) |
291 | 296 | (list-ref gxy 1))))) |
292 | 297 | (if (> (length ret) 0) |
|
0 commit comments