1
0
Fork 0

- added vertical top padding for 'line-oriented-window'.

This means  also that the gemini  links window will render  the link
  name on top of the link uri.
This commit is contained in:
cage 2020-08-28 17:52:00 +02:00
parent 0bb4406be7
commit 940525a6fe
2 changed files with 49 additions and 26 deletions

View File

@ -244,22 +244,39 @@ this exact quantity wold go beyond the length or fows or zero."
:initform :red :initform :red
:initarg :selected-line-fg :initarg :selected-line-fg
:accessor selected-line-fg :accessor selected-line-fg
:documentation "The foreground color for a selected line")) :documentation "The foreground color for a selected line")
(line
:initform :red
:initarg :selected-line-fg
:accessor selected-line-fg
:documentation "The foreground color for a selected line")
(top-horizontal-padding
:initform 0
:initarg :top-horizontal-padding
:accessor top-horizontal-padding
:documentation "The vertical padding (from top) of each single row"))
(:documentation "A window that displays a navigable list of objects")) (:documentation "A window that displays a navigable list of objects"))
(defmethod draw :after ((object simple-line-navigation-window)) (defmethod draw :after ((object simple-line-navigation-window))
(with-accessors ((uses-border-p uses-border-p) (with-accessors ((uses-border-p uses-border-p)
(single-row-height single-row-height) (single-row-height single-row-height)
(top-row-padding top-row-padding)) object (top-row-padding top-row-padding)
(top-horizontal-padding top-horizontal-padding)) object
(let ((max-line-size (if uses-border-p (let ((max-line-size (if uses-border-p
(win-width-no-border object) (win-width-no-border object)
(win-width object)))) (win-width object))))
(let ((rows (renderizable-rows-data object)) (let ((rows (renderizable-rows-data object))
(x (if (uses-border-p object) (x (if (uses-border-p object)
1 1
0))) 0))
(y-start (if (uses-border-p object)
1
0)))
(loop (loop
for y from (1+ top-row-padding) by single-row-height for y from (+ y-start
top-horizontal-padding
top-row-padding)
by single-row-height
for ct from 0 for ct from 0
for row in rows do for row in rows do
(if (selectedp row) (if (selectedp row)

View File

@ -114,33 +114,39 @@
(defmethod draw :before ((object open-gemini-document-link-window)) (defmethod draw :before ((object open-gemini-document-link-window))
(with-accessors ((links links) (with-accessors ((links links)
(uses-border-p uses-border-p)
(single-row-height single-row-height) (single-row-height single-row-height)
(top-row-padding top-row-padding) (top-row-padding top-row-padding)
(new-messages-mark new-messages-mark) (new-messages-mark new-messages-mark)
(top-rows-slice top-rows-slice) (top-rows-slice top-rows-slice)
(bottom-rows-slice bottom-rows-slice)) object (bottom-rows-slice bottom-rows-slice)) object
(renderizable-rows-data object) ; set top and bottom slice (let ((y-start (if uses-border-p
(win-clear object) 1
(with-croatoan-window (croatoan-window object) 0)))
(loop (renderizable-rows-data object) ; set top and bottom slice
for link in (safe-subseq links top-rows-slice bottom-rows-slice) (win-clear object)
for y from (+ 2 top-row-padding) by single-row-height do (with-croatoan-window (croatoan-window object)
(print-text object (loop
(gemini-parser:name link) for link in (safe-subseq links top-rows-slice bottom-rows-slice)
1 y for y from (+ y-start top-row-padding) by single-row-height do
:bgcolor (bgcolor croatoan-window) (print-text object
:fgcolor (fgcolor croatoan-window)))))) (gemini-parser:name link)
1 y
:bgcolor (bgcolor croatoan-window)
:fgcolor (fgcolor croatoan-window)))))))
(defun init-gemini-links (links) (defun init-gemini-links (links)
(let* ((low-level-window (make-croatoan-window :enable-function-keys t))) (let* ((low-level-window (make-croatoan-window :enable-function-keys t)))
(setf *open-message-link-window* (setf *open-message-link-window*
(make-instance 'open-gemini-document-link-window (make-instance 'open-gemini-document-link-window
:title (_ "Links") :top-row-padding 0
:links links :top-horizontal-padding 1
:single-row-height 2 :title (_ "Links")
:uses-border-p t :links links
:keybindings keybindings:*open-message-link-keymap* :single-row-height 2
:croatoan-window low-level-window)) :uses-border-p t
:keybindings keybindings:*open-message-link-keymap*
:croatoan-window low-level-window))
(refresh-config *open-message-link-window*) (refresh-config *open-message-link-window*)
(resync-rows-db *open-message-link-window* :redraw nil) (resync-rows-db *open-message-link-window* :redraw nil)
(when (rows *open-message-link-window*) (when (rows *open-message-link-window*)