func PopoverNew(relativeTo IWidget) (*Popover, error) {
	c := C.gtk_popover_new(relativeTo.toWidget())
	if c == nil {
		return nil, nilPtrErr
	}
	obj := &glib.Object{glib.ToGObject(unsafe.Pointer(c))}
	a := wrapPopover(obj)
	obj.RefSink()
	runtime.SetFinalizer(obj, (*glib.Object).Unref)
	return a, nil
}
PopoverNew is a wrapper around gtk_popover_new().
package gtk
import "C"
import (
	"github.com/conformal/gotk3/glib"
	"runtime"
	"unsafe"
)
func init() {
	tm := []glib.TypeMarshaler{
		{glib.Type(C.gtk_popover_get_type()), marshalPopover},
	}
	glib.RegisterGValueMarshalers(tm)
}
type Popover struct {
	Bin
}
func (v *Popover) native() *C.GtkPopover {
	if v == nil || v.GObject == nil {
		return nil
	}
	p := unsafe.Pointer(v.GObject)
	return C.toGtkPopover(p)
}
func marshalPopover(p uintptr) (interface{}, error) {
	c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
	obj := &glib.Object{glib.ToGObject(unsafe.Pointer(c))}
	return wrapPopover(obj), nil
}
func wrapPopover(obj *glib.Object) *Popover {
	return &Popover{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}
}