diff --git a/bugafriend/logging.scm b/bugafriend/logging.scm index a4f22e8..efab953 100644 --- a/bugafriend/logging.scm +++ b/bugafriend/logging.scm @@ -10,8 +10,8 @@ ;; Could steal more from fantasary in future... (define (log-to-curses win prompt-win msg) + (addstr win "\n") (addstr win msg) - (move win (+ 1 (getcury win)) 0) (refresh win) ;; move cursor back to the prompt (refresh prompt-win)) diff --git a/bugafriend/ui.scm b/bugafriend/ui.scm index 916c422..513eacf 100644 --- a/bugafriend/ui.scm +++ b/bugafriend/ui.scm @@ -75,7 +75,8 @@ prompt-str) #:x 3 #:y 1) (resize log-win (- height 2) width) - (resize prompt-win 3 width) + (resize prompt-win 2 width) + (mvwin prompt-win (- height 2) 0) (move prompt-win 1 (+ 3 (length prompt-input))) (refresh prompt-win)) @@ -168,6 +169,9 @@ (newwin (- height prompt-height) width 0 0)) (scrollok! log-win #t) + (idcok! log-win #t) + (setscrreg! log-win 0 (- height prompt-height)) + (move log-win (getmaxy log-win) 0) (with-vat user-vat (set! logger (spawn ^logger log-win prompt-win)) @@ -188,6 +192,9 @@ ;; Exit ((or (eqv? char #\esc) (eqv? char #\etx)) (halt-event-loop)) + ;; Resized window + ((eqv? char KEY_RESIZE) + (add-task! tasks refresh-prompt)) ;; Backspace ((or (eqv? char %BACKSPACE) (eqv? char #\delete)) (set! prompt-input (match prompt-input diff --git a/bugafriend/user.scm b/bugafriend/user.scm index a123a31..966bdda 100644 --- a/bugafriend/user.scm +++ b/bugafriend/user.scm @@ -13,10 +13,10 @@ (room room-data-room) (presence room-data-presence)) -(define (^user bcom logger name joined-room-data) +(define (^user bcom logger name room-data) (methods - [(room) (room-data-room joined-room-data)] - [(presence) (room-data-presence joined-room-data)] + [(room) (and room-data (room-data-room room-data))] + [(presence) (and room-data (room-data-presence room-data))] [(make-room) (let* ((my-presence (spawn ^room-presence logger name)) (room (spawn ^room my-presence)) @@ -25,15 +25,13 @@ [(join-room room) (let ((my-presence (spawn ^room-presence logger name))) - (when joined-room-data - (<-np (room-data-room joined-room-data) 'kick-user (room-data-presence joined-room-data))) + (when room-data + (<-np (room-data-room room-data) 'kick-user (room-data-presence room-data))) (<- room 'add-user my-presence) - - (define room-data (make-room-data room my-presence)) - (bcom (^user bcom logger name room-data)))] + (bcom (^user bcom logger name (make-room-data room my-presence))))] [(leave-room room) - (when (eq? room (room-data-room joined-room-data)) - (<-np room 'kick-user (room-data-presence joined-room-data)) + (when (eq? room (room-data-room room-data)) + (<-np room 'kick-user (room-data-presence room-data)) (bcom (^user bcom logger name #f)))]))