fix(favorites): release dynamic tag callbacks
- commit
- 85a20aa2497614a5b44e3fa825e4cfccea14417d
- author
- brice · · 2026-08-12 05:50 UTC
- committer
- brice · · 2026-08-12 05:52 UTC
- parent
- 965ed59
- signature
- GPG Verified
CD88F9E564E0102646FB6077A1A07C7C7C3E349D· arch-gpg Verified for the committer email
6 files · +52 -18
M internal/ui/component/favorites_sidebar.go +7 -5
| @@ -69,11 +69,13 @@ type FavoritesSidebar struct { | |||
| 69 | 69 | confirmDelete bool | |
| 70 | 70 | confirmDeleteID entity.FavoriteID | |
| 71 | 71 | ||
| 72 | - | retainedCallbacks []any | |
| 73 | - | tagCallbacks []any | |
| 74 | - | ctx context.Context | |
| 75 | - | cancel context.CancelFunc | |
| 76 | - | mu sync.RWMutex | |
| 72 | + | retainedCallbacks []any | |
| 73 | + | tagCallbacks []any | |
| 74 | + | tagPromptCallbacks []any | |
| 75 | + | formTagMatchCallbacks []any | |
| 76 | + | ctx context.Context | |
| 77 | + | cancel context.CancelFunc | |
| 78 | + | mu sync.RWMutex | |
| 77 | 79 | ||
| 78 | 80 | idleScheduler func(glib.SourceFunc) | |
| 79 | 81 | } | |
| @@ -69,11 +69,13 @@ type FavoritesSidebar struct { | |||||
| 69 | confirmDelete bool | 69 | confirmDelete bool | ||
| 70 | confirmDeleteID entity.FavoriteID | 70 | confirmDeleteID entity.FavoriteID | ||
| 71 | 71 | ||||
| 72 | - | retainedCallbacks []any | 72 | + | retainedCallbacks []any |
| 73 | - | tagCallbacks []any | 73 | + | tagCallbacks []any |
| 74 | - | ctx context.Context | 74 | + | tagPromptCallbacks []any |
| 75 | - | cancel context.CancelFunc | 75 | + | formTagMatchCallbacks []any |
| 76 | - | mu sync.RWMutex | 76 | + | ctx context.Context |
| 77 | + | cancel context.CancelFunc | |||
| 78 | + | mu sync.RWMutex | |||
| 77 | 79 | ||||
| 78 | idleScheduler func(glib.SourceFunc) | 80 | idleScheduler func(glib.SourceFunc) | ||
| 79 | } | 81 | } | ||
M internal/ui/component/favorites_sidebar_form_tags.go +7 -1
| @@ -65,6 +65,7 @@ func (fs *FavoritesSidebar) renderFormTagMatches(query string) { | |||
| 65 | 65 | fs.mu.RUnlock() | |
| 66 | 66 | ||
| 67 | 67 | clearBoxChildren(fs.formTagMatches) | |
| 68 | + | callbacks := make([]any, 0) | |
| 68 | 69 | for _, tag := range formTagCandidates(tags, selected, query) { | |
| 69 | 70 | t := *tag | |
| 70 | 71 | label := t.Name | |
| @@ -77,10 +78,15 @@ func (fs *FavoritesSidebar) renderFormTagMatches(query string) { | |||
| 77 | 78 | } | |
| 78 | 79 | button.AddCssClass("favorites-sidebar-form-tag-match") | |
| 79 | 80 | callback := func(_ gtk.Button) { fs.toggleFormTag(t.ID) } | |
| 80 | - | fs.retainedCallbacks = append(fs.retainedCallbacks, callback) | |
| 81 | + | callbacks = append(callbacks, callback) | |
| 81 | 82 | button.ConnectClicked(&callback) | |
| 82 | 83 | fs.formTagMatches.Append(&button.Widget) | |
| 83 | 84 | } | |
| 85 | + | fs.mu.Lock() | |
| 86 | + | if !fs.destroyed { | |
| 87 | + | fs.formTagMatchCallbacks = callbacks | |
| 88 | + | } | |
| 89 | + | fs.mu.Unlock() | |
| 84 | 90 | } | |
| 85 | 91 | ||
| 86 | 92 | func (fs *FavoritesSidebar) toggleFormTag(tagID entity.TagID) { | |
| @@ -65,6 +65,7 @@ func (fs *FavoritesSidebar) renderFormTagMatches(query string) { | |||||
| 65 | fs.mu.RUnlock() | 65 | fs.mu.RUnlock() | ||
| 66 | 66 | ||||
| 67 | clearBoxChildren(fs.formTagMatches) | 67 | clearBoxChildren(fs.formTagMatches) | ||
| 68 | + | callbacks := make([]any, 0) | |||
| 68 | for _, tag := range formTagCandidates(tags, selected, query) { | 69 | for _, tag := range formTagCandidates(tags, selected, query) { | ||
| 69 | t := *tag | 70 | t := *tag | ||
| 70 | label := t.Name | 71 | label := t.Name | ||
| @@ -77,10 +78,15 @@ func (fs *FavoritesSidebar) renderFormTagMatches(query string) { | |||||
| 77 | } | 78 | } | ||
| 78 | button.AddCssClass("favorites-sidebar-form-tag-match") | 79 | button.AddCssClass("favorites-sidebar-form-tag-match") | ||
| 79 | callback := func(_ gtk.Button) { fs.toggleFormTag(t.ID) } | 80 | callback := func(_ gtk.Button) { fs.toggleFormTag(t.ID) } | ||
| 80 | - | fs.retainedCallbacks = append(fs.retainedCallbacks, callback) | 81 | + | callbacks = append(callbacks, callback) |
| 81 | button.ConnectClicked(&callback) | 82 | button.ConnectClicked(&callback) | ||
| 82 | fs.formTagMatches.Append(&button.Widget) | 83 | fs.formTagMatches.Append(&button.Widget) | ||
| 83 | } | 84 | } | ||
| 85 | + | fs.mu.Lock() | |||
| 86 | + | if !fs.destroyed { | |||
| 87 | + | fs.formTagMatchCallbacks = callbacks | |||
| 88 | + | } | |||
| 89 | + | fs.mu.Unlock() | |||
| 84 | } | 90 | } | ||
| 85 | 91 | ||||
| 86 | func (fs *FavoritesSidebar) toggleFormTag(tagID entity.TagID) { | 92 | func (fs *FavoritesSidebar) toggleFormTag(tagID entity.TagID) { | ||
M internal/ui/component/favorites_sidebar_forms.go +1 -1
| @@ -181,7 +181,7 @@ func (fs *FavoritesSidebar) cancelManagement() bool { | |||
| 181 | 181 | clearBoxChildren(fs.formBox) | |
| 182 | 182 | } | |
| 183 | 183 | if fs.tagPromptBox != nil { | |
| 184 | - | clearBoxChildren(fs.tagPromptBox) | |
| 184 | + | fs.clearTagPromptContent() | |
| 185 | 185 | fs.tagPromptBox.SetVisible(false) | |
| 186 | 186 | fs.tagNameEntry = nil | |
| 187 | 187 | fs.tagPromptSaveBtn = nil | |
| @@ -181,7 +181,7 @@ func (fs *FavoritesSidebar) cancelManagement() bool { | |||||
| 181 | clearBoxChildren(fs.formBox) | 181 | clearBoxChildren(fs.formBox) | ||
| 182 | } | 182 | } | ||
| 183 | if fs.tagPromptBox != nil { | 183 | if fs.tagPromptBox != nil { | ||
| 184 | - | clearBoxChildren(fs.tagPromptBox) | 184 | + | fs.clearTagPromptContent() |
| 185 | fs.tagPromptBox.SetVisible(false) | 185 | fs.tagPromptBox.SetVisible(false) | ||
| 186 | fs.tagNameEntry = nil | 186 | fs.tagNameEntry = nil | ||
| 187 | fs.tagPromptSaveBtn = nil | 187 | fs.tagPromptSaveBtn = nil | ||
M internal/ui/component/favorites_sidebar_keyboard.go +6 -1
| @@ -507,7 +507,12 @@ func (fs *FavoritesSidebar) cycleTagControlFocus(reverse bool) bool { | |||
| 507 | 507 | } | |
| 508 | 508 | index := fs.focusedTagControlIndex() | |
| 509 | 509 | if index < 0 { | |
| 510 | - | index = 0 | |
| 510 | + | if reverse { | |
| 511 | + | fs.focusTagControl(len(controls) - 1) | |
| 512 | + | } else { | |
| 513 | + | fs.focusTagControl(0) | |
| 514 | + | } | |
| 515 | + | return true | |
| 511 | 516 | } | |
| 512 | 517 | if reverse { | |
| 513 | 518 | if index > 0 { | |
| @@ -507,7 +507,12 @@ func (fs *FavoritesSidebar) cycleTagControlFocus(reverse bool) bool { | |||||
| 507 | } | 507 | } | ||
| 508 | index := fs.focusedTagControlIndex() | 508 | index := fs.focusedTagControlIndex() | ||
| 509 | if index < 0 { | 509 | if index < 0 { | ||
| 510 | - | index = 0 | 510 | + | if reverse { |
| 511 | + | fs.focusTagControl(len(controls) - 1) | |||
| 512 | + | } else { | |||
| 513 | + | fs.focusTagControl(0) | |||
| 514 | + | } | |||
| 515 | + | return true | |||
| 511 | } | 516 | } | ||
| 512 | if reverse { | 517 | if reverse { | ||
| 513 | if index > 0 { | 518 | if index > 0 { | ||
M internal/ui/component/favorites_sidebar_tags.go +31 -6
| @@ -12,7 +12,7 @@ func (fs *FavoritesSidebar) showCreateTagPrompt() { | |||
| 12 | 12 | if fs == nil || fs.tagPromptBox == nil { | |
| 13 | 13 | return | |
| 14 | 14 | } | |
| 15 | - | clearBoxChildren(fs.tagPromptBox) | |
| 15 | + | fs.clearTagPromptContent() | |
| 16 | 16 | entry := gtk.NewEntry() | |
| 17 | 17 | if entry == nil { | |
| 18 | 18 | return | |
| @@ -22,8 +22,9 @@ func (fs *FavoritesSidebar) showCreateTagPrompt() { | |||
| 22 | 22 | entry.AddCssClass("favorites-sidebar-tag-name") | |
| 23 | 23 | fs.trackTextInputFocus(&entry.Widget) | |
| 24 | 24 | entry.SetHexpand(true) | |
| 25 | + | callbacks := make([]any, 0, 2) | |
| 25 | 26 | activateCb := func(gtk.Entry) { fs.submitTagName(entry.GetText()) } | |
| 26 | - | fs.retainedCallbacks = append(fs.retainedCallbacks, activateCb) | |
| 27 | + | callbacks = append(callbacks, activateCb) | |
| 27 | 28 | entry.ConnectActivate(&activateCb) | |
| 28 | 29 | ||
| 29 | 30 | save := gtk.NewButtonWithLabel("Create") | |
| @@ -32,11 +33,12 @@ func (fs *FavoritesSidebar) showCreateTagPrompt() { | |||
| 32 | 33 | } | |
| 33 | 34 | save.AddCssClass("favorites-sidebar-tag-create") | |
| 34 | 35 | cb := func(_ gtk.Button) { fs.createTag(entry.GetText()) } | |
| 35 | - | fs.retainedCallbacks = append(fs.retainedCallbacks, cb) | |
| 36 | + | callbacks = append(callbacks, cb) | |
| 36 | 37 | save.ConnectClicked(&cb) | |
| 37 | 38 | ||
| 38 | 39 | fs.tagNameEntry = entry | |
| 39 | 40 | fs.tagPromptSaveBtn = save | |
| 41 | + | fs.storeTagPromptCallbacks(callbacks) | |
| 40 | 42 | fs.tagPromptBox.Append(&entry.Widget) | |
| 41 | 43 | fs.tagPromptBox.Append(&save.Widget) | |
| 42 | 44 | fs.tagPromptBox.SetVisible(true) | |
| @@ -88,7 +90,8 @@ func (fs *FavoritesSidebar) showTagBindingPicker() bool { | |||
| 88 | 90 | fs.mu.RLock() | |
| 89 | 91 | tags := append([]*entity.Tag(nil), fs.allTags...) | |
| 90 | 92 | fs.mu.RUnlock() | |
| 91 | - | clearBoxChildren(fs.tagPromptBox) | |
| 93 | + | fs.clearTagPromptContent() | |
| 94 | + | callbacks := make([]any, 0, len(tags)) | |
| 92 | 95 | for _, tag := range tags { | |
| 93 | 96 | if tag == nil { | |
| 94 | 97 | continue | |
| @@ -104,12 +107,13 @@ func (fs *FavoritesSidebar) showTagBindingPicker() bool { | |||
| 104 | 107 | } | |
| 105 | 108 | button.AddCssClass("favorites-sidebar-tag-binding") | |
| 106 | 109 | cb := func(_ gtk.Button) { fs.toggleFavoriteTag(fav.ID, t.ID) } | |
| 107 | - | fs.retainedCallbacks = append(fs.retainedCallbacks, cb) | |
| 110 | + | callbacks = append(callbacks, cb) | |
| 108 | 111 | button.ConnectClicked(&cb) | |
| 109 | 112 | fs.tagPromptBox.Append(&button.Widget) | |
| 110 | 113 | } | |
| 111 | 114 | fs.tagNameEntry = nil | |
| 112 | 115 | fs.tagPromptSaveBtn = nil | |
| 116 | + | fs.storeTagPromptCallbacks(callbacks) | |
| 113 | 117 | fs.tagPromptBox.SetVisible(true) | |
| 114 | 118 | fs.mu.Lock() | |
| 115 | 119 | if !fs.destroyed { | |
| @@ -123,7 +127,7 @@ func (fs *FavoritesSidebar) hideTagPrompt() { | |||
| 123 | 127 | if fs == nil || fs.tagPromptBox == nil { | |
| 124 | 128 | return | |
| 125 | 129 | } | |
| 126 | - | clearBoxChildren(fs.tagPromptBox) | |
| 130 | + | fs.clearTagPromptContent() | |
| 127 | 131 | fs.tagPromptBox.SetVisible(false) | |
| 128 | 132 | fs.tagNameEntry = nil | |
| 129 | 133 | fs.tagPromptSaveBtn = nil | |
| @@ -134,6 +138,27 @@ func (fs *FavoritesSidebar) hideTagPrompt() { | |||
| 134 | 138 | fs.mu.Unlock() | |
| 135 | 139 | } | |
| 136 | 140 | ||
| 141 | + | func (fs *FavoritesSidebar) clearTagPromptContent() { | |
| 142 | + | if fs == nil || fs.tagPromptBox == nil { | |
| 143 | + | return | |
| 144 | + | } | |
| 145 | + | clearBoxChildren(fs.tagPromptBox) | |
| 146 | + | fs.mu.Lock() | |
| 147 | + | fs.tagPromptCallbacks = nil | |
| 148 | + | fs.mu.Unlock() | |
| 149 | + | } | |
| 150 | + | ||
| 151 | + | func (fs *FavoritesSidebar) storeTagPromptCallbacks(callbacks []any) { | |
| 152 | + | if fs == nil { | |
| 153 | + | return | |
| 154 | + | } | |
| 155 | + | fs.mu.Lock() | |
| 156 | + | if !fs.destroyed { | |
| 157 | + | fs.tagPromptCallbacks = callbacks | |
| 158 | + | } | |
| 159 | + | fs.mu.Unlock() | |
| 160 | + | } | |
| 161 | + | ||
| 137 | 162 | func (fs *FavoritesSidebar) toggleFavoriteTag(favoriteID entity.FavoriteID, tagID entity.TagID) { | |
| 138 | 163 | fs.mu.RLock() | |
| 139 | 164 | uc, ctx := fs.favoritesUC, fs.ctx | |
| @@ -12,7 +12,7 @@ func (fs *FavoritesSidebar) showCreateTagPrompt() { | |||||
| 12 | if fs == nil || fs.tagPromptBox == nil { | 12 | if fs == nil || fs.tagPromptBox == nil { | ||
| 13 | return | 13 | return | ||
| 14 | } | 14 | } | ||
| 15 | - | clearBoxChildren(fs.tagPromptBox) | 15 | + | fs.clearTagPromptContent() |
| 16 | entry := gtk.NewEntry() | 16 | entry := gtk.NewEntry() | ||
| 17 | if entry == nil { | 17 | if entry == nil { | ||
| 18 | return | 18 | return | ||
| @@ -22,8 +22,9 @@ func (fs *FavoritesSidebar) showCreateTagPrompt() { | |||||
| 22 | entry.AddCssClass("favorites-sidebar-tag-name") | 22 | entry.AddCssClass("favorites-sidebar-tag-name") | ||
| 23 | fs.trackTextInputFocus(&entry.Widget) | 23 | fs.trackTextInputFocus(&entry.Widget) | ||
| 24 | entry.SetHexpand(true) | 24 | entry.SetHexpand(true) | ||
| 25 | + | callbacks := make([]any, 0, 2) | |||
| 25 | activateCb := func(gtk.Entry) { fs.submitTagName(entry.GetText()) } | 26 | activateCb := func(gtk.Entry) { fs.submitTagName(entry.GetText()) } | ||
| 26 | - | fs.retainedCallbacks = append(fs.retainedCallbacks, activateCb) | 27 | + | callbacks = append(callbacks, activateCb) |
| 27 | entry.ConnectActivate(&activateCb) | 28 | entry.ConnectActivate(&activateCb) | ||
| 28 | 29 | ||||
| 29 | save := gtk.NewButtonWithLabel("Create") | 30 | save := gtk.NewButtonWithLabel("Create") | ||
| @@ -32,11 +33,12 @@ func (fs *FavoritesSidebar) showCreateTagPrompt() { | |||||
| 32 | } | 33 | } | ||
| 33 | save.AddCssClass("favorites-sidebar-tag-create") | 34 | save.AddCssClass("favorites-sidebar-tag-create") | ||
| 34 | cb := func(_ gtk.Button) { fs.createTag(entry.GetText()) } | 35 | cb := func(_ gtk.Button) { fs.createTag(entry.GetText()) } | ||
| 35 | - | fs.retainedCallbacks = append(fs.retainedCallbacks, cb) | 36 | + | callbacks = append(callbacks, cb) |
| 36 | save.ConnectClicked(&cb) | 37 | save.ConnectClicked(&cb) | ||
| 37 | 38 | ||||
| 38 | fs.tagNameEntry = entry | 39 | fs.tagNameEntry = entry | ||
| 39 | fs.tagPromptSaveBtn = save | 40 | fs.tagPromptSaveBtn = save | ||
| 41 | + | fs.storeTagPromptCallbacks(callbacks) | |||
| 40 | fs.tagPromptBox.Append(&entry.Widget) | 42 | fs.tagPromptBox.Append(&entry.Widget) | ||
| 41 | fs.tagPromptBox.Append(&save.Widget) | 43 | fs.tagPromptBox.Append(&save.Widget) | ||
| 42 | fs.tagPromptBox.SetVisible(true) | 44 | fs.tagPromptBox.SetVisible(true) | ||
| @@ -88,7 +90,8 @@ func (fs *FavoritesSidebar) showTagBindingPicker() bool { | |||||
| 88 | fs.mu.RLock() | 90 | fs.mu.RLock() | ||
| 89 | tags := append([]*entity.Tag(nil), fs.allTags...) | 91 | tags := append([]*entity.Tag(nil), fs.allTags...) | ||
| 90 | fs.mu.RUnlock() | 92 | fs.mu.RUnlock() | ||
| 91 | - | clearBoxChildren(fs.tagPromptBox) | 93 | + | fs.clearTagPromptContent() |
| 94 | + | callbacks := make([]any, 0, len(tags)) | |||
| 92 | for _, tag := range tags { | 95 | for _, tag := range tags { | ||
| 93 | if tag == nil { | 96 | if tag == nil { | ||
| 94 | continue | 97 | continue | ||
| @@ -104,12 +107,13 @@ func (fs *FavoritesSidebar) showTagBindingPicker() bool { | |||||
| 104 | } | 107 | } | ||
| 105 | button.AddCssClass("favorites-sidebar-tag-binding") | 108 | button.AddCssClass("favorites-sidebar-tag-binding") | ||
| 106 | cb := func(_ gtk.Button) { fs.toggleFavoriteTag(fav.ID, t.ID) } | 109 | cb := func(_ gtk.Button) { fs.toggleFavoriteTag(fav.ID, t.ID) } | ||
| 107 | - | fs.retainedCallbacks = append(fs.retainedCallbacks, cb) | 110 | + | callbacks = append(callbacks, cb) |
| 108 | button.ConnectClicked(&cb) | 111 | button.ConnectClicked(&cb) | ||
| 109 | fs.tagPromptBox.Append(&button.Widget) | 112 | fs.tagPromptBox.Append(&button.Widget) | ||
| 110 | } | 113 | } | ||
| 111 | fs.tagNameEntry = nil | 114 | fs.tagNameEntry = nil | ||
| 112 | fs.tagPromptSaveBtn = nil | 115 | fs.tagPromptSaveBtn = nil | ||
| 116 | + | fs.storeTagPromptCallbacks(callbacks) | |||
| 113 | fs.tagPromptBox.SetVisible(true) | 117 | fs.tagPromptBox.SetVisible(true) | ||
| 114 | fs.mu.Lock() | 118 | fs.mu.Lock() | ||
| 115 | if !fs.destroyed { | 119 | if !fs.destroyed { | ||
| @@ -123,7 +127,7 @@ func (fs *FavoritesSidebar) hideTagPrompt() { | |||||
| 123 | if fs == nil || fs.tagPromptBox == nil { | 127 | if fs == nil || fs.tagPromptBox == nil { | ||
| 124 | return | 128 | return | ||
| 125 | } | 129 | } | ||
| 126 | - | clearBoxChildren(fs.tagPromptBox) | 130 | + | fs.clearTagPromptContent() |
| 127 | fs.tagPromptBox.SetVisible(false) | 131 | fs.tagPromptBox.SetVisible(false) | ||
| 128 | fs.tagNameEntry = nil | 132 | fs.tagNameEntry = nil | ||
| 129 | fs.tagPromptSaveBtn = nil | 133 | fs.tagPromptSaveBtn = nil | ||
| @@ -134,6 +138,27 @@ func (fs *FavoritesSidebar) hideTagPrompt() { | |||||
| 134 | fs.mu.Unlock() | 138 | fs.mu.Unlock() | ||
| 135 | } | 139 | } | ||
| 136 | 140 | ||||
| 141 | + | func (fs *FavoritesSidebar) clearTagPromptContent() { | |||
| 142 | + | if fs == nil || fs.tagPromptBox == nil { | |||
| 143 | + | return | |||
| 144 | + | } | |||
| 145 | + | clearBoxChildren(fs.tagPromptBox) | |||
| 146 | + | fs.mu.Lock() | |||
| 147 | + | fs.tagPromptCallbacks = nil | |||
| 148 | + | fs.mu.Unlock() | |||
| 149 | + | } | |||
| 150 | + | ||||
| 151 | + | func (fs *FavoritesSidebar) storeTagPromptCallbacks(callbacks []any) { | |||
| 152 | + | if fs == nil { | |||
| 153 | + | return | |||
| 154 | + | } | |||
| 155 | + | fs.mu.Lock() | |||
| 156 | + | if !fs.destroyed { | |||
| 157 | + | fs.tagPromptCallbacks = callbacks | |||
| 158 | + | } | |||
| 159 | + | fs.mu.Unlock() | |||
| 160 | + | } | |||
| 161 | + | ||||
| 137 | func (fs *FavoritesSidebar) toggleFavoriteTag(favoriteID entity.FavoriteID, tagID entity.TagID) { | 162 | func (fs *FavoritesSidebar) toggleFavoriteTag(favoriteID entity.FavoriteID, tagID entity.TagID) { | ||
| 138 | fs.mu.RLock() | 163 | fs.mu.RLock() | ||
| 139 | uc, ctx := fs.favoritesUC, fs.ctx | 164 | uc, ctx := fs.favoritesUC, fs.ctx | ||
M internal/ui/theme/favorites_sidebar_css.go +0 -4
| @@ -6,7 +6,6 @@ func generateFavoritesSidebarCSS(_ Palette) string { | |||
| 6 | 6 | ||
| 7 | 7 | .favorites-sidebar-tags { | |
| 8 | 8 | padding: 0.25em 0.5em 0.375em; | |
| 9 | - | spacing: 0.25em; | |
| 10 | 9 | border-bottom: 0.0625em solid var(--border); | |
| 11 | 10 | background-color: var(--surface-variant); | |
| 12 | 11 | } | |
| @@ -42,7 +41,6 @@ func generateFavoritesSidebarCSS(_ Palette) string { | |||
| 42 | 41 | ||
| 43 | 42 | .favorites-sidebar-tag-prompt { | |
| 44 | 43 | padding: 0.375em 0.5em; | |
| 45 | - | spacing: 0.375em; | |
| 46 | 44 | border-bottom: 0.0625em solid var(--border); | |
| 47 | 45 | background-color: var(--surface-variant); | |
| 48 | 46 | } | |
| @@ -83,7 +81,6 @@ func generateFavoritesSidebarCSS(_ Palette) string { | |||
| 83 | 81 | ||
| 84 | 82 | .favorites-sidebar-form { | |
| 85 | 83 | padding: 0.5em; | |
| 86 | - | spacing: 0.375em; | |
| 87 | 84 | border-top: 0.0625em solid var(--border); | |
| 88 | 85 | background-color: var(--surface-variant); | |
| 89 | 86 | } | |
| @@ -96,7 +93,6 @@ func generateFavoritesSidebarCSS(_ Palette) string { | |||
| 96 | 93 | } | |
| 97 | 94 | ||
| 98 | 95 | .favorites-sidebar-form-tag-matches { | |
| 99 | - | spacing: 0.25em; | |
| 100 | 96 | padding: 0.125em 0; | |
| 101 | 97 | } | |
| 102 | 98 | ||
| @@ -6,7 +6,6 @@ func generateFavoritesSidebarCSS(_ Palette) string { | |||||
| 6 | 6 | ||||
| 7 | .favorites-sidebar-tags { | 7 | .favorites-sidebar-tags { | ||
| 8 | padding: 0.25em 0.5em 0.375em; | 8 | padding: 0.25em 0.5em 0.375em; | ||
| 9 | - | spacing: 0.25em; | |||
| 10 | border-bottom: 0.0625em solid var(--border); | 9 | border-bottom: 0.0625em solid var(--border); | ||
| 11 | background-color: var(--surface-variant); | 10 | background-color: var(--surface-variant); | ||
| 12 | } | 11 | } | ||
| @@ -42,7 +41,6 @@ func generateFavoritesSidebarCSS(_ Palette) string { | |||||
| 42 | 41 | ||||
| 43 | .favorites-sidebar-tag-prompt { | 42 | .favorites-sidebar-tag-prompt { | ||
| 44 | padding: 0.375em 0.5em; | 43 | padding: 0.375em 0.5em; | ||
| 45 | - | spacing: 0.375em; | |||
| 46 | border-bottom: 0.0625em solid var(--border); | 44 | border-bottom: 0.0625em solid var(--border); | ||
| 47 | background-color: var(--surface-variant); | 45 | background-color: var(--surface-variant); | ||
| 48 | } | 46 | } | ||
| @@ -83,7 +81,6 @@ func generateFavoritesSidebarCSS(_ Palette) string { | |||||
| 83 | 81 | ||||
| 84 | .favorites-sidebar-form { | 82 | .favorites-sidebar-form { | ||
| 85 | padding: 0.5em; | 83 | padding: 0.5em; | ||
| 86 | - | spacing: 0.375em; | |||
| 87 | border-top: 0.0625em solid var(--border); | 84 | border-top: 0.0625em solid var(--border); | ||
| 88 | background-color: var(--surface-variant); | 85 | background-color: var(--surface-variant); | ||
| 89 | } | 86 | } | ||
| @@ -96,7 +93,6 @@ func generateFavoritesSidebarCSS(_ Palette) string { | |||||
| 96 | } | 93 | } | ||
| 97 | 94 | ||||
| 98 | .favorites-sidebar-form-tag-matches { | 95 | .favorites-sidebar-form-tag-matches { | ||
| 99 | - | spacing: 0.25em; | |||
| 100 | padding: 0.125em 0; | 96 | padding: 0.125em 0; | ||
| 101 | } | 97 | } | ||
| 102 | 98 | ||||