Path: blob/main/internal/components/hoverpopover/button.go
366 views
package hoverpopover12import (3"github.com/diamondburned/gotk4/pkg/glib/v2"4"github.com/diamondburned/gotk4/pkg/gtk/v4"5)67// PopoverButton extends a ToggleButton to show a popover when toggled.8type PopoverButton struct {9*gtk.ToggleButton10controller *PopoverController11}1213// NewPopoverButton creates a new PopoverButton.14func NewPopoverButton(initFn func(*gtk.Popover) bool) *PopoverButton {15b := &PopoverButton{ToggleButton: gtk.NewToggleButton()}16controller := NewPopoverController(b.ToggleButton, initFn)17b.ConnectClicked(func() {18if !b.Active() {19controller.Popdown()20return21}2223popover := controller.Popup()2425var closedSignal glib.SignalHandle26closedSignal = popover.ConnectClosed(func() {27b.SetActive(false)28if closedSignal != 0 {29popover.HandlerDisconnect(closedSignal)30closedSignal = 031}32})33})34return b35}363738