Index: main/widget/checkbox.lisp
===================================================================
--- main/widget/checkbox.lisp	(revision main,84)
+++ main/widget/checkbox.lisp	(revision main,87)
@@ -26,5 +26,5 @@
    (cue-window :initarg :cue-window)
    (data-window :initarg :data-window)
-   (active :type boolean :initform nil)))
+   (active :type boolean :initform nil :accessor active)))
 
 
@@ -37,5 +37,5 @@
     (setf (background data-window)
           (if active active-background inactive-background))
-    (add-clipped-string data-window 0 0 (if (checked cb) "X" " "))
+    (add-clipped-string data-window 0 0 (if (checked cb) "X" "-"))
     (setf (cursor-position data-window) '(0 0))
     (refresh cue-window)))
@@ -46,4 +46,7 @@
     (when listener
       (funcall listener))))
+
+(defmethod (setf active) :after (flag (cb checkbox))
+  (draw cb))
 
 
@@ -68,7 +71,7 @@
 (defmethod activate ((cb checkbox) &key (key-callback 'nothing)
                      &allow-other-keys)
-  (with-slots (data-window active) cb
-    (with-accessors ((checked checked)) cb
-      (set-cursor-visible t)
+  (with-slots (data-window) cb
+    (with-accessors ((active active) (checked checked)) cb
+      #|(set-cursor-visible t)|#
       (setf active t)
       (unwind-protect
@@ -78,4 +81,8 @@
                 (let ((key (read-key data-window)))
                   (case key
+                    ((#\x #\X)
+                     (setf checked t))
+                    (#\-
+                     (setf checked nil))
                     (#\Space
                      (setf checked (not checked)))
@@ -85,3 +92,3 @@
                          (return r))))))))
         (setf active nil)
-        (set-cursor-visible nil)))))
+        #|(set-cursor-visible nil)|#))))
