func (v *IconView) GetTooltipContext(x, y int, keyboardTip bool) (*TreeModel, *TreePath, *TreeIter) {
	var (
		cmodel *C.GtkTreeModel
		cpath  *C.GtkTreePath
		citer  *C.GtkTreeIter
		model  *TreeModel
		path   *TreePath
		iter   *TreeIter
	)

	px := C.gint(x)
	py := C.gint(y)
	if !gobool(C.gtk_icon_view_get_tooltip_context(v.native(),
		&px,
		&py,
		gbool(keyboardTip),
		&cmodel,
		&cpath,
		citer,
	)) {
		return nil, nil, nil
	}

	if cmodel != nil {
		model = wrapTreeModel(glib.Take(unsafe.Pointer(cmodel)))
	}

	if cpath != nil {
		path = &TreePath{cpath}
		runtime.SetFinalizer(path, (*TreePath).free)
	}

	if citer != nil {
		iter = &TreeIter{*citer}
		runtime.SetFinalizer(iter, (*TreeIter).free)
	}

	return model, path, iter
}
func (v *IconView) GetTooltipContext(x, y int, keyboardTip bool) (*TreeModel, *TreePath, *TreeIter) {
	var (
		cmodel *C.GtkTreeModel
		cpath  *C.GtkTreePath
		citer  *C.GtkTreeIter
		model  *TreeModel
		path   *TreePath
		iter   *TreeIter
	)

	px := C.gint(x)
	py := C.gint(y)
	if !gobool(C.gtk_icon_view_get_tooltip_context(v.native(),
		&px,
		&py,
		gbool(keyboardTip),
		&cmodel,
		&cpath,
		citer,
	)) {
		return nil, nil, nil
	}

	if cmodel != nil {
		model = wrapTreeModel(glib.Take(unsafe.Pointer(cmodel)))
	}

	if cpath != nil {
		path = &TreePath{cpath}
		runtime.SetFinalizer(path, (*TreePath).free)
	}

	if citer != nil {
		iter = &TreeIter{*citer}
		runtime.SetFinalizer(iter, (*TreeIter).free)
	}

	return model, path, iter
}
// GetTooltipContext is a wrapper around gtk_icon_view_get_tooltip_context().