gtk: misc fixes

This commit is contained in:
Matthew Flatt 2010-10-15 14:24:48 -06:00
parent 27f18efa88
commit 16b34c236a
10 changed files with 52 additions and 28 deletions

View File

@ -1465,7 +1465,7 @@ path/s is either such a string or a list of them.
"collects/tests/gracket/gui.rktl" drdr:command-line (gracket "-f" *) "collects/tests/gracket/gui.rktl" drdr:command-line (gracket "-f" *)
"collects/tests/gracket/item.rkt" drdr:command-line (mzc *) "collects/tests/gracket/item.rkt" drdr:command-line (mzc *)
"collects/tests/gracket/loadtest.rktl" drdr:command-line (gracket "-f" *) "collects/tests/gracket/loadtest.rktl" drdr:command-line (gracket "-f" *)
"collects/tests/gracket/mem.rktl" drdr:command-line #f "collects/tests/gracket/mem.rkt" drdr:command-line #f
"collects/tests/gracket/paramz.rktl" drdr:command-line (gracket "-f" *) "collects/tests/gracket/paramz.rktl" drdr:command-line (gracket "-f" *)
"collects/tests/gracket/png.rktl" drdr:command-line #f "collects/tests/gracket/png.rktl" drdr:command-line #f
"collects/tests/gracket/random.rktl" drdr:command-line #f "collects/tests/gracket/random.rktl" drdr:command-line #f

View File

