fix tap events for gridview

This commit is contained in:
Drew Weymouth
2023-05-23 19:03:44 -07:00
parent 90936c086d
commit c5b8e0e3f7
6 changed files with 26 additions and 18 deletions
+1 -1
View File
@@ -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))
+1 -1
View File
@@ -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)
}
+4 -4
View File
@@ -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 {
+11 -3
View File
@@ -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)
}
}
+3 -3
View File
@@ -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)
}
+6 -6
View File
@@ -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)
}
}