e410d82680
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.
21 lines
689 B
Go
21 lines
689 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/sqweek/dialog"
|
|
)
|
|
|
|
func main() {
|
|
/* Note that spawning a dialog from a non-graphical app like this doesn't
|
|
** quite work properly in OSX. The dialog appears fine, and mouse
|
|
** interaction works but keypresses go straight through the dialog.
|
|
** I'm guessing it has something to do with not having a main loop? */
|
|
dialog.Message("%s", "Please select a file").Title("Hello world!").Info()
|
|
file, err := dialog.File().Title("Save As").Filter("All Files", "*").Save()
|
|
fmt.Println(file)
|
|
fmt.Println("Error:", err)
|
|
dialog.Message("You chose file: %s", file).Title("Goodbye world!").Error()
|
|
dialog.Directory().Title("Now find a dir").Browse()
|
|
}
|