gtk/gtk.go
func (v *TreeModelFilter) SetVisibleFunc(f TreeModelFilterVisibleFunc, userData ...interface{}) error {
	if len(userData) > 1 {
		return errors.New("userData len must be 0 or 1")
	}

	t := treeModelFilterVisibleFuncData{fn: f}
	if len(userData) > 0 {
		t.userData = userData[0]
	}
	treeModelVisibleFilterFuncRegistry.Lock()
	id := treeModelVisibleFilterFuncRegistry.next
	treeModelVisibleFilterFuncRegistry.next++
	treeModelVisibleFilterFuncRegistry.m[id] = t
	treeModelVisibleFilterFuncRegistry.Unlock()

	C._gtk_tree_model_filter_set_visible_func(v.native(), C.gpointer(uintptr(id)))
	return nil
}
func (v *TreeModelFilter) SetVisibleFunc(f TreeModelFilterVisibleFunc, userData ...interface{}) error {
	if len(userData) > 1 {
		return errors.New("userData len must be 0 or 1")
	}

	t := treeModelFilterVisibleFuncData{fn: f}
	if len(userData) > 0 {
		t.userData = userData[0]
	}
	treeModelVisibleFilterFuncRegistry.Lock()
	id := treeModelVisibleFilterFuncRegistry.next
	treeModelVisibleFilterFuncRegistry.next++
	treeModelVisibleFilterFuncRegistry.m[id] = t
	treeModelVisibleFilterFuncRegistry.Unlock()

	C._gtk_tree_model_filter_set_visible_func(v.native(), C.gpointer(uintptr(id)))
	return nil
}
// SetVisibleFunc is a wrapper around gtk_tree_model_filter_set_visible_func().