fix tap events for gridview
This commit is contained in:
@@ -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))
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user