diff options
author | Juuxel <6596629+Juuxel@users.noreply.github.com> | 2020-05-21 01:50:04 +0300 |
---|---|---|
committer | Juuxel <6596629+Juuxel@users.noreply.github.com> | 2020-05-21 01:50:04 +0300 |
commit | b83efb7712a93fed737ba856685ab9ecff1aa17e (patch) | |
tree | d115dbc0592dc5cb3f7e508d168daa0a05fedbc2 | |
parent | f75430ba4fff52c1363029f14578403e4643ebbc (diff) | |
download | LibGui-b83efb7712a93fed737ba856685ab9ecff1aa17e.tar.gz LibGui-b83efb7712a93fed737ba856685ab9ecff1aa17e.tar.bz2 LibGui-b83efb7712a93fed737ba856685ab9ecff1aa17e.zip |
Add focusing support for scroll bars
Closes #57.
-rw-r--r-- | src/main/java/io/github/cottonmc/cotton/gui/widget/WScrollBar.java | 38 |
1 files changed, 33 insertions, 5 deletions
diff --git a/src/main/java/io/github/cottonmc/cotton/gui/widget/WScrollBar.java b/src/main/java/io/github/cottonmc/cotton/gui/widget/WScrollBar.java index ee17b48..3ed7e2d 100644 --- a/src/main/java/io/github/cottonmc/cotton/gui/widget/WScrollBar.java +++ b/src/main/java/io/github/cottonmc/cotton/gui/widget/WScrollBar.java @@ -80,20 +80,30 @@ public class WScrollBar extends WWidget { ScreenDrawing.drawBeveledPanel(x+1+getHandlePosition(), y+1, getHandleSize(), height-2, top, middle, bottom); if (isFocused()) { - drawBeveledOutline(x+1+getHandlePosition(), y+1, getHandleSize(), height-2, 0xFF_FFFFA7, 0xFF_C9CA71, 0xFF_8C8F39); + drawBeveledOutline(x+1+getHandlePosition(), y+1, getHandleSize(), height-2, 0xFF_FFFFA7, 0xFF_8C8F39); } } else { ScreenDrawing.drawBeveledPanel(x+1, y+1+getHandlePosition(), width-2, getHandleSize(), top, middle, bottom); if (isFocused()) { - drawBeveledOutline(x+1, y+1+getHandlePosition(), width-2, getHandleSize(), 0xFF_FFFFA7, 0xFF_C9CA71, 0xFF_8C8F39); + drawBeveledOutline(x+1, y+1+getHandlePosition(), width-2, getHandleSize(), 0xFF_FFFFA7, 0xFF_8C8F39); } } } - private static void drawBeveledOutline(int x, int y, int width, int height, int topleft, int center, int bottomright) { - ScreenDrawing.coloredRect(x, y, width - 1, 1, topleft); //Top shadow - ScreenDrawing.coloredRect(x, y + 1, 1, height - 2, topleft); //Left shadow + @Override + public boolean canResize() { + return true; + } + + @Override + public boolean canFocus() { + return true; + } + + private static void drawBeveledOutline(int x, int y, int width, int height, int topleft, int bottomright) { + ScreenDrawing.coloredRect(x, y, width, 1, topleft); //Top shadow + ScreenDrawing.coloredRect(x, y + 1, 1, height - 1, topleft); //Left shadow ScreenDrawing.coloredRect(x + width - 1, y + 1, 1, height - 1, bottomright); //Right hilight ScreenDrawing.coloredRect(x + 1, y + height - 1, width - 1, 1, bottomright); //Bottom hilight } @@ -157,6 +167,7 @@ public class WScrollBar extends WWidget { @Override public WWidget onMouseDown(int x, int y, int button) { //TODO: Clicking before or after the handle should jump instead of scrolling + requestFocus(); if (axis==Axis.HORIZONTAL) { anchor = x; @@ -185,6 +196,23 @@ public class WScrollBar extends WWidget { return this; } + @Override + public void onKeyPressed(int ch, int key, int modifiers) { + WAbstractSlider.Direction direction = axis == Axis.HORIZONTAL + ? WAbstractSlider.Direction.RIGHT + : WAbstractSlider.Direction.DOWN; + + if (WAbstractSlider.isIncreasingKey(ch, direction)) { + if (value < getMaxScrollValue()) { + value++; + } + } else if (WAbstractSlider.isDecreasingKey(ch, direction)) { + if (value > 0) { + value--; + } + } + } + public int getValue() { return value; } |