| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- 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 container’s content. It does nothing.
- //
- // Implements: desktop.Hoverable
- func (o *OverlayContainer) MouseIn(*desktop.MouseEvent) {
- }
- // MouseMoved catches mouse-moved events not handled by the container’s content. It does nothing.
- //
- // Implements: desktop.Hoverable
- func (o *OverlayContainer) MouseMoved(*desktop.MouseEvent) {
- }
- // MouseOut catches mouse-out events not handled by the container’s 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 container’s content.
- // It performs the overlay container’s 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() {
- }
|