Fix crash on launch on macOS

This commit is contained in:
Xpl0itU 2023-08-11 14:57:27 +02:00
parent 9bb15fce53
commit 6943cd569e
3 changed files with 20 additions and 14 deletions

View file

@ -7,6 +7,8 @@ import (
"runtime" "runtime"
wiiudownloader "github.com/Xpl0itU/WiiUDownloader" wiiudownloader "github.com/Xpl0itU/WiiUDownloader"
"github.com/gotk3/gotk3/glib"
"github.com/gotk3/gotk3/gtk"
) )
func main() { func main() {
@ -31,8 +33,18 @@ func main() {
os.Setenv("GSETTINGS_SCHEMA_DIR", filePath) os.Setenv("GSETTINGS_SCHEMA_DIR", filePath)
} }
} }
win := NewMainWindow(wiiudownloader.GetTitleEntries(wiiudownloader.TITLE_CATEGORY_GAME), logger) gtk.Init(nil)
win.ShowAll() app, err := gtk.ApplicationNew("io.github.xpl0itu.wiiudownloader", glib.APPLICATION_FLAGS_NONE)
Main() if err != nil {
logger.Fatal(err.Error())
}
app.Connect("activate", func() {
win := NewMainWindow(app, wiiudownloader.GetTitleEntries(wiiudownloader.TITLE_CATEGORY_GAME), logger)
win.ShowAll()
app.AddWindow(win.window)
app.GetActiveWindow().Show()
})
app.Run(nil)
app.Quit()
} }

View file

@ -26,7 +26,7 @@ const (
) )
type MainWindow struct { type MainWindow struct {
window *gtk.Window window *gtk.ApplicationWindow
treeView *gtk.TreeView treeView *gtk.TreeView
titles []wiiudownloader.TitleEntry titles []wiiudownloader.TitleEntry
searchEntry *gtk.Entry searchEntry *gtk.Entry
@ -41,16 +41,14 @@ type MainWindow struct {
lastSearchText string lastSearchText string
} }
func NewMainWindow(entries []wiiudownloader.TitleEntry, logger *wiiudownloader.Logger) *MainWindow { func NewMainWindow(app *gtk.Application, entries []wiiudownloader.TitleEntry, logger *wiiudownloader.Logger) *MainWindow {
gtk.Init(nil)
gSettings, err := gtk.SettingsGetDefault() gSettings, err := gtk.SettingsGetDefault()
if err != nil { if err != nil {
logger.Error(err.Error()) logger.Error(err.Error())
} }
gSettings.SetProperty("gtk-application-prefer-dark-theme", isDarkMode()) gSettings.SetProperty("gtk-application-prefer-dark-theme", isDarkMode())
win, err := gtk.WindowNew(gtk.WINDOW_TOPLEVEL) win, err := gtk.ApplicationWindowNew(app)
if err != nil { if err != nil {
logger.Fatal("Unable to create window:", err) logger.Fatal("Unable to create window:", err)
} }
@ -425,7 +423,7 @@ func (mw *MainWindow) ShowAll() {
mw.window.Add(mainvBox) mw.window.Add(mainvBox)
mw.window.ShowAll() mainvBox.ShowAll()
} }
func (mw *MainWindow) onRegionChange(button *gtk.CheckButton, region uint8) { func (mw *MainWindow) onRegionChange(button *gtk.CheckButton, region uint8) {
@ -791,7 +789,3 @@ queueProcessingLoop:
return nil return nil
} }
func Main() {
gtk.Main()
}

View file

@ -33,7 +33,7 @@ type ProgressWindow struct {
cancelled bool cancelled bool
} }
func CreateProgressWindow(parent *gtk.Window) (ProgressWindow, error) { func CreateProgressWindow(parent *gtk.ApplicationWindow) (ProgressWindow, error) {
win, err := gtk.WindowNew(gtk.WINDOW_TOPLEVEL) win, err := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)
if err != nil { if err != nil {
return ProgressWindow{}, err return ProgressWindow{}, err