summaryrefslogtreecommitdiff
path: root/sysdata_unix.go
diff options
context:
space:
mode:
Diffstat (limited to 'sysdata_unix.go')
-rw-r--r--sysdata_unix.go15
1 files changed, 15 insertions, 0 deletions
diff --git a/sysdata_unix.go b/sysdata_unix.go
index 363e3c8..3466a8a 100644
--- a/sysdata_unix.go
+++ b/sysdata_unix.go
@@ -18,12 +18,24 @@ type sysData struct {
type classData struct {
make func() *gtkWidget
setText func(widget *gtkWidget, text string)
+ // ...
+ signals map[string]func(*sysData) interface{}
}
var classTypes = [nctypes]*classData{
c_window: &classData{
make: gtk_window_new,
setText: gtk_window_set_title,
+ signals: map[string]func(*sysData) interface{}{
+ "delete-event": func(w *sysData) interface{} {
+ return func(*gtkWidget, *gdkEvent, gpointer) bool {
+ if w.event != nil {
+ w.event <- struct{}{}
+ }
+ return true // do not close the window
+ }
+ },
+ },
},
c_button: &classData{
// make: gtk_button_new,
@@ -57,6 +69,9 @@ println(s.widget)
uitask <- func() {
fixed := gtk_fixed_new()
gtk_container_add(s.widget, fixed)
+ for signal, generator := range ct.signals {
+ g_signal_connect(s.widget, signal, generator(s))
+ }
ret <- fixed
}
s.container = <-ret