guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/01: installer: Allow changing the current form field by mouse click.


From: Danny Milosavljevic
Subject: 01/01: installer: Allow changing the current form field by mouse click.
Date: Fri, 7 Jul 2017 15:44:02 -0400 (EDT)

dannym pushed a commit to branch wip-installer-2
in repository guix.

commit 06e075d6d7eba0cac562cf7cb365c82a008f8b0a
Author: Danny Milosavljevic <address@hidden>
Date:   Fri Jul 7 21:42:32 2017 +0200

    installer: Allow changing the current form field by mouse click.
    
    * gurses/form.scm (std-form-mouse-handler): New variable.  Export it.
    * gnu/system/installer/page.scm (page-default-mouse-handler): Use it here.
---
 gnu/system/installer/page.scm |  3 +++
 gurses/form.scm               | 18 ++++++++++++++++++
 2 files changed, 21 insertions(+)

diff --git a/gnu/system/installer/page.scm b/gnu/system/installer/page.scm
index 879c924..478f114 100644
--- a/gnu/system/installer/page.scm
+++ b/gnu/system/installer/page.scm
@@ -63,6 +63,7 @@
 (define (page-default-mouse-handler page device-id x y z button-state)
   (let* ((menu (page-datum page 'menu))
          (buttons (page-datum page 'navigation))
+         (form (page-datum page 'form))
          (status (or (let ((status (and menu (std-menu-mouse-handler menu 
device-id x y z button-state))))
                        (match status
                         (('menu-item-activated x)
@@ -77,6 +78,8 @@
                          ;(if menu
                          ;  (menu-set-active! menu #f))
                          x))))))
+    (if form
+      (std-form-mouse-handler form device-id x y z button-state))
     (if status
         (begin
           (page-activate-item page status)
diff --git a/gurses/form.scm b/gurses/form.scm
index 13642ff..37d597b 100644
--- a/gurses/form.scm
+++ b/gurses/form.scm
@@ -31,6 +31,7 @@
   #:export (form-update-cursor)
   #:export (form-set-current-field)
   #:export (get-current-field)
+  #:export (std-form-mouse-handler)
 
   #:use-module (ncurses curses)
   #:use-module (ncurses panel)
@@ -376,3 +377,20 @@ Set the field value to the newly selected value."
 
 (define (get-current-field form)
   (array-ref (form-items form) (form-current-item form)))
+
+(define (std-form-mouse-handler form device-id g-x g-y z button-state)
+  (if (logtest BUTTON1_CLICKED button-state)
+    (let* ((win (form-window form))
+           (items (form-items form))
+           (item-count (array-length items)))
+      (match (mouse-trafo win g-y g-x #f)
+       ((y x)
+        (if (and (>= y 0) (< y item-count))
+            (begin
+              (form-set-current-field form y)
+              (form-update-cursor form)
+              ;(refresh (form-window form))
+              (list 'form-item-selected y))))
+        (_ #f))
+      'handled)
+    #f))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]