fix(css): Prevent duplicate provider initialization in workspace manager
- commit
- 043bf2c04879c4ad77d5b1c51336e8dcf3a20734
- author
- Brice · · 2025-09-28 05:29 UTC
- parent
- d1f04b5
- signature
- unsigned
1 file · +18 -2
M internal/app/browser/workspace_css.go +18 -2
| @@ -146,13 +146,29 @@ func (wm *WorkspaceManager) generateStackedPaneCSS() string { | |||
| 146 | 146 | return wm.generateWorkspaceCSS() | |
| 147 | 147 | } | |
| 148 | 148 | ||
| 149 | + | // Global CSS provider tracking to prevent duplication | |
| 150 | + | var ( | |
| 151 | + | globalCSSInitialized bool | |
| 152 | + | globalCSSContent string | |
| 153 | + | ) | |
| 154 | + | ||
| 149 | 155 | // ensureWorkspaceStyles ensures that CSS styles are applied for workspace panes | |
| 156 | + | // Improved to prevent CSS provider duplication by using global CSS tracking | |
| 150 | 157 | func (wm *WorkspaceManager) ensureWorkspaceStyles() { | |
| 151 | - | if wm == nil || wm.cssInitialized { | |
| 158 | + | if wm == nil { | |
| 152 | 159 | return | |
| 153 | 160 | } | |
| 161 | + | ||
| 162 | + | // Generate CSS content | |
| 154 | 163 | workspaceCSS := wm.generateWorkspaceCSS() | |
| 155 | - | webkit.AddCSSProvider(workspaceCSS) | |
| 164 | + | ||
| 165 | + | // Only apply CSS if it hasn't been applied globally or if content changed | |
| 166 | + | if !globalCSSInitialized || globalCSSContent != workspaceCSS { | |
| 167 | + | webkit.AddCSSProvider(workspaceCSS) | |
| 168 | + | globalCSSInitialized = true | |
| 169 | + | globalCSSContent = workspaceCSS | |
| 170 | + | } | |
| 171 | + | ||
| 156 | 172 | wm.cssInitialized = true | |
| 157 | 173 | } | |
| 158 | 174 | ||
| @@ -146,13 +146,29 @@ func (wm *WorkspaceManager) generateStackedPaneCSS() string { | |||||
| 146 | return wm.generateWorkspaceCSS() | 146 | return wm.generateWorkspaceCSS() | ||
| 147 | } | 147 | } | ||
| 148 | 148 | ||||
| 149 | + | // Global CSS provider tracking to prevent duplication | |||
| 150 | + | var ( | |||
| 151 | + | globalCSSInitialized bool | |||
| 152 | + | globalCSSContent string | |||
| 153 | + | ) | |||
| 154 | + | ||||
| 149 | // ensureWorkspaceStyles ensures that CSS styles are applied for workspace panes | 155 | // ensureWorkspaceStyles ensures that CSS styles are applied for workspace panes | ||
| 156 | + | // Improved to prevent CSS provider duplication by using global CSS tracking | |||
| 150 | func (wm *WorkspaceManager) ensureWorkspaceStyles() { | 157 | func (wm *WorkspaceManager) ensureWorkspaceStyles() { | ||
| 151 | - | if wm == nil || wm.cssInitialized { | 158 | + | if wm == nil { |
| 152 | return | 159 | return | ||
| 153 | } | 160 | } | ||
| 161 | + | ||||
| 162 | + | // Generate CSS content | |||
| 154 | workspaceCSS := wm.generateWorkspaceCSS() | 163 | workspaceCSS := wm.generateWorkspaceCSS() | ||
| 155 | - | webkit.AddCSSProvider(workspaceCSS) | 164 | + | |
| 165 | + | // Only apply CSS if it hasn't been applied globally or if content changed | |||
| 166 | + | if !globalCSSInitialized || globalCSSContent != workspaceCSS { | |||
| 167 | + | webkit.AddCSSProvider(workspaceCSS) | |||
| 168 | + | globalCSSInitialized = true | |||
| 169 | + | globalCSSContent = workspaceCSS | |||
| 170 | + | } | |||
| 171 | + | ||||
| 156 | wm.cssInitialized = true | 172 | wm.cssInitialized = true | ||
| 157 | } | 173 | } | ||
| 158 | 174 | ||||