tray icon behaviour
This commit is contained in:
@@ -6,6 +6,8 @@
|
||||
(provide wv-menu
|
||||
wv-menu-item
|
||||
is-wv-menu?
|
||||
wv-menu?
|
||||
wv-menu-empty?
|
||||
wv-menu-set-callback!
|
||||
wv-menu-set-icon!
|
||||
wv-menu-set-title!
|
||||
@@ -17,8 +19,6 @@
|
||||
wv-menu-id
|
||||
)
|
||||
|
||||
|
||||
|
||||
(define-struct ww-menu-item*
|
||||
(id [title #:mutable] [icon-url #:mutable] [callback #:mutable] [submenu #:mutable] [separator #:mutable])
|
||||
#:transparent)
|
||||
@@ -38,6 +38,9 @@
|
||||
(define (wv-menu-id m)
|
||||
(ww-menu*-id m))
|
||||
|
||||
(define (wv-menu? mnu)
|
||||
(is-wv-menu? mnu))
|
||||
|
||||
(define (is-wv-menu? mnu)
|
||||
(if (ww-menu*? mnu)
|
||||
(if (list? (ww-menu*-items mnu))
|
||||
@@ -61,10 +64,18 @@
|
||||
(when (symbol? (car items))
|
||||
(set! menu-id (car items))
|
||||
(set! items (cdr items)))
|
||||
(if (null? items)
|
||||
(set! items '())
|
||||
(when (list? (car items))
|
||||
(set! items (car items)))
|
||||
(set! items (car items))))
|
||||
(make-ww-menu* menu-id items)))
|
||||
|
||||
|
||||
(define (wv-menu-empty? menu)
|
||||
(if (is-wv-menu? menu)
|
||||
(null? (ww-menu*-items menu))
|
||||
(error "wv-empty-menu?: argument is not a menu")))
|
||||
|
||||
(define (wv-menu-item id title
|
||||
#:icon-url [icon-url #f]
|
||||
#:callback [callback (lambda args #t)]
|
||||
|
||||
+10
-2
@@ -16,6 +16,7 @@
|
||||
racket/path
|
||||
"private/utils.rkt"
|
||||
"racket-webview-downloader.rkt"
|
||||
"menu.rkt"
|
||||
openssl/libssl
|
||||
)
|
||||
|
||||
@@ -886,8 +887,15 @@
|
||||
(define (rkt-webview-tray-show-message tray title message)
|
||||
(rkt_webview_tray_show_message (rkt-wv-win tray) title message))
|
||||
|
||||
(define (rkt-webview-tray-set-menu! tray menu-json)
|
||||
(rkt_webview_tray_set_menu (rkt-wv-win tray) menu-json))
|
||||
(define (rkt-webview-tray-set-menu! tray menu)
|
||||
(let ((json (if (wv-menu? menu)
|
||||
(if (wv-menu-empty? menu)
|
||||
#f
|
||||
(wv-menu->json menu))
|
||||
(error "rkt-webview-tray-set-menu! must be called with a wv-menu")
|
||||
))
|
||||
)
|
||||
(rkt_webview_tray_set_menu (rkt-wv-win tray) json)))
|
||||
|
||||
;; Furthermore: rkt-webview-close, rkt-webview-valid?, rkt-webview-show and rkt-webview-hide apply also to tray
|
||||
|
||||
|
||||
+1
-1
@@ -1086,7 +1086,7 @@
|
||||
|
||||
(define/contract (webview-tray-set-menu! tray menu)
|
||||
(-> wv-tray? is-wv-menu? symbol?)
|
||||
(rkt-webview-tray-set-menu! (wv-win-handle tray) (wv-menu->json menu)))
|
||||
(rkt-webview-tray-set-menu! (wv-win-handle tray) menu))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; delayed reactor
|
||||
|
||||
+2
-4
@@ -16,7 +16,7 @@
|
||||
(define wv #f)
|
||||
(define menu-callbacks (make-hash))
|
||||
|
||||
(define/private (event-handler wv evt)
|
||||
(define (event-handler wv evt)
|
||||
(let ((event (hash-ref evt 'event 'unknown-event)))
|
||||
(cond
|
||||
[(eq? event 'tray-activated)
|
||||
@@ -104,9 +104,7 @@
|
||||
|
||||
(super-new)
|
||||
|
||||
(set! wv (webview-tray-create icon (λ (wv evt)
|
||||
(send this event-handler wv evt))
|
||||
#:tooltip tooltip))
|
||||
(set! wv (webview-tray-create icon event-handler #:tooltip tooltip))
|
||||
|
||||
(unless (eq? menu #f)
|
||||
(send this set-menu! menu))))
|
||||
Reference in New Issue
Block a user