[Fix] Hover did no longer change
This commit is contained in:
parent
0a940d3e20
commit
8c0372e4bc
9 changed files with 96 additions and 28 deletions
|
@ -39,4 +39,9 @@ public class ColorPicker extends HorizontalStack {
|
||||||
public int getContentHeight() {
|
public int getContentHeight() {
|
||||||
return Math.max(swatch.getContentHeight(), input.getContentHeight());
|
return Math.max(swatch.getContentHeight(), input.getContentHeight());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean changeFocus(boolean bl) {
|
||||||
|
return input.changeFocus(bl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,4 +24,9 @@ public class Empty extends LayoutComponent<NullRenderer, Empty> {
|
||||||
public int getContentHeight() {
|
public int getContentHeight() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isMouseOver(double d, double e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -112,4 +112,9 @@ public class Image extends CustomRenderComponent {
|
||||||
size.height()
|
size.height()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isMouseOver(double d, double e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,4 +83,9 @@ public class Input extends AbstractVanillaComponent<EditBox, Input> {
|
||||||
protected Component contentComponent() {
|
protected Component contentComponent() {
|
||||||
return Component.literal(initialValue + "..");
|
return Component.literal(initialValue + "..");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean changeFocus(boolean bl) {
|
||||||
|
return super.changeFocus(bl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,4 +97,9 @@ public class MultiLineText extends LayoutComponent<MultiLineText.MultiLineTextRe
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isMouseOver(double d, double e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -102,6 +102,10 @@ public class Panel implements ComponentWithBounds, RelativeContainerEventHandler
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isMouseOver(double x, double y) {
|
public boolean isMouseOver(double x, double y) {
|
||||||
|
if (child != null) {
|
||||||
|
if (child.isMouseOver(x - bounds.left, y - bounds.top))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
return bounds.contains(x, y);
|
return bounds.contains(x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -74,7 +74,10 @@ public class Text extends LayoutComponent<Text.TextRenderer, Text> {
|
||||||
GuiComponent.drawString(stack, getFont(), linkedComponent.text, left, top, linkedComponent.color);
|
GuiComponent.drawString(stack, getFont(), linkedComponent.text, left, top, linkedComponent.color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isMouseOver(double d, double e) {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,12 +9,17 @@ import org.betterx.ui.layout.values.Value;
|
||||||
import org.betterx.ui.vanilla.VanillaScrollerRenderer;
|
import org.betterx.ui.vanilla.VanillaScrollerRenderer;
|
||||||
|
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
|
import net.minecraft.client.gui.components.events.ContainerEventHandler;
|
||||||
|
import net.minecraft.client.gui.components.events.GuiEventListener;
|
||||||
|
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
@Environment(EnvType.CLIENT)
|
@Environment(EnvType.CLIENT)
|
||||||
public class VerticalScroll<R extends ComponentRenderer, RS extends ScrollerRenderer> extends LayoutComponent<R, VerticalScroll<R, RS>> {
|
public class VerticalScroll<R extends ComponentRenderer, RS extends ScrollerRenderer> extends LayoutComponent<R, VerticalScroll<R, RS>> implements ContainerEventHandler {
|
||||||
protected LayoutComponent<?, ?> child;
|
protected LayoutComponent<?, ?> child;
|
||||||
protected final RS scrollerRenderer;
|
protected final RS scrollerRenderer;
|
||||||
protected Rectangle viewBounds;
|
protected Rectangle viewBounds;
|
||||||
|
@ -53,8 +58,11 @@ public class VerticalScroll<R extends ComponentRenderer, RS extends ScrollerRend
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<LayoutComponent<?, ?>> children = List.of();
|
||||||
|
|
||||||
public void setChild(LayoutComponent<?, ?> c) {
|
public void setChild(LayoutComponent<?, ?> c) {
|
||||||
this.child = c;
|
this.child = c;
|
||||||
|
children = List.of(child);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -132,7 +140,7 @@ public class VerticalScroll<R extends ComponentRenderer, RS extends ScrollerRend
|
||||||
poseStack.translate(0, scrollerOffset(), 0);
|
poseStack.translate(0, scrollerOffset(), 0);
|
||||||
setClippingRect(clipRect);
|
setClippingRect(clipRect);
|
||||||
child.render(
|
child.render(
|
||||||
poseStack, mouseX, mouseY, deltaTicks,
|
poseStack, mouseX, mouseY - scrollerOffset(), deltaTicks,
|
||||||
renderBounds.movedBy(0, scrollerOffset(), scrollerWidth(), 0),
|
renderBounds.movedBy(0, scrollerOffset(), scrollerWidth(), 0),
|
||||||
clipRect
|
clipRect
|
||||||
);
|
);
|
||||||
|
@ -177,7 +185,12 @@ public class VerticalScroll<R extends ComponentRenderer, RS extends ScrollerRend
|
||||||
@Override
|
@Override
|
||||||
public void mouseMoved(double x, double y) {
|
public void mouseMoved(double x, double y) {
|
||||||
if (child != null && relativeBounds.contains(x, y))
|
if (child != null && relativeBounds.contains(x, y))
|
||||||
child.mouseMoved(x - relativeBounds.left, y - relativeBounds.top - scrollerOffset());
|
ContainerEventHandler.super.mouseMoved(x - relativeBounds.left, y - relativeBounds.top - scrollerOffset());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<? extends GuiEventListener> children() {
|
||||||
|
return children;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -192,7 +205,11 @@ public class VerticalScroll<R extends ComponentRenderer, RS extends ScrollerRend
|
||||||
}
|
}
|
||||||
|
|
||||||
if (child != null && relativeBounds.contains(x, y))
|
if (child != null && relativeBounds.contains(x, y))
|
||||||
return child.mouseClicked(x - relativeBounds.left, y - relativeBounds.top - scrollerOffset(), button);
|
return ContainerEventHandler.super.mouseClicked(
|
||||||
|
x - relativeBounds.left,
|
||||||
|
y - relativeBounds.top - scrollerOffset(),
|
||||||
|
button
|
||||||
|
);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -200,7 +217,11 @@ public class VerticalScroll<R extends ComponentRenderer, RS extends ScrollerRend
|
||||||
public boolean mouseReleased(double x, double y, int button) {
|
public boolean mouseReleased(double x, double y, int button) {
|
||||||
mouseDown = false;
|
mouseDown = false;
|
||||||
if (child != null && relativeBounds.contains(x, y))
|
if (child != null && relativeBounds.contains(x, y))
|
||||||
return child.mouseReleased(x - relativeBounds.left, y - relativeBounds.top - scrollerOffset(), button);
|
return ContainerEventHandler.super.mouseReleased(
|
||||||
|
x - relativeBounds.left,
|
||||||
|
y - relativeBounds.top - scrollerOffset(),
|
||||||
|
button
|
||||||
|
);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -212,7 +233,7 @@ public class VerticalScroll<R extends ComponentRenderer, RS extends ScrollerRend
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (child != null && relativeBounds.contains(x, y))
|
if (child != null && relativeBounds.contains(x, y))
|
||||||
return child.mouseDragged(
|
return ContainerEventHandler.super.mouseDragged(
|
||||||
x - relativeBounds.left,
|
x - relativeBounds.left,
|
||||||
y - relativeBounds.top - scrollerOffset(),
|
y - relativeBounds.top - scrollerOffset(),
|
||||||
button,
|
button,
|
||||||
|
@ -227,7 +248,11 @@ public class VerticalScroll<R extends ComponentRenderer, RS extends ScrollerRend
|
||||||
public boolean mouseScrolled(double x, double y, double delta) {
|
public boolean mouseScrolled(double x, double y, double delta) {
|
||||||
boolean didCapture = false;
|
boolean didCapture = false;
|
||||||
if (child != null && relativeBounds.contains(x, y)) {
|
if (child != null && relativeBounds.contains(x, y)) {
|
||||||
didCapture = child.mouseScrolled(x - relativeBounds.left, y - relativeBounds.top - scrollerOffset(), delta);
|
didCapture = ContainerEventHandler.super.mouseScrolled(
|
||||||
|
x - relativeBounds.left,
|
||||||
|
y - relativeBounds.top - scrollerOffset(),
|
||||||
|
delta
|
||||||
|
);
|
||||||
}
|
}
|
||||||
if (!didCapture) {
|
if (!didCapture) {
|
||||||
scrollerY = scrollerY + delta;
|
scrollerY = scrollerY + delta;
|
||||||
|
@ -236,36 +261,37 @@ public class VerticalScroll<R extends ComponentRenderer, RS extends ScrollerRend
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean keyPressed(int i, int j, int k) {
|
GuiEventListener focused;
|
||||||
if (child != null)
|
|
||||||
return child.keyPressed(i, j, k);
|
@Nullable
|
||||||
return false;
|
public GuiEventListener getFocused() {
|
||||||
|
return focused;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public void setFocused(@Nullable GuiEventListener guiEventListener) {
|
||||||
public boolean keyReleased(int i, int j, int k) {
|
focused = guiEventListener;
|
||||||
if (child != null)
|
|
||||||
return child.keyReleased(i, j, k);
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
boolean dragging;
|
||||||
public boolean charTyped(char c, int i) {
|
|
||||||
if (child != null)
|
public boolean isDragging() {
|
||||||
return child.charTyped(c, i);
|
return this.dragging;
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public void setDragging(boolean bl) {
|
||||||
public boolean changeFocus(boolean bl) {
|
dragging = bl;
|
||||||
if (child != null)
|
|
||||||
return child.changeFocus(bl);
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isMouseOver(double x, double y) {
|
public boolean isMouseOver(double x, double y) {
|
||||||
|
if (child != null) {
|
||||||
|
if (child.isMouseOver(x - relativeBounds.left, y - relativeBounds.top - scrollerOffset()))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
return relativeBounds.contains(x, y);
|
return relativeBounds.contains(x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,5 +38,15 @@ public interface RelativeContainerEventHandler extends ContainerEventHandler {
|
||||||
Rectangle r = getInputBounds();
|
Rectangle r = getInputBounds();
|
||||||
return ContainerEventHandler.super.mouseScrolled(d - r.left, e - r.top, f);
|
return ContainerEventHandler.super.mouseScrolled(d - r.left, e - r.top, f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default boolean isMouseOver(double x, double y) {
|
||||||
|
Rectangle r = getInputBounds();
|
||||||
|
boolean res = false;
|
||||||
|
for (GuiEventListener c : children()) {
|
||||||
|
res |= c.isMouseOver(x - r.left, y - r.top);
|
||||||
|
}
|
||||||
|
|
||||||
|
return res || r.contains(x, y);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue