diff --git a/forge-gui-mobile/src/forge/screens/match/MatchScreen.java b/forge-gui-mobile/src/forge/screens/match/MatchScreen.java index 10a89f73546..5b447732685 100644 --- a/forge-gui-mobile/src/forge/screens/match/MatchScreen.java +++ b/forge-gui-mobile/src/forge/screens/match/MatchScreen.java @@ -250,18 +250,26 @@ public class MatchScreen extends FScreen { //adjust scroll top to keep y position the same float newScrollHeight = getScrollHeight() - staticHeight; - float yAfter = y * newScrollHeight / oldScrollHeight; + float ratio = newScrollHeight / oldScrollHeight; + float yAfter = y * ratio; setScrollTop(oldScrollTop + yAfter - y); + //make scroll panes wide enough to support scrolling cards into view + zoom = newScrollHeight / (getHeight() - staticHeight); + for (FScrollPane scrollPane : horzScrollPanes.keySet()) { + float minScrollWidth = scrollPane.getWidth() * zoom; + if (scrollPane.getScrollWidth() < minScrollWidth) { + scrollPane.setScrollWidth(minScrollWidth); + } + } + //adjust scroll left of all horizontal scroll panes to keep x position the same float startX = x; for (Entry> entry : horzScrollPanes.entrySet()) { FScrollPane horzScrollPane = entry.getKey(); float oldScrollLeft = entry.getValue().getLeft(); x = startX + oldScrollLeft; - float oldScrollWidth = entry.getValue().getRight(); - float newScrollWidth = horzScrollPane.getScrollWidth(); - float xAfter = x * newScrollWidth / oldScrollWidth; + float xAfter = x * ratio; horzScrollPane.setScrollLeft(oldScrollLeft + xAfter - x); } diff --git a/forge-gui-mobile/src/forge/toolbox/FScrollPane.java b/forge-gui-mobile/src/forge/toolbox/FScrollPane.java index 47983374705..46213af1341 100644 --- a/forge-gui-mobile/src/forge/toolbox/FScrollPane.java +++ b/forge-gui-mobile/src/forge/toolbox/FScrollPane.java @@ -40,10 +40,18 @@ public abstract class FScrollPane extends FContainer { return scrollBounds.width; } + public void setScrollWidth(float scrollWidth0) { + scrollBounds.width = scrollWidth0; + } + public float getScrollHeight() { return scrollBounds.height; } + public void setScrollHeight(float scrollHeight0) { + scrollBounds.height = scrollHeight0; + } + public float getMaxScrollLeft() { return getScrollWidth() - getWidth(); }