Skip to content

Commit

Permalink
Item/Row renderers: clarify custom hit test check for focusable objects
Browse files Browse the repository at this point in the history
  • Loading branch information
joshtynjala committed Mar 7, 2024
1 parent d37c0dd commit 676d6e8
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 16 deletions.
13 changes: 6 additions & 7 deletions src/feathers/controls/dataRenderers/GridViewRowRenderer.hx
Original file line number Diff line number Diff line change
Expand Up @@ -861,16 +861,15 @@ class GridViewRowRenderer extends LayoutGroup implements ITriggerView implements
}

private function customHitTest(stageX:Float, stageY:Float):Bool {
var pointerTargetContainer = this;
if (pointerTargetContainer.stage == null) {
if (this.stage == null) {
return false;
}
if (pointerTargetContainer.mouseChildren) {
var objects = pointerTargetContainer.stage.getObjectsUnderPoint(new Point(stageX, stageY));
if (this.mouseChildren) {
var objects = this.stage.getObjectsUnderPoint(new Point(stageX, stageY));
if (objects.length > 0) {
var lastObject = objects[objects.length - 1];
if (pointerTargetContainer.contains(lastObject)) {
while (lastObject != null && lastObject != pointerTargetContainer) {
if (this.contains(lastObject)) {
while (lastObject != null && lastObject != this) {
if ((lastObject is InteractiveObject)) {
var interactive:InteractiveObject = cast lastObject;
if (!interactive.mouseEnabled) {
Expand All @@ -880,7 +879,7 @@ class GridViewRowRenderer extends LayoutGroup implements ITriggerView implements
}
if ((lastObject is IFocusObject)) {
var focusable:IFocusObject = cast lastObject;
if (focusable.parent != pointerTargetContainer && focusable.focusEnabled) {
if (focusable.parent != this && focusable.focusEnabled) {
return false;
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/feathers/controls/dataRenderers/ItemRenderer.hx
Original file line number Diff line number Diff line change
Expand Up @@ -650,7 +650,8 @@ class ItemRenderer extends ToggleButton implements IFocusContainer implements IL
}
if ((lastObject is IFocusObject)) {
var focusable:IFocusObject = cast lastObject;
if (focusable.parent != this._pointerTarget && focusable.focusEnabled) {
// this check is meant to use _pointerTarget and not pointerTargetContainer!
if ((this._pointerTarget == null || focusable.parent != this._pointerTarget) && focusable.focusEnabled) {
return false;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,8 @@ class LayoutGroupItemRenderer extends LayoutGroup implements IStateContext<Toggl
}
if ((lastObject is IFocusObject)) {
var focusable:IFocusObject = cast lastObject;
if (focusable.parent != this._pointerTarget && focusable.focusEnabled) {
// this check is meant to use _pointerTarget and not pointerTargetContainer!
if ((this._pointerTarget == null || focusable.parent != this._pointerTarget) && focusable.focusEnabled) {
return false;
}
}
Expand Down
13 changes: 6 additions & 7 deletions src/feathers/controls/dataRenderers/TreeGridViewRowRenderer.hx
Original file line number Diff line number Diff line change
Expand Up @@ -1017,16 +1017,15 @@ class TreeGridViewRowRenderer extends LayoutGroup implements ITriggerView implem
}

private function customHitTest(stageX:Float, stageY:Float):Bool {
var pointerTargetContainer = this;
if (pointerTargetContainer.stage == null) {
if (this.stage == null) {
return false;
}
if (pointerTargetContainer.mouseChildren) {
var objects = pointerTargetContainer.stage.getObjectsUnderPoint(new Point(stageX, stageY));
if (this.mouseChildren) {
var objects = this.stage.getObjectsUnderPoint(new Point(stageX, stageY));
if (objects.length > 0) {
var lastObject = objects[objects.length - 1];
if (pointerTargetContainer.contains(lastObject)) {
while (lastObject != null && lastObject != pointerTargetContainer) {
if (this.contains(lastObject)) {
while (lastObject != null && lastObject != this) {
if ((lastObject is InteractiveObject)) {
var interactive:InteractiveObject = cast lastObject;
if (!interactive.mouseEnabled) {
Expand All @@ -1036,7 +1035,7 @@ class TreeGridViewRowRenderer extends LayoutGroup implements ITriggerView implem
}
if ((lastObject is IFocusObject)) {
var focusable:IFocusObject = cast lastObject;
if (focusable.parent != pointerTargetContainer && focusable.focusEnabled) {
if (focusable.parent != this && focusable.focusEnabled) {
return false;
}
}
Expand Down

0 comments on commit 676d6e8

Please sign in to comment.