From e4422157ad983cfb11cbfc31df319b54445d2692 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Wed, 9 Feb 2022 11:04:27 +0800 Subject: [PATCH] [Mobile] Fix auto close for Add Basic Lands Dialog and Deck Chooser --- .../src/forge/deck/AddBasicLandsDialog.java | 4 +++- .../src/forge/deck/FDeckChooser.java | 1 + .../src/forge/toolbox/FComboBox.java | 17 +++++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/forge-gui-mobile/src/forge/deck/AddBasicLandsDialog.java b/forge-gui-mobile/src/forge/deck/AddBasicLandsDialog.java index c49254d4f3a..d3d124155e9 100644 --- a/forge-gui-mobile/src/forge/deck/AddBasicLandsDialog.java +++ b/forge-gui-mobile/src/forge/deck/AddBasicLandsDialog.java @@ -128,6 +128,7 @@ public class AddBasicLandsDialog extends FDialog { lblDeckInfo.setFont(FSkinFont.get(12)); cbLandSet.setFont(lblLandSet.getFont()); + cbLandSet.setAutoClose(false); cbLandSet.setChangedHandler(new FEventHandler() { @Override public void handleEvent(FEvent e) { @@ -251,7 +252,8 @@ public class AddBasicLandsDialog extends FDialog { //layout land set combo box float comboBoxHeight = cbLandSet.getHeight(); lblLandSet.setBounds(x, y, lblLandSet.getAutoSizeBounds().width, comboBoxHeight); - cbLandSet.setBounds(x + lblLandSet.getWidth(), y, w - lblLandSet.getWidth(), comboBoxHeight); + y+= comboBoxHeight; + cbLandSet.setBounds(x, y, w, comboBoxHeight); //layout card panel scroller y += comboBoxHeight + padding; diff --git a/forge-gui-mobile/src/forge/deck/FDeckChooser.java b/forge-gui-mobile/src/forge/deck/FDeckChooser.java index 2100fc14530..e3c71ec8eef 100644 --- a/forge-gui-mobile/src/forge/deck/FDeckChooser.java +++ b/forge-gui-mobile/src/forge/deck/FDeckChooser.java @@ -520,6 +520,7 @@ public class FDeckChooser extends FScreen { if (cmbDeckTypes == null) { //initialize components with delayed initialization the first time this is populated cmbDeckTypes = new FComboBox<>(); + cmbDeckTypes.setAutoClose(false); switch (lstDecks.getGameType()) { case Constructed: case Gauntlet: diff --git a/forge-gui-mobile/src/forge/toolbox/FComboBox.java b/forge-gui-mobile/src/forge/toolbox/FComboBox.java index 4adcf772ffc..2be4c134f3b 100644 --- a/forge-gui-mobile/src/forge/toolbox/FComboBox.java +++ b/forge-gui-mobile/src/forge/toolbox/FComboBox.java @@ -19,6 +19,7 @@ public class FComboBox extends FTextField implements IComboBox { private String label = ""; private final DropDown dropDown = new DropDown(); private FEventHandler dropDownItemTap, dropDownChangeHandler; + private boolean autoClose = true; public FComboBox() { initialize(); @@ -38,6 +39,10 @@ public class FComboBox extends FTextField implements IComboBox { initialize(); } + public void setAutoClose(boolean autoClose) { + this.autoClose = autoClose; + } + private void initialize() { if (!items.isEmpty()) { setSelectedItem(items.get(0)); //select first item by default @@ -233,6 +238,18 @@ public class FComboBox extends FTextField implements IComboBox { } private class DropDown extends FDropDownMenu { + @Override + protected boolean autoHide() { + return autoClose; + } + + @Override + public boolean tap(float x, float y, int count) { + if (!autoClose) + hide(); + return super.tap(x, y, count); + } + @Override protected void buildMenu() { for (final T item : FComboBox.this.items) {