fix tap events for gridview
This commit is contained in:
@@ -147,7 +147,7 @@ type AlbumPageHeader struct {
|
|||||||
func NewAlbumPageHeader(page *AlbumPage) *AlbumPageHeader {
|
func NewAlbumPageHeader(page *AlbumPage) *AlbumPageHeader {
|
||||||
a := &AlbumPageHeader{page: page}
|
a := &AlbumPageHeader{page: page}
|
||||||
a.ExtendBaseWidget(a)
|
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.FillMode = canvas.ImageFillContain
|
||||||
a.cover.SetMinSize(fyne.NewSize(225, 225))
|
a.cover.SetMinSize(fyne.NewSize(225, 225))
|
||||||
|
|
||||||
|
|||||||
@@ -251,7 +251,7 @@ func NewArtistPageHeader(page *ArtistPage) *ArtistPageHeader {
|
|||||||
SizeName: theme.SizeNameHeadingText,
|
SizeName: theme.SizeNameHeadingText,
|
||||||
}
|
}
|
||||||
a.artistImage = widgets.NewImagePlaceholder(myTheme.ArtistIcon, 225)
|
a.artistImage = widgets.NewImagePlaceholder(myTheme.ArtistIcon, 225)
|
||||||
a.artistImage.OnTapped = func() {
|
a.artistImage.OnTapped = func(*fyne.PointEvent) {
|
||||||
if im := a.artistImage.Image(); im != nil {
|
if im := a.artistImage.Image(); im != nil {
|
||||||
a.artistPage.contr.ShowPopUpImage(im)
|
a.artistPage.contr.ShowPopUpImage(im)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,8 +17,6 @@ import (
|
|||||||
var _ fyne.Widget = (*GridViewItem)(nil)
|
var _ fyne.Widget = (*GridViewItem)(nil)
|
||||||
|
|
||||||
var _ fyne.Widget = (*coverImage)(nil)
|
var _ fyne.Widget = (*coverImage)(nil)
|
||||||
var _ fyne.Tappable = (*coverImage)(nil)
|
|
||||||
var _ fyne.SecondaryTappable = (*coverImage)(nil)
|
|
||||||
|
|
||||||
type coverImage struct {
|
type coverImage struct {
|
||||||
widget.BaseWidget
|
widget.BaseWidget
|
||||||
@@ -32,12 +30,14 @@ type coverImage struct {
|
|||||||
|
|
||||||
func newCoverImage(placeholderResource fyne.Resource) *coverImage {
|
func newCoverImage(placeholderResource fyne.Resource) *coverImage {
|
||||||
c := &coverImage{}
|
c := &coverImage{}
|
||||||
c.ExtendBaseWidget(c)
|
|
||||||
c.Im = NewImagePlaceholder(placeholderResource, 200)
|
c.Im = NewImagePlaceholder(placeholderResource, 200)
|
||||||
|
c.Im.OnTapped = c.Tapped
|
||||||
|
c.Im.OnTappedSecondary = c.TappedSecondary
|
||||||
c.Im.ScaleMode = canvas.ImageScaleFastest
|
c.Im.ScaleMode = canvas.ImageScaleFastest
|
||||||
c.playbtn = &canvas.Image{FillMode: canvas.ImageFillContain, Resource: res.ResPlaybuttonPng}
|
c.playbtn = &canvas.Image{FillMode: canvas.ImageFillContain, Resource: res.ResPlaybuttonPng}
|
||||||
c.playbtn.SetMinSize(fyne.NewSize(60, 60))
|
c.playbtn.SetMinSize(fyne.NewSize(60, 60))
|
||||||
c.playbtn.Hidden = true
|
c.playbtn.Hidden = true
|
||||||
|
c.ExtendBaseWidget(c)
|
||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@ func (a *coverImage) center() fyne.Position {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *coverImage) SetImage(im image.Image) {
|
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 {
|
func isInside(origin fyne.Position, radius float32, point fyne.Position) bool {
|
||||||
|
|||||||
@@ -25,7 +25,8 @@ type ImagePlaceholder struct {
|
|||||||
border *myTheme.ThemedRectangle
|
border *myTheme.ThemedRectangle
|
||||||
minSize float32
|
minSize float32
|
||||||
|
|
||||||
OnTapped func()
|
OnTapped func(*fyne.PointEvent)
|
||||||
|
OnTappedSecondary func(*fyne.PointEvent)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewImagePlaceholder(centerIcon fyne.Resource, minSize float32) *ImagePlaceholder {
|
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.FillMode = canvas.ImageFillContain
|
||||||
i.iconImage.SetMinSize(fyne.NewSize(minSize/4, minSize/4))
|
i.iconImage.SetMinSize(fyne.NewSize(minSize/4, minSize/4))
|
||||||
i.imageDisp = NewTappableImage(i.onTapped)
|
i.imageDisp = NewTappableImage(i.onTapped)
|
||||||
|
i.imageDisp.OnTappedSecondary = i.onTappedSecondary
|
||||||
i.imageDisp.FillMode = canvas.ImageFillContain
|
i.imageDisp.FillMode = canvas.ImageFillContain
|
||||||
i.imageDisp.Hidden = true
|
i.imageDisp.Hidden = true
|
||||||
i.border = myTheme.NewThemedRectangle(theme.ColorNameBackground)
|
i.border = myTheme.NewThemedRectangle(theme.ColorNameBackground)
|
||||||
@@ -66,9 +68,15 @@ func (i *ImagePlaceholder) Image() image.Image {
|
|||||||
return i.image
|
return i.image
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *ImagePlaceholder) onTapped() {
|
func (i *ImagePlaceholder) onTapped(e *fyne.PointEvent) {
|
||||||
if i.OnTapped != nil {
|
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
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *NowPlayingCard) onShowCoverImage() {
|
func (n *NowPlayingCard) onShowCoverImage(*fyne.PointEvent) {
|
||||||
if n.OnShowCoverImage != nil {
|
if n.OnShowCoverImage != nil {
|
||||||
n.OnShowCoverImage()
|
n.OnShowCoverImage()
|
||||||
}
|
}
|
||||||
@@ -107,7 +107,7 @@ func (n *NowPlayingCard) OnTrackNameTapped(f func()) {
|
|||||||
n.trackName.OnTapped = f
|
n.trackName.OnTapped = f
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *NowPlayingCard) showMenu(pos fyne.Position) {
|
func (n *NowPlayingCard) showMenu(e *fyne.PointEvent) {
|
||||||
if n.menu == nil {
|
if n.menu == nil {
|
||||||
ratingMenu := util.NewRatingSubmenu(n.onSetRating)
|
ratingMenu := util.NewRatingSubmenu(n.onSetRating)
|
||||||
m := fyne.NewMenu("",
|
m := fyne.NewMenu("",
|
||||||
@@ -117,5 +117,5 @@ func (n *NowPlayingCard) showMenu(pos fyne.Position) {
|
|||||||
fyne.NewMenuItem("Add to playlist...", func() { n.onAddToPlaylist() }))
|
fyne.NewMenuItem("Add to playlist...", func() { n.onAddToPlaylist() }))
|
||||||
n.menu = widget.NewPopUpMenu(m, fyne.CurrentApp().Driver().CanvasForObject(n))
|
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
|
canvas.Image
|
||||||
|
|
||||||
DisableTapping bool
|
DisableTapping bool
|
||||||
OnTapped func()
|
OnTapped func(*fyne.PointEvent)
|
||||||
OnTappedSecondary func(pos fyne.Position)
|
OnTappedSecondary func(*fyne.PointEvent)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewTappableImage(onTapped func()) *TappableImage {
|
func NewTappableImage(onTapped func(*fyne.PointEvent)) *TappableImage {
|
||||||
t := &TappableImage{OnTapped: onTapped}
|
t := &TappableImage{OnTapped: onTapped}
|
||||||
t.ExtendBaseWidget(t)
|
t.ExtendBaseWidget(t)
|
||||||
return t
|
return t
|
||||||
@@ -92,15 +92,15 @@ func (t *TappableImage) Cursor() desktop.Cursor {
|
|||||||
return desktop.DefaultCursor
|
return desktop.DefaultCursor
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *TappableImage) Tapped(_ *fyne.PointEvent) {
|
func (t *TappableImage) Tapped(e *fyne.PointEvent) {
|
||||||
if !t.DisableTapping && t.haveImage() && t.OnTapped != nil {
|
if !t.DisableTapping && t.haveImage() && t.OnTapped != nil {
|
||||||
t.OnTapped()
|
t.OnTapped(e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *TappableImage) TappedSecondary(e *fyne.PointEvent) {
|
func (t *TappableImage) TappedSecondary(e *fyne.PointEvent) {
|
||||||
if !t.DisableTapping && t.haveImage() && t.OnTappedSecondary != nil {
|
if !t.DisableTapping && t.haveImage() && t.OnTappedSecondary != nil {
|
||||||
t.OnTappedSecondary(e.AbsolutePosition)
|
t.OnTappedSecondary(e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user