diff options
Diffstat (limited to 'delegate_darwin.go')
| -rw-r--r-- | delegate_darwin.go | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/delegate_darwin.go b/delegate_darwin.go new file mode 100644 index 0000000..b1daece --- /dev/null +++ b/delegate_darwin.go @@ -0,0 +1,46 @@ +// 27 february 2014 + +package ui + +/* +This creates a class goAppDelegate that will be used as the delegate for /everything/. Specifically, it: + - runs uitask requests (uitask:) + - handles window close events (windowShouldClose:) + - handles window resize events (windowDidResize:) + - handles button click events (buttonClicked:) + - handles the application-global Quit event (such as from the Dock) (applicationShouldTerminate) +*/ + +// #include <stdlib.h> +// #include "objc_darwin.h" +import "C" + +var ( + appDelegate C.id +) + +func makeAppDelegate() { + appDelegate = C.makeAppDelegate() +} + +//export appDelegate_windowShouldClose +func appDelegate_windowShouldClose(win C.id) C.BOOL { + sysData := getSysData(win) + return toBOOL(sysData.close()) +} + +//export appDelegate_windowDidResize +func appDelegate_windowDidResize(win C.id) { + s := getSysData(win) + wincv := C.windowGetContentView(win) // we want the content view's size, not the window's + r := C.frame(wincv) + // (0,0) is the bottom left corner but this is handled in sysData.translateAllocationCoords() + s.resizeWindow(int(r.width), int(r.height)) + C.display(win) // redraw everything +} + +//export appDelegate_buttonClicked +func appDelegate_buttonClicked(button C.id) { + sysData := getSysData(button) + sysData.event() +} |
