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