Skip to content

Commit 90874a6

Browse files
RealSilverMoonbrachy84
authored andcommitted
Add verify before executing (#70)
(cherry picked from commit 15496be)
1 parent e8a0889 commit 90874a6

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

src/main/java/com/cleanroommc/modularui/screen/ModularPanel.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,7 @@ public boolean onMousePressed(int mouseButton) {
318318
return true;
319319
} else {
320320
for (LocatedWidget widget : this.hovering) {
321+
if (widget.getElement() == null || !widget.getElement().isValid()) continue;
321322
widget.applyMatrix(getContext());
322323
IWidget w = widget.getElement();
323324
if (w instanceof IDragResizeable resizeable && widget.getAdditionalHoverInfo() instanceof ResizeDragArea dragArea) {
@@ -423,6 +424,7 @@ public boolean onMouseRelease(int mouseButton) {
423424
boolean tryTap = this.mouse.tryTap(mouseButton);
424425
// first see if the clicked widget is still hovered and try to interact with it
425426
for (LocatedWidget widget : this.hovering) {
427+
if (widget.getElement() == null || !widget.getElement().isValid()) continue;
426428
if (this.mouse.isWidget(widget)) {
427429
if (widget.getElement() instanceof Interactable interactable &&
428430
onMouseRelease(mouseButton, tryTap, widget, interactable)) {
@@ -434,8 +436,8 @@ public boolean onMouseRelease(int mouseButton) {
434436
}
435437
// now try all other hovered
436438
for (LocatedWidget widget : this.hovering) {
437-
if (!this.mouse.isWidget(widget) && widget.getElement() instanceof Interactable interactable &&
438-
onMouseRelease(mouseButton, tryTap, widget, interactable)) {
439+
if (widget.getElement() == null || !widget.getElement().isValid()) continue;
440+
if (!this.mouse.isWidget(widget) && widget.getElement() instanceof Interactable interactable && onMouseRelease(mouseButton, tryTap, widget, interactable)) {
439441
return true;
440442
}
441443
}
@@ -484,6 +486,7 @@ public boolean onKeyPressed(char typedChar, int keyCode) {
484486
LocatedWidget pressed = null;
485487
boolean result = false;
486488
for (LocatedWidget widget : this.hovering) {
489+
if (widget.getElement() == null || !widget.getElement().isValid()) continue;
487490
if (widget.getElement() instanceof Interactable interactable) {
488491
widget.applyMatrix(getContext());
489492
Interactable.Result interactResult = interactable.onKeyPressed(typedChar, keyCode);
@@ -603,7 +606,8 @@ public boolean onMouseDrag(int mouseButton, long timeSinceClick) {
603606
if (this.mouse.held &&
604607
mouseButton == this.mouse.lastButton &&
605608
this.mouse.lastPressed != null &&
606-
this.mouse.lastPressed.getElement() instanceof Interactable interactable) {
609+
this.mouse.lastPressed.getElement() instanceof Interactable interactable &&
610+
this.mouse.lastPressed.getElement().isValid()) {
607611
this.mouse.lastPressed.applyMatrix(getContext());
608612
interactable.onMouseDrag(mouseButton, timeSinceClick);
609613
this.mouse.lastPressed.unapplyMatrix(getContext());
@@ -617,7 +621,7 @@ public boolean onMouseDrag(int mouseButton, long timeSinceClick) {
617621
private <T, W extends IWidget & IFocusedWidget & Interactable> T interactFocused(Function<W, T> function, T defaultValue) {
618622
LocatedWidget focused = this.getContext().getFocusedWidget();
619623
T result = defaultValue;
620-
if (focused.getElement() instanceof Interactable interactable) {
624+
if (focused.getElement() instanceof Interactable interactable && focused.getElement().isValid()) {
621625
focused.applyMatrix(getContext());
622626
result = function.apply((W) interactable);
623627
focused.unapplyMatrix(getContext());

0 commit comments

Comments
 (0)