Commit 6311ce4
authored
fix(layout): persist Browser and Comments panel toggles (#1940)
* fix(layout): persist Browser and Comments panel toggles
The Settings -> Layout toggles for the Browser and Comments right panels
acted only on the live right-panel registry. Nothing was written to
`desktopSettings.layout`, and both registration hooks unconditionally
opened their panel on mount, so every launch reopened a panel the user
had turned off. Startup mode made no difference: reopening the last
project restores layers and the camera, never these panels.
Both panels now have a persisted `layout.browserPanelVisible` /
`layout.commentsPanelVisible` setting (defaulting to on, so settings
saved before the keys existed keep today's behavior), the registration
hooks seed from it, and the Settings toggles write it. The toggles apply
live rather than on Save, so they patch the dialog draft as well; the
draft is snapshotted when the dialog opens and Save writes it wholesale,
which would otherwise revert the toggle the user just made. Reset moves
the panels too, since those two rows render the live registry state.
Fixes #1935
* fix(layout): give the panel rows the dialog's draft semantics
Review follow-up. The Browser/Comments rows in the Layout dialog applied
live while the other four rows waited for Save, which left two seams:
Reset followed by Cancel stuck those two flags while reverting the rest,
and the rows rendered live registry state that Save did not write, so
closing a panel from its own header showed an unchecked box the dialog
then saved back as visible.
Both rows are now draft-backed like their neighbours. The draft seeds
them from the live registry when the dialog opens, so a panel closed
from its header still shows unchecked and Save persists exactly what was
displayed; Reset and Cancel behave as they do for every other row. Save
applies the committed values to the registry, skipping panels already in
the requested state so saving an untouched dialog cannot collapse an
expanded panel. The Settings dropdown keeps applying on the spot and
persisting in one step, since it has no Save to wait for.
* fix(layout): mirror panel visibility instead of persisting it on Save
Review follow-up. Seeding the dialog draft from the live registry fixed
the checkbox lying about what Save would write, but it moved the seam
rather than closing it: a panel closed from its own header stayed a
session-only state that an unrelated Save then converted into a
permanent preference.
Both directions now go through one place. `registerPersistedRightPanel`
seeds the panel from its setting at registration and subscribes to the
registry afterwards, writing every later visibility change back. For
these panels closing is not a transient collapse, it removes the rail
entry entirely and only Settings can restore it, so it is a preference
however it was reached. With the setting and the registry always in
step, the checkbox cannot disagree with either, and there is no
session-only state left for a Save to silently promote.
Two registry events are deliberately not mirrored: the emit from
registration (the panel is legitimately not visible yet, so the
subscription is attached after the seed) and the emit from unregistering
on unmount, which would otherwise persist false on every teardown. Being
displaced by another panel is not a close, so it writes nothing.
The dialog rows keep the draft semantics of the previous commit, and
Save re-applies them to the registry, skipping a panel already in the
requested state. `tests/persisted-right-panel.test.ts` covers the seed,
the header close, the collapse and displacement non-events, and the
teardown guard; the module imports the registry subpath so it stays a
leaf the suite can load without the plugin barrel.1 parent 5f77287 commit 6311ce4
8 files changed
Lines changed: 366 additions & 62 deletions
File tree
- apps/geolibre-desktop/src
- components/layout
- hooks
- lib
- packages/plugins
- tests
Lines changed: 27 additions & 29 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
14 | | - | |
15 | 14 | | |
16 | 15 | | |
17 | 16 | | |
| |||
91 | 90 | | |
92 | 91 | | |
93 | 92 | | |
| 93 | + | |
94 | 94 | | |
95 | 95 | | |
96 | 96 | | |
| |||
417 | 417 | | |
418 | 418 | | |
419 | 419 | | |
420 | | - | |
421 | | - | |
422 | | - | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
423 | 426 | | |
424 | 427 | | |
425 | 428 | | |
426 | | - | |
427 | | - | |
428 | | - | |
429 | | - | |
430 | | - | |
431 | | - | |
432 | | - | |
433 | | - | |
434 | | - | |
435 | | - | |
436 | | - | |
437 | | - | |
438 | | - | |
439 | | - | |
440 | | - | |
441 | | - | |
442 | | - | |
443 | | - | |
444 | | - | |
445 | | - | |
446 | | - | |
| 429 | + | |
| 430 | + | |
447 | 431 | | |
448 | 432 | | |
449 | 433 | | |
| |||
1205 | 1189 | | |
1206 | 1190 | | |
1207 | 1191 | | |
| 1192 | + | |
| 1193 | + | |
| 1194 | + | |
| 1195 | + | |
| 1196 | + | |
| 1197 | + | |
1208 | 1198 | | |
1209 | 1199 | | |
1210 | 1200 | | |
| |||
1827 | 1817 | | |
1828 | 1818 | | |
1829 | 1819 | | |
1830 | | - | |
1831 | | - | |
| 1820 | + | |
| 1821 | + | |
| 1822 | + | |
| 1823 | + | |
| 1824 | + | |
| 1825 | + | |
1832 | 1826 | | |
1833 | 1827 | | |
1834 | 1828 | | |
| |||
1837 | 1831 | | |
1838 | 1832 | | |
1839 | 1833 | | |
1840 | | - | |
1841 | | - | |
| 1834 | + | |
| 1835 | + | |
| 1836 | + | |
| 1837 | + | |
| 1838 | + | |
| 1839 | + | |
1842 | 1840 | | |
1843 | 1841 | | |
1844 | 1842 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
110 | 110 | | |
111 | 111 | | |
112 | 112 | | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
113 | 124 | | |
114 | 125 | | |
115 | 126 | | |
| |||
157 | 168 | | |
158 | 169 | | |
159 | 170 | | |
| 171 | + | |
| 172 | + | |
160 | 173 | | |
161 | 174 | | |
162 | 175 | | |
| |||
410 | 423 | | |
411 | 424 | | |
412 | 425 | | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
413 | 434 | | |
414 | 435 | | |
415 | 436 | | |
| |||
Lines changed: 21 additions & 18 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | 1 | | |
3 | 2 | | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | | - | |
28 | | - | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
29 | 32 | | |
30 | 33 | | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | | - | |
39 | | - | |
40 | | - | |
41 | | - | |
42 | | - | |
43 | | - | |
44 | | - | |
45 | | - | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
46 | 49 | | |
Lines changed: 21 additions & 15 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | 1 | | |
3 | 2 | | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
14 | 18 | | |
15 | 19 | | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
28 | | - | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
29 | 35 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| 15 | + | |
15 | 16 | | |
16 | 17 | | |
17 | 18 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
0 commit comments