X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Freader%2Ftui%2FTSimpleScrollableWindow.java;h=7b8f439ef38f2cf31e58391d9142862e182963ee;hb=1387a30ab59dbf4071f2c5e5e0e08ca98c75b726;hp=48a225e69eace660902a3823b7936ebaf290cc78;hpb=b6d172980d63ca3fa6880f152373de46deaaadcc;p=nikiroo-utils.git diff --git a/src/be/nikiroo/fanfix/reader/tui/TSimpleScrollableWindow.java b/src/be/nikiroo/fanfix/reader/tui/TSimpleScrollableWindow.java index 48a225e..7b8f439 100644 --- a/src/be/nikiroo/fanfix/reader/tui/TSimpleScrollableWindow.java +++ b/src/be/nikiroo/fanfix/reader/tui/TSimpleScrollableWindow.java @@ -6,6 +6,8 @@ import jexer.TPanel; import jexer.TScrollableWindow; import jexer.TVScroller; import jexer.TWidget; +import jexer.event.TMouseEvent; +import jexer.event.TResizeEvent; public class TSimpleScrollableWindow extends TScrollableWindow { protected TPanel mainPane; @@ -27,7 +29,7 @@ public class TSimpleScrollableWindow extends TScrollableWindow { int width, int height, int flags, int realWidth, int realHeight) { super(application, title, width, height, flags); - mainPane = new TPanel(this, 0, 0, width, 80) { + mainPane = new TPanel(this, 0, 0, 1, 1) { @Override public void draw() { for (TWidget children : mainPane.getChildren()) { @@ -41,10 +43,8 @@ public class TSimpleScrollableWindow extends TScrollableWindow { } }; - // // TODO: test - // for (int i = 0; i < 80; i++) { - // mainPane.addLabel("ligne " + i, i, i); - // } + mainPane.setWidth(getWidth()); + mainPane.setHeight(getHeight()); setRealWidth(realWidth); setRealHeight(realHeight); @@ -71,7 +71,7 @@ public class TSimpleScrollableWindow extends TScrollableWindow { // size/position will be fixed by placeScrollbars() hScroller = new THScroller(this, 0, 0, 10); } - hScroller.setRightValue(realWidth); + setRightValue(realWidth); } reflowData(); @@ -87,12 +87,20 @@ public class TSimpleScrollableWindow extends TScrollableWindow { // size/position will be fixed by placeScrollbars() vScroller = new TVScroller(this, 0, 0, 10); } - vScroller.setBottomValue(realHeight); + setBottomValue(realHeight); } reflowData(); } + @Override + public void onResize(TResizeEvent event) { + super.onResize(event); + mainPane.setWidth(getWidth()); + mainPane.setHeight(getHeight()); + mainPane.onResize(event); + } + @Override public void reflowData() { super.reflowData(); @@ -106,14 +114,37 @@ public class TSimpleScrollableWindow extends TScrollableWindow { } @Override - public void draw() { + public void onMouseUp(TMouseEvent mouse) { + super.onMouseUp(mouse); + + // TODO: why? this should already be done by the scrollers + // it could also mean we do it twice if, somehow, it sometime works... + int mrx = mouse.getX(); + int mry = mouse.getY(); + + int mx = mouse.getAbsoluteX(); + int my = mouse.getAbsoluteY(); + + if (vScroller != null) { + mouse.setX(mx - vScroller.getAbsoluteX()); + mouse.setY(my - vScroller.getAbsoluteY()); + vScroller.onMouseUp(mouse); + } + if (hScroller != null) { + mouse.setX(mx - hScroller.getAbsoluteX()); + mouse.setY(my - hScroller.getAbsoluteY()); + hScroller.onMouseUp(mouse); + } + + mouse.setX(mrx); + mouse.setY(mry); + // + if (prevHorizontal != getHorizontalValue() || prevVertical != getVerticalValue()) { prevHorizontal = getHorizontalValue(); prevVertical = getVerticalValue(); reflowData(); } - - super.draw(); } }