Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 16 additions & 2 deletions src/main/java/gregtech/api/gui/widgets/ScrollableListWidget.java
Original file line number Diff line number Diff line change
Expand Up @@ -107,20 +107,34 @@ public void drawInBackground(int mouseX, int mouseY, IRenderContext context) {
super.drawInBackground(finalMouseX, finalMouseY, context));
}

@Override
public boolean isWidgetClickable(final Widget widget) {
if (!super.isWidgetClickable(widget)) {
return false;
}
return isBoxInsideScissor(widget.toRectangleBox());
return isWidgetOverlapsScissor(widget);
}

private boolean isPositionInsideScissor(int mouseX, int mouseY) {
return isMouseOverElement(mouseX, mouseY) && !isOnScrollPane(mouseX, mouseY);
}

private boolean isWidgetOverlapsScissor(Widget widget) {
final Position position = widget.getPosition();
final Size size = widget.getSize();
final int x0 = position.x;
final int y0 = position.y;
final int x1 = position.x + size.width - 1;
final int y1 = position.y + size.height - 1;
return isPositionInsideScissor(x0, y0) ||
isPositionInsideScissor(x0, y1) ||
isPositionInsideScissor(x1, y0) ||
isPositionInsideScissor(x1, y1);
}

private boolean isBoxInsideScissor(Rectangle rectangle) {
return isPositionInsideScissor(rectangle.x, rectangle.y) &&
isPositionInsideScissor(rectangle.x + rectangle.width, rectangle.y + rectangle.height);
isPositionInsideScissor(rectangle.x + rectangle.width - 1, rectangle.y + rectangle.height - 1);
}

@Override
Expand Down