adam-gui/vendor/fyne.io/fyne/v2/internal/widget/overlay_container.go
2024-04-29 19:13:50 +02:00

101 lines
2.4 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package widget
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/driver/desktop"
)
var _ fyne.Widget = (*OverlayContainer)(nil)
var _ fyne.Tappable = (*OverlayContainer)(nil)
// OverlayContainer is a transparent widget containing one fyne.CanvasObject and meant to be used as overlay.
type OverlayContainer struct {
Base
Content fyne.CanvasObject
canvas fyne.Canvas
onDismiss func()
shown bool
}
// NewOverlayContainer creates an OverlayContainer.
func NewOverlayContainer(c fyne.CanvasObject, canvas fyne.Canvas, onDismiss func()) *OverlayContainer {
o := &OverlayContainer{canvas: canvas, Content: c, onDismiss: onDismiss}
o.ExtendBaseWidget(o)
return o
}
// CreateRenderer returns a new renderer for the overlay container.
//
// Implements: fyne.Widget
func (o *OverlayContainer) CreateRenderer() fyne.WidgetRenderer {
return &overlayRenderer{BaseRenderer{[]fyne.CanvasObject{o.Content}}, o}
}
// Hide hides the overlay container.
//
// Implements: fyne.Widget
func (o *OverlayContainer) Hide() {
if o.shown {
o.canvas.Overlays().Remove(o)
o.shown = false
}
o.Base.Hide()
}
// MouseIn catches mouse-in events not handled by the containers content. It does nothing.
//
// Implements: desktop.Hoverable
func (o *OverlayContainer) MouseIn(*desktop.MouseEvent) {
}
// MouseMoved catches mouse-moved events not handled by the containers content. It does nothing.
//
// Implements: desktop.Hoverable
func (o *OverlayContainer) MouseMoved(*desktop.MouseEvent) {
}
// MouseOut catches mouse-out events not handled by the containers content. It does nothing.
//
// Implements: desktop.Hoverable
func (o *OverlayContainer) MouseOut() {
}
// Show makes the overlay container visible.
//
// Implements: fyne.Widget
func (o *OverlayContainer) Show() {
if !o.shown {
o.canvas.Overlays().Add(o)
o.shown = true
}
o.Base.Show()
}
// Tapped catches tap events not handled by the containers content.
// It performs the overlay containers dismiss action.
//
// Implements: fyne.Tappable
func (o *OverlayContainer) Tapped(*fyne.PointEvent) {
if o.onDismiss != nil {
o.onDismiss()
}
}
type overlayRenderer struct {
BaseRenderer
o *OverlayContainer
}
var _ fyne.WidgetRenderer = (*overlayRenderer)(nil)
func (r *overlayRenderer) Layout(fyne.Size) {
}
func (r *overlayRenderer) MinSize() fyne.Size {
return r.o.canvas.Size()
}
func (r *overlayRenderer) Refresh() {
}