diff --git a/ui/browsing/albumpage.go b/ui/browsing/albumpage.go index 333b612..a21e51a 100644 --- a/ui/browsing/albumpage.go +++ b/ui/browsing/albumpage.go @@ -147,7 +147,7 @@ type AlbumPageHeader struct { func NewAlbumPageHeader(page *AlbumPage) *AlbumPageHeader { a := &AlbumPageHeader{page: page} a.ExtendBaseWidget(a) - a.cover = widgets.NewTappableImage(func() { go a.showPopUpCover() }) + a.cover = widgets.NewTappableImage(func(*fyne.PointEvent) { go a.showPopUpCover() }) a.cover.FillMode = canvas.ImageFillContain a.cover.SetMinSize(fyne.NewSize(225, 225)) diff --git a/ui/browsing/artistpage.go b/ui/browsing/artistpage.go index a38e306..cf31b1e 100644 --- a/ui/browsing/artistpage.go +++ b/ui/browsing/artistpage.go @@ -251,7 +251,7 @@ func NewArtistPageHeader(page *ArtistPage) *ArtistPageHeader { SizeName: theme.SizeNameHeadingText, } a.artistImage = widgets.NewImagePlaceholder(myTheme.ArtistIcon, 225) - a.artistImage.OnTapped = func() { + a.artistImage.OnTapped = func(*fyne.PointEvent) { if im := a.artistImage.Image(); im != nil { a.artistPage.contr.ShowPopUpImage(im) } diff --git a/ui/widgets/gridviewitem.go b/ui/widgets/gridviewitem.go index 909026a..1c91d84 100644 --- a/ui/widgets/gridviewitem.go +++ b/ui/widgets/gridviewitem.go @@ -17,8 +17,6 @@ import ( var _ fyne.Widget = (*GridViewItem)(nil) var _ fyne.Widget = (*coverImage)(nil) -var _ fyne.Tappable = (*coverImage)(nil) -var _ fyne.SecondaryTappable = (*coverImage)(nil) type coverImage struct { widget.BaseWidget @@ -32,12 +30,14 @@ type coverImage struct { func newCoverImage(placeholderResource fyne.Resource) *coverImage { c := &coverImage{} - c.ExtendBaseWidget(c) c.Im = NewImagePlaceholder(placeholderResource, 200) + c.Im.OnTapped = c.Tapped + c.Im.OnTappedSecondary = c.TappedSecondary c.Im.ScaleMode = canvas.ImageScaleFastest c.playbtn = &canvas.Image{FillMode: canvas.ImageFillContain, Resource: res.ResPlaybuttonPng} c.playbtn.SetMinSize(fyne.NewSize(60, 60)) c.playbtn.Hidden = true + c.ExtendBaseWidget(c) return c } @@ -93,7 +93,7 @@ func (a *coverImage) center() fyne.Position { } func (a *coverImage) SetImage(im image.Image) { - a.Im.SetImage(im, false) + a.Im.SetImage(im, true) } func isInside(origin fyne.Position, radius float32, point fyne.Position) bool { diff --git a/ui/widgets/imageplaceholder.go b/ui/widgets/imageplaceholder.go index a23e528..b113a0b 100644 --- a/ui/widgets/imageplaceholder.go +++ b/ui/widgets/imageplaceholder.go @@ -25,7 +25,8 @@ type ImagePlaceholder struct { border *myTheme.ThemedRectangle minSize float32 - OnTapped func() + OnTapped func(*fyne.PointEvent) + OnTappedSecondary func(*fyne.PointEvent) } func NewImagePlaceholder(centerIcon fyne.Resource, minSize float32) *ImagePlaceholder { @@ -35,6 +36,7 @@ func NewImagePlaceholder(centerIcon fyne.Resource, minSize float32) *ImagePlaceh i.iconImage.FillMode = canvas.ImageFillContain i.iconImage.SetMinSize(fyne.NewSize(minSize/4, minSize/4)) i.imageDisp = NewTappableImage(i.onTapped) + i.imageDisp.OnTappedSecondary = i.onTappedSecondary i.imageDisp.FillMode = canvas.ImageFillContain i.imageDisp.Hidden = true i.border = myTheme.NewThemedRectangle(theme.ColorNameBackground) @@ -66,9 +68,15 @@ func (i *ImagePlaceholder) Image() image.Image { return i.image } -func (i *ImagePlaceholder) onTapped() { +func (i *ImagePlaceholder) onTapped(e *fyne.PointEvent) { if i.OnTapped != nil { - i.OnTapped() + i.OnTapped(e) + } +} + +func (i *ImagePlaceholder) onTappedSecondary(e *fyne.PointEvent) { + if i.OnTappedSecondary != nil { + i.OnTappedSecondary(e) } } diff --git a/ui/widgets/nowplayingcard.go b/ui/widgets/nowplayingcard.go index 7e057b0..b961e3a 100644 --- a/ui/widgets/nowplayingcard.go +++ b/ui/widgets/nowplayingcard.go @@ -55,7 +55,7 @@ func NewNowPlayingCard() *NowPlayingCard { return n } -func (n *NowPlayingCard) onShowCoverImage() { +func (n *NowPlayingCard) onShowCoverImage(*fyne.PointEvent) { if n.OnShowCoverImage != nil { n.OnShowCoverImage() } @@ -107,7 +107,7 @@ func (n *NowPlayingCard) OnTrackNameTapped(f func()) { n.trackName.OnTapped = f } -func (n *NowPlayingCard) showMenu(pos fyne.Position) { +func (n *NowPlayingCard) showMenu(e *fyne.PointEvent) { if n.menu == nil { ratingMenu := util.NewRatingSubmenu(n.onSetRating) m := fyne.NewMenu("", @@ -117,5 +117,5 @@ func (n *NowPlayingCard) showMenu(pos fyne.Position) { fyne.NewMenuItem("Add to playlist...", func() { n.onAddToPlaylist() })) n.menu = widget.NewPopUpMenu(m, fyne.CurrentApp().Driver().CanvasForObject(n)) } - n.menu.ShowAtPosition(pos) + n.menu.ShowAtPosition(e.AbsolutePosition) } diff --git a/ui/widgets/tappablewrappers.go b/ui/widgets/tappablewrappers.go index d7a4865..8f8df88 100644 --- a/ui/widgets/tappablewrappers.go +++ b/ui/widgets/tappablewrappers.go @@ -55,11 +55,11 @@ type TappableImage struct { canvas.Image DisableTapping bool - OnTapped func() - OnTappedSecondary func(pos fyne.Position) + OnTapped func(*fyne.PointEvent) + OnTappedSecondary func(*fyne.PointEvent) } -func NewTappableImage(onTapped func()) *TappableImage { +func NewTappableImage(onTapped func(*fyne.PointEvent)) *TappableImage { t := &TappableImage{OnTapped: onTapped} t.ExtendBaseWidget(t) return t @@ -92,15 +92,15 @@ func (t *TappableImage) Cursor() desktop.Cursor { return desktop.DefaultCursor } -func (t *TappableImage) Tapped(_ *fyne.PointEvent) { +func (t *TappableImage) Tapped(e *fyne.PointEvent) { if !t.DisableTapping && t.haveImage() && t.OnTapped != nil { - t.OnTapped() + t.OnTapped(e) } } func (t *TappableImage) TappedSecondary(e *fyne.PointEvent) { if !t.DisableTapping && t.haveImage() && t.OnTappedSecondary != nil { - t.OnTappedSecondary(e.AbsolutePosition) + t.OnTappedSecondary(e) } }