Address CodeRabbit migration feedback
- commit
- c3e55f7ffc338d4bea4b42cedfba8bdf6213c206
- author
- brice · · 2026-04-29 20:23 UTC
- parent
- 7297a70
- signature
- GPG Verified
CD88F9E564E0102646FB6077A1A07C7C7C3E349D· arch-gpg Verified for the committer email
5 files · +15 -19
M internal/infrastructure/cef/cef2gtk_adapter.go +1 -2
| @@ -181,13 +181,12 @@ func (a *Cef2gtkAdapter) Destroy() error { | |||
| 181 | 181 | if a == nil { | |
| 182 | 182 | return ErrAdapterDestroyed | |
| 183 | 183 | } | |
| 184 | + | a.destroyed.Store(true) | |
| 184 | 185 | if a.view == nil { | |
| 185 | - | a.destroyed.Store(true) | |
| 186 | 186 | return ErrAdapterDestroyed | |
| 187 | 187 | } | |
| 188 | 188 | err := a.view.Destroy() | |
| 189 | 189 | a.view = nil | |
| 190 | - | a.destroyed.Store(true) | |
| 191 | 190 | return err | |
| 192 | 191 | } | |
| 193 | 192 | ||
| @@ -181,13 +181,12 @@ func (a *Cef2gtkAdapter) Destroy() error { | |||||
| 181 | if a == nil { | 181 | if a == nil { | ||
| 182 | return ErrAdapterDestroyed | 182 | return ErrAdapterDestroyed | ||
| 183 | } | 183 | } | ||
| 184 | + | a.destroyed.Store(true) | |||
| 184 | if a.view == nil { | 185 | if a.view == nil { | ||
| 185 | - | a.destroyed.Store(true) | |||
| 186 | return ErrAdapterDestroyed | 186 | return ErrAdapterDestroyed | ||
| 187 | } | 187 | } | ||
| 188 | err := a.view.Destroy() | 188 | err := a.view.Destroy() | ||
| 189 | a.view = nil | 189 | a.view = nil | ||
| 190 | - | a.destroyed.Store(true) | |||
| 191 | return err | 190 | return err | ||
| 192 | } | 191 | } | ||
| 193 | 192 | ||||
M internal/infrastructure/cef/focus_bridge.go +6 -2
| @@ -6,7 +6,11 @@ func syncWindowlessBrowserFocus(host purecef.BrowserHost) { | |||
| 6 | 6 | if host == nil { | |
| 7 | 7 | return | |
| 8 | 8 | } | |
| 9 | - | host.WasHidden(0) | |
| 10 | - | host.SetFocus(1) | |
| 9 | + | const ( | |
| 10 | + | cefFalse = 0 | |
| 11 | + | cefTrue = 1 | |
| 12 | + | ) | |
| 13 | + | host.WasHidden(cefFalse) // visible | |
| 14 | + | host.SetFocus(cefTrue) // focused | |
| 11 | 15 | host.Invalidate(purecef.PaintElementTypePetView) | |
| 12 | 16 | } | |
| @@ -6,7 +6,11 @@ func syncWindowlessBrowserFocus(host purecef.BrowserHost) { | |||||
| 6 | if host == nil { | 6 | if host == nil { | ||
| 7 | return | 7 | return | ||
| 8 | } | 8 | } | ||
| 9 | - | host.WasHidden(0) | 9 | + | const ( |
| 10 | - | host.SetFocus(1) | 10 | + | cefFalse = 0 |
| 11 | + | cefTrue = 1 | |||
| 12 | + | ) | |||
| 13 | + | host.WasHidden(cefFalse) // visible | |||
| 14 | + | host.SetFocus(cefTrue) // focused | |||
| 11 | host.Invalidate(purecef.PaintElementTypePetView) | 15 | host.Invalidate(purecef.PaintElementTypePetView) | ||
| 12 | } | 16 | } | ||
M internal/infrastructure/cef/render_handler_adapter.go +1 -2
| @@ -24,8 +24,7 @@ func newDumberRenderHandler(wv *WebView) purecef.RenderHandler { | |||
| 24 | 24 | }, | |
| 25 | 25 | } | |
| 26 | 26 | if wv == nil || wv.viewBridge == nil { | |
| 27 | - | var view *cef2gtk.View | |
| 28 | - | return view.RenderHandler(hooks) | |
| 27 | + | return nil | |
| 29 | 28 | } | |
| 30 | 29 | return wv.viewBridge.RenderHandler(hooks) | |
| 31 | 30 | } | |
| @@ -24,8 +24,7 @@ func newDumberRenderHandler(wv *WebView) purecef.RenderHandler { | |||||
| 24 | }, | 24 | }, | ||
| 25 | } | 25 | } | ||
| 26 | if wv == nil || wv.viewBridge == nil { | 26 | if wv == nil || wv.viewBridge == nil { | ||
| 27 | - | var view *cef2gtk.View | 27 | + | return nil |
| 28 | - | return view.RenderHandler(hooks) | |||
| 29 | } | 28 | } | ||
| 30 | return wv.viewBridge.RenderHandler(hooks) | 29 | return wv.viewBridge.RenderHandler(hooks) | ||
| 31 | } | 30 | } | ||
M internal/infrastructure/cef/webview.go +3 -7
| @@ -1020,18 +1020,14 @@ func (wv *WebView) Destroy() { | |||
| 1020 | 1020 | } else { | |
| 1021 | 1021 | wv.runCloseCallbacks() | |
| 1022 | 1022 | } | |
| 1023 | - | if wv.viewBridge != nil { | |
| 1023 | + | if bridge := wv.viewBridge; bridge != nil { | |
| 1024 | 1024 | wv.runOnGTKSync(func() { | |
| 1025 | 1025 | if wv.removeSizeObserver != nil { | |
| 1026 | 1026 | wv.removeSizeObserver() | |
| 1027 | 1027 | wv.removeSizeObserver = nil | |
| 1028 | 1028 | } | |
| 1029 | - | bridge := wv.viewBridge | |
| 1030 | - | wv.viewBridge = nil | |
| 1031 | - | if bridge != nil { | |
| 1032 | - | _ = bridge.DetachInput() | |
| 1033 | - | _ = bridge.Destroy() | |
| 1034 | - | } | |
| 1029 | + | _ = bridge.DetachInput() | |
| 1030 | + | _ = bridge.Destroy() | |
| 1035 | 1031 | }) | |
| 1036 | 1032 | } | |
| 1037 | 1033 | } | |
| @@ -1020,18 +1020,14 @@ func (wv *WebView) Destroy() { | |||||
| 1020 | } else { | 1020 | } else { | ||
| 1021 | wv.runCloseCallbacks() | 1021 | wv.runCloseCallbacks() | ||
| 1022 | } | 1022 | } | ||
| 1023 | - | if wv.viewBridge != nil { | 1023 | + | if bridge := wv.viewBridge; bridge != nil { |
| 1024 | wv.runOnGTKSync(func() { | 1024 | wv.runOnGTKSync(func() { | ||
| 1025 | if wv.removeSizeObserver != nil { | 1025 | if wv.removeSizeObserver != nil { | ||
| 1026 | wv.removeSizeObserver() | 1026 | wv.removeSizeObserver() | ||
| 1027 | wv.removeSizeObserver = nil | 1027 | wv.removeSizeObserver = nil | ||
| 1028 | } | 1028 | } | ||
| 1029 | - | bridge := wv.viewBridge | 1029 | + | _ = bridge.DetachInput() |
| 1030 | - | wv.viewBridge = nil | 1030 | + | _ = bridge.Destroy() |
| 1031 | - | if bridge != nil { | |||
| 1032 | - | _ = bridge.DetachInput() | |||
| 1033 | - | _ = bridge.Destroy() | |||
| 1034 | - | } | |||
| 1035 | }) | 1031 | }) | ||
| 1036 | } | 1032 | } | ||
| 1037 | } | 1033 | } | ||
M internal/infrastructure/cef/webview_handlers_test.go +4 -6
| @@ -500,17 +500,15 @@ func TestOptionalHandlersAreAlwaysEnabled(t *testing.T) { | |||
| 500 | 500 | // AudioHandler is always enabled (required for media decoding). | |
| 501 | 501 | require.Same(t, h, h.GetAudioHandler()) | |
| 502 | 502 | require.Same(t, h, h.GetContextMenuHandler()) | |
| 503 | - | require.NotSame(t, h, h.GetRenderHandler()) | |
| 503 | + | require.Nil(t, h.GetRenderHandler()) | |
| 504 | 504 | } | |
| 505 | 505 | ||
| 506 | - | func TestGetRenderHandlerPreservesTextSelectionCallback(t *testing.T) { | |
| 506 | + | func TestRenderTextSelectionHookPreservesWebViewState(t *testing.T) { | |
| 507 | 507 | wv := &WebView{ctx: context.Background()} | |
| 508 | - | h := &handlerSet{wv: wv} | |
| 509 | 508 | ||
| 510 | - | rh := h.GetRenderHandler() | |
| 511 | - | rh.OnTextSelectionChanged(nil, "selected via client", nil) | |
| 509 | + | handleRenderTextSelectionChanged(wv, "selected via hook") | |
| 512 | 510 | ||
| 513 | - | require.Equal(t, "selected via client", wv.selectedTextSnapshot()) | |
| 511 | + | require.Equal(t, "selected via hook", wv.selectedTextSnapshot()) | |
| 514 | 512 | } | |
| 515 | 513 | ||
| 516 | 514 | func TestGetDownloadHandler_EnabledWhenEngineConfigured(t *testing.T) { | |
| @@ -500,17 +500,15 @@ func TestOptionalHandlersAreAlwaysEnabled(t *testing.T) { | |||||
| 500 | // AudioHandler is always enabled (required for media decoding). | 500 | // AudioHandler is always enabled (required for media decoding). | ||
| 501 | require.Same(t, h, h.GetAudioHandler()) | 501 | require.Same(t, h, h.GetAudioHandler()) | ||
| 502 | require.Same(t, h, h.GetContextMenuHandler()) | 502 | require.Same(t, h, h.GetContextMenuHandler()) | ||
| 503 | - | require.NotSame(t, h, h.GetRenderHandler()) | 503 | + | require.Nil(t, h.GetRenderHandler()) |
| 504 | } | 504 | } | ||
| 505 | 505 | ||||
| 506 | - | func TestGetRenderHandlerPreservesTextSelectionCallback(t *testing.T) { | 506 | + | func TestRenderTextSelectionHookPreservesWebViewState(t *testing.T) { |
| 507 | wv := &WebView{ctx: context.Background()} | 507 | wv := &WebView{ctx: context.Background()} | ||
| 508 | - | h := &handlerSet{wv: wv} | |||
| 509 | 508 | ||||
| 510 | - | rh := h.GetRenderHandler() | 509 | + | handleRenderTextSelectionChanged(wv, "selected via hook") |
| 511 | - | rh.OnTextSelectionChanged(nil, "selected via client", nil) | |||
| 512 | 510 | ||||
| 513 | - | require.Equal(t, "selected via client", wv.selectedTextSnapshot()) | 511 | + | require.Equal(t, "selected via hook", wv.selectedTextSnapshot()) |
| 514 | } | 512 | } | ||
| 515 | 513 | ||||
| 516 | func TestGetDownloadHandler_EnabledWhenEngineConfigured(t *testing.T) { | 514 | func TestGetDownloadHandler_EnabledWhenEngineConfigured(t *testing.T) { | ||