Skip to content

Commit

Permalink
Prevent drag and drop for hidden widgets
Browse files Browse the repository at this point in the history
We’re filtering out hidden target elements here instead of when collecting available drop targets, because a widget visibility can be changed while the drag and drop is in progress. If we only checked the visibility once when creating the drag and drop state, we would not be able to handle that use case.
  • Loading branch information
mat007 committed Dec 26, 2023
1 parent ee583ac commit db4b504
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions widget/dnd.go
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,9 @@ func (d *DragAndDrop) draggingState(srcX int, srcY int, dragWidget *Container, d
if !input.KeyPressed(ebiten.KeyEscape) && !d.dndStopped {
p := image.Point{x, y}
for _, target := range d.AvailableDropTargets {
if target.GetWidget().Visibility == Visibility_Hide {
continue
}
if p.In(target.GetWidget().Rect) && target.GetWidget().canDrop(args) {
droppable = true
element = target
Expand Down Expand Up @@ -280,6 +283,9 @@ func (d *DragAndDrop) droppingState(srcX int, srcY int, x int, y int, dragData i
p := image.Point{x, y}
dropSuccessful := false
for _, target := range d.AvailableDropTargets {
if target.GetWidget().Visibility == Visibility_Hide {
continue
}
if p.In(target.GetWidget().Rect) && target.GetWidget().canDrop(args) {
if target.GetWidget().drop != nil {
args.Target = target
Expand Down

0 comments on commit db4b504

Please sign in to comment.