diff options
| author | Mathieu Othacehe <othacehe@gnu.org> | 2021-01-12 16:26:07 +0100 |
|---|---|---|
| committer | Mathieu Othacehe <othacehe@gnu.org> | 2021-01-12 16:40:27 +0100 |
| commit | bb4e67415eb6d9871ee1b50b0a01e08c19f4809a (patch) | |
| tree | 11b6f0c7386119f69f387ed090c9d13e90b9c3c4 | |
| parent | 55157c90711662c24c7627189020e3a5aeafa2ba (diff) | |
installer: Fix crash in parameters menu.
Fixes: <https://issues.guix.gnu.org/45378>.
* gnu/installer/newt/keymap.scm (run-layout-page): Return false when
"Continue" button is pressed.
(run-keymap-page): Do not try to compute variants if layout is false. Also do
not try to format the result if layout is false.
* gnu/installer.scm (compute-keymap-step): Do not apply keymap if
"run-keymap-page" returns false.
| -rw-r--r-- | gnu/installer.scm | 2 | ||||
| -rw-r--r-- | gnu/installer/newt/keymap.scm | 21 |
2 files changed, 14 insertions, 9 deletions
diff --git a/gnu/installer.scm b/gnu/installer.scm index 7863edbb67d..d2be4b34f91 100644 --- a/gnu/installer.scm +++ b/gnu/installer.scm | |||
| @@ -187,7 +187,7 @@ selected keymap." | |||
| 187 | (lambda (models layouts) | 187 | (lambda (models layouts) |
| 188 | ((installer-keymap-page current-installer) | 188 | ((installer-keymap-page current-installer) |
| 189 | layouts '#$context))))) | 189 | layouts '#$context))))) |
| 190 | (#$apply-keymap result) | 190 | (and result (#$apply-keymap result)) |
| 191 | result))) | 191 | result))) |
| 192 | 192 | ||
| 193 | (define (installer-steps) | 193 | (define (installer-steps) |
diff --git a/gnu/installer/newt/keymap.scm b/gnu/installer/newt/keymap.scm index 1b3af2f158b..92f7f46f34d 100644 --- a/gnu/installer/newt/keymap.scm +++ b/gnu/installer/newt/keymap.scm | |||
| @@ -56,7 +56,7 @@ different layout at any time from the parameters menu."))) | |||
| 56 | (else (G_ "Exit"))) | 56 | (else (G_ "Exit"))) |
| 57 | #:button-callback-procedure | 57 | #:button-callback-procedure |
| 58 | (case context | 58 | (case context |
| 59 | ((param) (const #t)) | 59 | ((param) (const #f)) |
| 60 | (else | 60 | (else |
| 61 | (lambda _ | 61 | (lambda _ |
| 62 | (raise | 62 | (raise |
| @@ -183,7 +183,9 @@ options." | |||
| 183 | (compute | 183 | (compute |
| 184 | (lambda (result _) | 184 | (lambda (result _) |
| 185 | (let* ((layout (result-step result 'layout)) | 185 | (let* ((layout (result-step result 'layout)) |
| 186 | (variants (x11-keymap-layout-variants layout))) | 186 | (variants (if layout |
| 187 | (x11-keymap-layout-variants layout) | ||
| 188 | '()))) | ||
| 187 | ;; Return #f if the layout does not have any variant. | 189 | ;; Return #f if the layout does not have any variant. |
| 188 | (and (not (null? variants)) | 190 | (and (not (null? variants)) |
| 189 | (run-variant-page | 191 | (run-variant-page |
| @@ -196,16 +198,19 @@ options." | |||
| 196 | (gettext (x11-keymap-layout-description layout) | 198 | (gettext (x11-keymap-layout-description layout) |
| 197 | "xkeyboard-config"))))))))))) | 199 | "xkeyboard-config"))))))))))) |
| 198 | 200 | ||
| 199 | (define (format-result result) | 201 | (define (format-result layout variant) |
| 200 | (let ((layout (x11-keymap-layout-name | 202 | (let ((layout (x11-keymap-layout-name layout)) |
| 201 | (result-step result 'layout))) | 203 | (variant (and=> variant |
| 202 | (variant (and=> (result-step result 'variant) | ||
| 203 | (lambda (variant) | 204 | (lambda (variant) |
| 204 | (gettext (x11-keymap-variant-name variant) | 205 | (gettext (x11-keymap-variant-name variant) |
| 205 | "xkeyboard-config"))))) | 206 | "xkeyboard-config"))))) |
| 206 | (toggleable-latin-layout layout variant))) | 207 | (toggleable-latin-layout layout variant))) |
| 207 | (format-result | 208 | |
| 208 | (run-installer-steps #:steps keymap-steps))) | 209 | (let* ((result (run-installer-steps #:steps keymap-steps)) |
| 210 | (layout (result-step result 'layout)) | ||
| 211 | (variant (result-step result 'variant))) | ||
| 212 | (and layout | ||
| 213 | (format-result layout variant)))) | ||
| 209 | 214 | ||
| 210 | (define (keyboard-layout->configuration keymap) | 215 | (define (keyboard-layout->configuration keymap) |
| 211 | "Return the operating system configuration snippet to install KEYMAP." | 216 | "Return the operating system configuration snippet to install KEYMAP." |
