fix(qt): modal forms open clean, never with the last session's text

QbzLineEdit re-seeds its box only when `text` CHANGES and only while the
box is not focused; QbzTextArea only while unfocused. Modals that reset
their drafts on the close edge (the box still holds focus for that
frame) or reopen with the seed they closed on produced neither, so the
box kept the previous input while the draft said otherwise. Both
controls gain `reset(value)`, which writes the box directly, and every
modal form calls it from its open handler: playlist edit and create,
MyQBZ create / rename / description, folder create and edit, the link
resolver, the rip wizard and the library folder editor. The MyQBZ
create name now resets on the open edge, and its edit panel re-seeds on
every open, also for the same collection.

Renaming a Qobuz playlist also patches the playlist manager's warm cache,
which the editor seeds from before any fetch: reopening the editor right
after Save showed the pre-save name until the background reload landed,
and forever while offline.

cc
This commit is contained in:
vicrodh committed 2026-09-14 05:22:44 -06:00
1 parent e0e1bdfbee
commit 461238bd6f
11 files changed
+88 -4

No files matched your search

@@ -75,6 +75,11 @@ Item {
album = doc.album || ""
albumArtist = doc.albumArtist || ""
year = doc.year || ""
// The boxes too (QbzLineEdit.reset()): a disc re-read with the same
// tags changes no draft above.
albumField.reset()
yearField.reset()
albumArtistField.reset()
libraryChoice = "none"
var copy = []
var src = doc.tracks || []
@@ -254,6 +259,7 @@ Item {
font.pixelSize: theme.fontLegal }
QbzLineEdit {
width: parent.width
id: albumField
text: root.album
onEdited: function (v) { root.album = v }
}
@@ -265,6 +271,7 @@ Item {
font.pixelSize: theme.fontLegal }
QbzLineEdit {
width: parent.width
id: yearField
text: root.year
onEdited: function (v) { root.year = v }
}
@@ -277,6 +284,7 @@ Item {
font.pixelSize: theme.fontLegal }
QbzLineEdit {
width: parent.width
id: albumArtistField
text: root.albumArtist
onEdited: function (v) { root.albumArtist = v }
}