Expose Qt mouse press callbacks
ober
cc28fd393b82625fcbe5af26866ff2461c5e6ccd
--- a/jerboa_qt_shim.c +++ b/jerboa_qt_shim.c @@ -166,6 +166,10 @@ void jerboa_qt_install_key_handler_consuming(void* w, long callback_id) { if (chez_void_callback) qt_widget_install_key_handler_consuming(w, chez_void_callback, callback_id); } +void jerboa_qt_install_mouse_handler(void* w, long callback_id) { + if (chez_void_callback) + qt_widget_install_mouse_handler(w, chez_void_callback, callback_id); +} /* Scroll Area — no signals, just direct pass-through */ --- a/src/jerboa-qt/ffi.ss +++ b/src/jerboa-qt/ffi.ss @@ -215,8 +215,11 @@ ffi-qt-splitter-set-collapsible ffi-qt-splitter-is-collapsible ffi-qt-splitter-set-orientation - ;; Keyboard Events + ;; Keyboard/Mouse Events ffi-qt-install-key-handler ffi-qt-install-key-handler-consuming + ffi-qt-install-mouse-handler + ffi-qt-last-mouse-x ffi-qt-last-mouse-y ffi-qt-last-mouse-button + ffi-qt-last-mouse-modifiers ffi-qt-last-mouse-widget ffi-qt-last-key-code ffi-qt-last-key-modifiers ffi-qt-last-key-text ffi-qt-last-key-autorepeat @@ -1561,11 +1564,17 @@ (define-qt-ffi ffi-qt-splitter-set-orientation "qt_splitter_set_orientation" (void* int) void) ;; ----------------------------------------------------------------------- - ;; Keyboard Events + ;; Keyboard/Mouse Events ;; ----------------------------------------------------------------------- (define-qt-ffi ffi-qt-install-key-handler "jerboa_qt_install_key_handler" (void* long) void) (define-qt-ffi ffi-qt-install-key-handler-consuming "jerboa_qt_install_key_handler_consuming" (void* long) void) + (define-qt-ffi ffi-qt-install-mouse-handler "jerboa_qt_install_mouse_handler" (void* long) void) + (define-qt-ffi ffi-qt-last-mouse-x "qt_last_mouse_x" () int) + (define-qt-ffi ffi-qt-last-mouse-y "qt_last_mouse_y" () int) + (define-qt-ffi ffi-qt-last-mouse-button "qt_last_mouse_button" () int) + (define-qt-ffi ffi-qt-last-mouse-modifiers "qt_last_mouse_modifiers" () int) + (define-qt-ffi ffi-qt-last-mouse-widget "qt_last_mouse_widget" () void*) (define-qt-ffi ffi-qt-last-key-code "qt_last_key_code" () int) (define-qt-ffi ffi-qt-last-key-modifiers "qt_last_key_modifiers" () int) (define-qt-ffi ffi-qt-last-key-text "qt_last_key_text" () string) --- a/src/jerboa-qt/qt.ss +++ b/src/jerboa-qt/qt.ss @@ -209,9 +209,11 @@ qt-splitter-set-collapsible! qt-splitter-collapsible? qt-splitter-set-orientation! - ;; Keyboard Events - qt-on-key-press! qt-on-key-press-consuming! + ;; Keyboard/Mouse Events + qt-on-key-press! qt-on-key-press-consuming! qt-on-mouse-press! qt-last-key-code qt-last-key-modifiers qt-last-key-text qt-last-key-autorepeat? + qt-last-mouse-x qt-last-mouse-y qt-last-mouse-button + qt-last-mouse-modifiers qt-last-mouse-widget ;; Pixmap qt-pixmap-load qt-pixmap-width qt-pixmap-height @@ -1687,7 +1689,7 @@ (ffi-qt-splitter-set-orientation s orientation)) ;; ----------------------------------------------------------------------- - ;; Keyboard Events + ;; Keyboard/Mouse Events ;; ----------------------------------------------------------------------- (def (qt-on-key-press! w handler) @@ -1700,10 +1702,20 @@ (ffi-qt-install-key-handler-consuming w id) (track-handler! w id))) + (def (qt-on-mouse-press! w handler) + (let ([id (register-void-handler! handler)]) + (ffi-qt-install-mouse-handler w id) + (track-handler! w id))) + (def (qt-last-key-code) (ffi-qt-last-key-code)) (def (qt-last-key-modifiers) (ffi-qt-last-key-modifiers)) (def (qt-last-key-text) (ffi-qt-last-key-text)) (def (qt-last-key-autorepeat?) (not (zero? (ffi-qt-last-key-autorepeat)))) + (def (qt-last-mouse-x) (ffi-qt-last-mouse-x)) + (def (qt-last-mouse-y) (ffi-qt-last-mouse-y)) + (def (qt-last-mouse-button) (ffi-qt-last-mouse-button)) + (def (qt-last-mouse-modifiers) (ffi-qt-last-mouse-modifiers)) + (def (qt-last-mouse-widget) (ffi-qt-last-mouse-widget)) ;; ----------------------------------------------------------------------- ;; Pixmap