aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuuxel <6596629+Juuxel@users.noreply.github.com>2020-05-21 01:50:04 +0300
committerJuuxel <6596629+Juuxel@users.noreply.github.com>2020-05-21 01:50:04 +0300
commitb83efb7712a93fed737ba856685ab9ecff1aa17e (patch)
treed115dbc0592dc5cb3f7e508d168daa0a05fedbc2
parentf75430ba4fff52c1363029f14578403e4643ebbc (diff)
downloadLibGui-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.java38
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;
}