Fix hacked GTK3/GLFW crash by vendoring a patched sqweek/dialog
The built hacked binary segfaults on Linux the moment a native GTK3 dialog (file/folder browse) opens while a GLFW/OpenGL context is live: sqweek/dialog's Linux backend never calls XInitThreads() before gtk_init(), and GLFW's own X11 backend installs a process-wide Xlib error handler that collides with GTK's. Vendor a pinned copy of github.com/sqweek/dialog (New BSD) into modding/sqweek-dialog/ so it can be patched like every other vendored source here: sqweek-dialog-patches/01-xinitthreads.patch adds the missing XInitThreads() call, and hacked-patches/01-use-patched-dialog.patch adds a go.mod replace directive pointing hacked's own sqweek/dialog dependency at that local copy. build-hacked.sh now stages both hacked/ and sqweek-dialog/ into a scratch modding/build/ directory and applies their patch series before compiling, rather than building hacked/ in place; .gitignore picks up that new scratch directory. Also expand modding/README.md: number its existing sections and add a worked "Example: Editing a message" walkthrough covering Static World Data, the Messages window's clipboard-only text editing, saving the Mod Location, and the absolute-path requirement for run.sh's mod-folder argument.
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
# dialog
|
||||
Simple cross-platform dialog API for go-lang
|
||||
|
||||
# examples
|
||||
ok := dialog.Message("%s", "Do you want to continue?").Title("Are you sure?").YesNo()
|
||||
|
||||
Creates a dialog box titled "Are you sure?", containing the message "Do you want to continue?",
|
||||
a "Yes" button and a "No" button. Returns true iff the dialog could be displayed and the user
|
||||
pressed the "Yes" button.
|
||||
|
||||
filename, err := dialog.File().Filter("Mp3 audio file", "mp3").Load()
|
||||
|
||||
Creates a file selection dialog allowing the user to select a .mp3 file. The absolute path of
|
||||
the file is returned, unless an error is encountered or the user cancels/closes the dialog.
|
||||
In the latter case, `filename` will be the empty string and `err` will equal `dialog.Cancelled`.
|
||||
|
||||
filename, err := dialog.File().Filter("XML files", "xml").Title("Export to XML").Save()
|
||||
|
||||
Asks the user for a filename to write data into. If the user selects a file which already exists,
|
||||
an additional dialog is spawned to confirm they want to overwrite the existing file.
|
||||
|
||||
directory, err := dialog.Directory().Title("Load images").Browse()
|
||||
|
||||
Asks the user for a directory.
|
||||
|
||||
# platform details
|
||||
* OSX: uses Cocoa's NSAlert/NSSavePanel/NSOpenPanel classes
|
||||
* Win32: uses MessageBox/GetOpenFileName/GetSaveFileName (via package github.com/TheTitanrain/w32)
|
||||
* Linux: uses Gtk's MessageDialog/FileChooserDialog (via cgo; requires gtk3 development packages)
|
||||
|
||||
# build
|
||||
```
|
||||
go mod download
|
||||
go build
|
||||
```
|
||||
Reference in New Issue
Block a user