Skip to content

Commit fe5aede

Browse files
committed
refactor: Switch to PreferencesWindow instead of PreferencesDialog to prevent references to destroyed windows
Signed-off-by: Felicitas Pojtinger <[email protected]>
1 parent 0e8a24e commit fe5aede

File tree

5 files changed

+15
-169
lines changed

5 files changed

+15
-169
lines changed

internal/components/assistant.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -745,7 +745,8 @@ func OpenAssistantWindow(
745745
default:
746746
warningDialog.Close()
747747

748-
preferencesDialog.Present(&window.Window)
748+
preferencesDialog.SetTransientFor(&window.Window)
749+
preferencesDialog.Present()
749750
mpvCommandInput.GrabFocus()
750751
}
751752
})

internal/components/main_menu.go

+10-4
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func AddMainMenu(
2727
gateway *server.Gateway,
2828
getMagnetLink func() string,
2929
cancel func(),
30-
) (*adw.PreferencesDialog, *adw.EntryRow) {
30+
) (*adw.PreferencesWindow, *adw.EntryRow) {
3131
menuBuilder := gtk.NewBuilderFromResource(resources.GResourceMenuPath)
3232
menu := menuBuilder.GetObject("main-menu").Cast().(*gio.Menu)
3333

@@ -37,7 +37,7 @@ func AddMainMenu(
3737
aboutDialog.SetCopyright("© 2024 Felicitas Pojtinger")
3838

3939
preferencesBuilder := gtk.NewBuilderFromResource(resources.GResourcePreferencesPath)
40-
preferencesDialog := preferencesBuilder.GetObject("preferences-dialog").Cast().(*adw.PreferencesDialog)
40+
preferencesDialog := preferencesBuilder.GetObject("preferences-dialog").Cast().(*adw.PreferencesWindow)
4141
storageLocationInput := preferencesBuilder.GetObject("storage-location-input").Cast().(*gtk.Button)
4242
mpvCommandInput := preferencesBuilder.GetObject("mpv-command-input").Cast().(*adw.EntryRow)
4343
verbosityLevelInput := preferencesBuilder.GetObject("verbosity-level-input").Cast().(*adw.SpinRow)
@@ -54,7 +54,7 @@ func AddMainMenu(
5454

5555
preferencesAction := gio.NewSimpleAction(preferencesActionName, nil)
5656
preferencesAction.ConnectActivate(func(parameter *glib.Variant) {
57-
preferencesDialog.Present(&window.Window)
57+
preferencesDialog.Present()
5858
})
5959
app.SetAccelsForAction("win."+preferencesActionName, []string{`<Primary>comma`})
6060
window.AddAction(preferencesAction)
@@ -77,7 +77,11 @@ func AddMainMenu(
7777
window.AddAction(copyMagnetLinkAction)
7878
}
7979

80-
preferencesDialog.ConnectClosed(func() {
80+
preferencesDialog.SetTransientFor(&window.Window)
81+
preferencesDialog.ConnectCloseRequest(func() (ok bool) {
82+
preferencesDialog.Close()
83+
preferencesDialog.SetVisible(false)
84+
8185
if preferencesHaveChanged {
8286
settings.Apply()
8387

@@ -89,6 +93,8 @@ func AddMainMenu(
8993
}
9094

9195
preferencesHaveChanged = false
96+
97+
return ok
9298
})
9399

94100
syncSensitivityState := func() {

internal/resources/audiotracks.ui

-58
This file was deleted.

internal/resources/preferences.blp

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
using Gtk 4.0;
22
using Adw 1;
33

4-
Adw.PreferencesDialog preferences-dialog {
4+
Adw.PreferencesWindow preferences-dialog {
5+
modal: true;
6+
57
Adw.PreferencesPage {
68
title: _('Playback');
79
icon-name: 'multimedia-player-symbolic';

internal/resources/subtitles.ui

-105
This file was deleted.

0 commit comments

Comments
 (0)