@ -190,6 +190,7 @@
-> _pointer)) -> _pointer))
(define (shutdown-eventspace! e ignored) (define (shutdown-eventspace! e ignored)
;; atomic mode
(unless (eventspace-shutdown? e) (unless (eventspace-shutdown? e)
(set-eventspace-shutdown?! e #t) (set-eventspace-shutdown?! e #t)
(semaphore-post (eventspace-done-sema e)) (semaphore-post (eventspace-done-sema e))

View File

@ -13,12 +13,14 @@
"window.rkt" "window.rkt"
"client-window.rkt" "client-window.rkt"
"widget.rkt" "widget.rkt"
"procs.rkt"
"cursor.rkt" "cursor.rkt"
"pixbuf.rkt" "pixbuf.rkt"
"../common/queue.rkt") "../common/queue.rkt")
(provide frame%) (provide frame%
display-origin
display-size
location->window)
;; ---------------------------------------- ;; ----------------------------------------
@ -121,6 +123,9 @@
(for/fold ([l #f]) ([i (in-list icons)]) (for/fold ([l #f]) ([i (in-list icons)])
(g_list_insert l i -1)))))) (g_list_insert l i -1))))))
;; used for location->window
(define all-frames (make-hasheq))
(define frame% (define frame%
(class (client-size-mixin window%) (class (client-size-mixin window%)
(init parent (init parent
@ -296,10 +301,15 @@
(void)) (void))
(define/override (direct-show on?) (define/override (direct-show on?)
;; atomic mode
(if on?
(hash-set! all-frames this #t)
(hash-remove! all-frames this))
(super direct-show on?) (super direct-show on?)
(register-frame-shown this on?)) (register-frame-shown this on?))
(define/public (destroy) (define/public (destroy)
;; atomic mode
(direct-show #f)) (direct-show #f))
(define/override (on-client-size w h) (define/override (on-client-size w h)
@ -366,7 +376,8 @@
(define/public (on-activate on?) (void)) (define/public (on-activate on?) (void))
(def/public-unimplemented designate-root-frame) (define/public (designate-root-frame) (void))
(def/public-unimplemented system-menu) (def/public-unimplemented system-menu)
(define/public (set-modified mod?) (define/public (set-modified mod?)
@ -421,3 +432,23 @@
(string-append s "*") (string-append s "*")
s))))) s)))))
;; ----------------------------------------
(define-gdk gdk_screen_get_width (_fun _GdkScreen -> _int))
(define-gdk gdk_screen_get_height (_fun _GdkScreen -> _int))
(define (display-origin x y all?) (set-box! x 0) (set-box! y 0))
(define (display-size w h all?)
(let ([s (gdk_screen_get_default)])
(set-box! w (gdk_screen_get_width s))
(set-box! h (gdk_screen_get_height s))))
(define (location->window x y)
(for/or ([f (in-hash-keys all-frames)])
(let ([fx (send f get-x)]
[fw (send f get-width)])
(and (<= fx x (+ fx fw))
(let ([fy (send f get-y)]
[fh (send f get-height)])
(<= fy y (+ fy fh)))
f))))

View File

@ -11,6 +11,7 @@
"style.rkt" "style.rkt"
"widget.rkt" "widget.rkt"
"window.rkt" "window.rkt"
"frame.rkt"
"dc.rkt" "dc.rkt"
"printer-dc.rkt" "printer-dc.rkt"
"gl-context.rkt" "gl-context.rkt"
@ -60,7 +61,6 @@
check-for-break) check-for-break)
(define-unimplemented find-graphical-system-path) (define-unimplemented find-graphical-system-path)
(define-unimplemented location->window)
(define-unimplemented send-event) (define-unimplemented send-event)
(define-unimplemented cancel-quit) (define-unimplemented cancel-quit)
(define-unimplemented write-resource) (define-unimplemented write-resource)
@ -85,14 +85,6 @@
(define (get-control-font-size) 10) ;; FIXME (define (get-control-font-size) 10) ;; FIXME
(define (get-control-font-size-in-pixels?) #f) ;; FIXME (define (get-control-font-size-in-pixels?) #f) ;; FIXME
(define-gdk gdk_screen_get_width (_fun _GdkScreen -> _int))
(define-gdk gdk_screen_get_height (_fun _GdkScreen -> _int))
(define (display-origin x y all?) (set-box! x 0) (set-box! y 0))
(define (display-size w h all?)
(let ([s (gdk_screen_get_default)])
(set-box! w (gdk_screen_get_width s))
(set-box! h (gdk_screen_get_height s))))
(define (get-display-depth) 32) (define (get-display-depth) 32)
(define-gdk gdk_display_beep (_fun _GdkDisplay -> _void)) (define-gdk gdk_display_beep (_fun _GdkDisplay -> _void))

View File

@ -104,6 +104,7 @@
(define-cstruct _GdkEventCrossing ([type _GdkEventType] (define-cstruct _GdkEventCrossing ([type _GdkEventType]
[window _GdkWindow] [window _GdkWindow]
[send_event _byte] [send_event _byte]
[subwindow _GdkWindow]
[time _uint32] [time _uint32]
[x _double] [x _double]
[y _double] [y _double]

View File

@ -478,6 +478,7 @@
(define shown? #f) (define shown? #f)
(define/public (direct-show on?) (define/public (direct-show on?)
;; atomic mode
(if on? (if on?
(gtk_widget_show gtk) (gtk_widget_show gtk)
(gtk_widget_hide gtk)) (gtk_widget_hide gtk))

View File

@ -237,8 +237,8 @@
(define/override (get-y) (define/override (get-y)
(RECT-top (GetWindowRect hwnd))) (RECT-top (GetWindowRect hwnd)))
(def/public-unimplemented on-toolbar-click) (define/public (on-toolbar-click) (void))
(def/public-unimplemented on-menu-click) (define/public (on-menu-click) (void))
(define/public (on-menu-command i) (void)) (define/public (on-menu-command i) (void))
@ -348,7 +348,7 @@
(define/override (get-top-frame) this) (define/override (get-top-frame) this)
(def/public-unimplemented designate-root-frame) (define/public (designate-root-frame) (void))
(def/public-unimplemented system-menu) (def/public-unimplemented system-menu)
(define modified? #f) (define modified? #f)

View File

@ -327,7 +327,7 @@
hwnd hwnd
(lambda (thunk) (queue-window-event this thunk))))) (lambda (thunk) (queue-window-event this thunk)))))
(def/public-unimplemented center) (define/public (center a b) (void))
(define/public (get-parent) parent) (define/public (get-parent) parent)
(define/public (is-frame?) #f) (define/public (is-frame?) #f)

View File

@ -148,7 +148,7 @@ Under Mac OS X, if a control-key press is combined with a mouse button
Returns the type of the event; see @scheme[mouse-event%] for Returns the type of the event; see @scheme[mouse-event%] for
information about each event type. See also @method[mouse-event% information about each event type. See also @method[mouse-event%
set-event-type] . set-event-type].
} }
@ -260,7 +260,7 @@ Under Mac OS X, if a control-key press is combined with a mouse button
void?]{ void?]{
Sets the type of the event; see @scheme[mouse-event%] for information Sets the type of the event; see @scheme[mouse-event%] for information
about each event type. See also @method[mouse-event% get-event-type] . about each event type. See also @method[mouse-event% get-event-type].
} }

View File

@ -1,5 +1,4 @@
#lang racket/gui
; run with gracket -u -- -f mem.rktl
(require mzlib/class100) (require mzlib/class100)
@ -28,13 +27,12 @@
allocated)) allocated))
v) v)
(when subwindows? (define sub-collect-frame
(namespace-set-variable-value! (and subwindows?
'sub-collect-frame (make-object frame% "sub-collect")))
(make-object frame% "sub-collect")) (define sub-collect-panel
(namespace-set-variable-value! (and subwindows?
'sub-collect-panel (make-object panel% sub-collect-frame)))
(make-object panel% sub-collect-frame)))
(define permanent-ready? #f) (define permanent-ready? #f)
(define mb-lock (make-semaphore 1)) (define mb-lock (make-semaphore 1))