feat: the preferences are a UI file, applying as they change
src/ui/preferences.ui is an AdwPreferencesDialog whose rows are libadwaita's own -- AdwEntryRow, AdwSpinRow, AdwSwitchRow, AdwComboRow, AdwButtonRow -- instead of a label and a bare GtkEntry in a GtkBox. There is no Apply button: a row applies as it changes, which is what those widgets are designed around, and [prefs-probe] reads the settings file back after every change. The folder chooser is cancellable now, so a picker still open when the dialog closes cannot write into a row that is gone; the cancellable is also how the probe takes the cancel path without a mouse. Two traps cost a run each and are recorded in docs/claude/invariants-gtk-and-chrome.md: an AdwDialog is not a GtkWindow (it cannot parent a GtkFileDialog, and in floating mode it adds a native surface to gtk_window_get_toplevels() that is neither a widget nor a window), and a .ui that is not listed in the GResource is a Gtk-ERROR at runtime rather than a build failure -- which is exactly what the probe opening every window is for.
This commit is contained in:
1 parent
0e256764d5
commit
4c56172005
11 files changed
+403
-247
No files matched your search
@@ -609,8 +609,12 @@ all is the trigger pane's own switch, and there is deliberately no second one he
|
||||
the one place every source gets a folder inside, `<cache>/udpscope/events` by default. The cache
|
||||
directory and relative time are *start-up* settings -- the buffers are planned and the cache directory
|
||||
is opened before any source is known -- and the dialog says so; the theme applies as soon as it is
|
||||
chosen. A key that is absent means its default, so the file only mentions what changed, and a missing
|
||||
file is a first run rather than an error. The directory field shows the directory in use: the default
|
||||
chosen. A change
|
||||
applies as it is made — there is no Apply button, and a **Reset to defaults** row at the end of the
|
||||
dialog puts everything back — and the rows are the ones every GNOME application shows: a title, a
|
||||
subtitle under it where the setting needs explaining, and the control on the right. A key that is
|
||||
absent means its default, so the file only mentions what changed, and a missing file is a first run
|
||||
rather than an error. The directory field shows the directory in use: the default
|
||||
is filled in rather than described, and typing it back leaves the setting unset, so it goes on
|
||||
following the cache directory instead of pinning one path for good. It can be typed, or picked with the folder
|
||||
button beside it, which writes what it found into the same field -- the field stays the one value, and
|
||||
|
||||
Reference in new issue
Block a user