diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlLayout.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlLayout.java index a9095e78f..671db9e3b 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlLayout.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/ControlLayout.java @@ -4,6 +4,8 @@ import static android.content.Context.INPUT_METHOD_SERVICE; import static net.kdt.pojavlaunch.MainActivity.mControlLayout; import static net.kdt.pojavlaunch.Tools.currentDisplayMetrics; +import static org.lwjgl.glfw.CallbackBridge.isGrabbing; + import android.annotation.SuppressLint; import android.content.Context; import android.os.Build; @@ -239,7 +241,7 @@ public class ControlLayout extends FrameLayout { mControlVisible = isVisible; for(ControlInterface button : getButtonChildren()){ - button.setVisible(isVisible); + button.setVisible(((button.getProperties().displayInGame && isGrabbing()) || (button.getProperties().displayInMenu && !isGrabbing())) && isVisible); } } diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlButton.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlButton.java index 8ee81a853..d99ee6305 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlButton.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlButton.java @@ -80,11 +80,6 @@ public class ControlButton extends TextView implements ControlInterface { setText(properties.name); } - public void setVisible(boolean isVisible){ - if(mProperties.isHideable) - setVisibility(isVisible ? VISIBLE : GONE); - } - @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlDrawer.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlDrawer.java index 8d63e8c42..cc022ea47 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlDrawer.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlDrawer.java @@ -2,6 +2,7 @@ package net.kdt.pojavlaunch.customcontrols.buttons; import android.annotation.SuppressLint; import android.view.MotionEvent; +import android.view.View; import android.view.ViewGroup; import android.widget.Toast; @@ -46,13 +47,14 @@ public class ControlDrawer extends ControlButton { } private void setControlButtonVisibility(ControlButton button, boolean isVisible){ - post(() -> button.setVisible(isVisible)); + button.getControlView().setVisibility(isVisible ? VISIBLE : GONE); } private void switchButtonVisibility(){ areButtonsVisible = !areButtonsVisible; + int visibility = areButtonsVisible ? VISIBLE : GONE; for(ControlButton button : buttons){ - button.setVisible(areButtonsVisible); + button.getControlView().setVisibility(visibility); } } @@ -129,7 +131,7 @@ public class ControlDrawer extends ControlButton { setVisibility(visibility); if(visibility == GONE || areButtonsVisible) { for(ControlSubButton button : buttons){ - button.setVisible(isVisible); + button.getControlView().setVisibility(isVisible ? VISIBLE : (!mProperties.isHideable && getVisibility() == GONE) ? VISIBLE : View.GONE); } } } diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlInterface.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlInterface.java index 08673a77a..d979ac95d 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlInterface.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlInterface.java @@ -1,5 +1,7 @@ package net.kdt.pojavlaunch.customcontrols.buttons; +import static android.view.View.GONE; +import static android.view.View.VISIBLE; import static net.kdt.pojavlaunch.prefs.LauncherPreferences.PREF_BUTTONSIZE; import android.annotation.SuppressLint; @@ -49,7 +51,10 @@ public interface ControlInterface extends View.OnLongClickListener, GrabListener */ void cloneButton(); - void setVisible(boolean isVisible); + default void setVisible(boolean isVisible) { + if(getProperties().isHideable) + getControlView().setVisibility(isVisible ? VISIBLE : GONE); + } void sendKeyPresses(boolean isDown); diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlJoystick.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlJoystick.java index 57bc1931b..34c21c424 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlJoystick.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlJoystick.java @@ -89,6 +89,7 @@ public class ControlJoystick extends JoystickView implements ControlInterface { @Override public void setProperties(ControlData properties, boolean changePos) { mControlData = (ControlJoystickData) properties; + mControlData.isHideable = true; ControlInterface.super.setProperties(properties, changePos); postDelayed(() -> setForwardLockDistance(mControlData.forwardLock ? (int) Tools.dpToPx(60) : 0), 10); } @@ -105,10 +106,6 @@ public class ControlJoystick extends JoystickView implements ControlInterface { getControlLayoutParent().addJoystickButton((ControlJoystickData) data); } - @Override - public void setVisible(boolean isVisible) { - setVisibility(isVisible ? VISIBLE : GONE); - } @Override public void setBackground() { diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlSubButton.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlSubButton.java index 377b749cf..fdb5cfc03 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlSubButton.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/buttons/ControlSubButton.java @@ -33,7 +33,8 @@ public class ControlSubButton extends ControlButton { @Override public void setVisible(boolean isVisible) { - setVisibility(isVisible ? VISIBLE : (!mProperties.isHideable && parentDrawer.getVisibility() == GONE) ? VISIBLE : View.GONE); + // STUB, visibility handled by the ControlDrawer + //setVisibility(isVisible ? VISIBLE : (!mProperties.isHideable && parentDrawer.getVisibility() == GONE) ? VISIBLE : View.GONE); } @Override