Fix[control]: GUI button showing buttons that shouldn't be visible

This commit is contained in:
Mathias Boulay 2023-08-06 17:50:15 +02:00
parent 54e98ec670
commit 78737cf249
6 changed files with 17 additions and 15 deletions

View File

@ -4,6 +4,8 @@ import static android.content.Context.INPUT_METHOD_SERVICE;
import static net.kdt.pojavlaunch.MainActivity.mControlLayout; import static net.kdt.pojavlaunch.MainActivity.mControlLayout;
import static net.kdt.pojavlaunch.Tools.currentDisplayMetrics; import static net.kdt.pojavlaunch.Tools.currentDisplayMetrics;
import static org.lwjgl.glfw.CallbackBridge.isGrabbing;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;
import android.os.Build; import android.os.Build;
@ -239,7 +241,7 @@ public class ControlLayout extends FrameLayout {
mControlVisible = isVisible; mControlVisible = isVisible;
for(ControlInterface button : getButtonChildren()){ for(ControlInterface button : getButtonChildren()){
button.setVisible(isVisible); button.setVisible(((button.getProperties().displayInGame && isGrabbing()) || (button.getProperties().displayInMenu && !isGrabbing())) && isVisible);
} }
} }

View File

@ -80,11 +80,6 @@ public class ControlButton extends TextView implements ControlInterface {
setText(properties.name); setText(properties.name);
} }
public void setVisible(boolean isVisible){
if(mProperties.isHideable)
setVisibility(isVisible ? VISIBLE : GONE);
}
@Override @Override
protected void onDraw(Canvas canvas) { protected void onDraw(Canvas canvas) {
super.onDraw(canvas); super.onDraw(canvas);

View File

@ -2,6 +2,7 @@ package net.kdt.pojavlaunch.customcontrols.buttons;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Toast; import android.widget.Toast;
@ -46,13 +47,14 @@ public class ControlDrawer extends ControlButton {
} }
private void setControlButtonVisibility(ControlButton button, boolean isVisible){ private void setControlButtonVisibility(ControlButton button, boolean isVisible){
post(() -> button.setVisible(isVisible)); button.getControlView().setVisibility(isVisible ? VISIBLE : GONE);
} }
private void switchButtonVisibility(){ private void switchButtonVisibility(){
areButtonsVisible = !areButtonsVisible; areButtonsVisible = !areButtonsVisible;
int visibility = areButtonsVisible ? VISIBLE : GONE;
for(ControlButton button : buttons){ for(ControlButton button : buttons){
button.setVisible(areButtonsVisible); button.getControlView().setVisibility(visibility);
} }
} }
@ -129,7 +131,7 @@ public class ControlDrawer extends ControlButton {
setVisibility(visibility); setVisibility(visibility);
if(visibility == GONE || areButtonsVisible) { if(visibility == GONE || areButtonsVisible) {
for(ControlSubButton button : buttons){ for(ControlSubButton button : buttons){
button.setVisible(isVisible); button.getControlView().setVisibility(isVisible ? VISIBLE : (!mProperties.isHideable && getVisibility() == GONE) ? VISIBLE : View.GONE);
} }
} }
} }

View File

@ -1,5 +1,7 @@
package net.kdt.pojavlaunch.customcontrols.buttons; 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 static net.kdt.pojavlaunch.prefs.LauncherPreferences.PREF_BUTTONSIZE;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
@ -49,7 +51,10 @@ public interface ControlInterface extends View.OnLongClickListener, GrabListener
*/ */
void cloneButton(); void cloneButton();
void setVisible(boolean isVisible); default void setVisible(boolean isVisible) {
if(getProperties().isHideable)
getControlView().setVisibility(isVisible ? VISIBLE : GONE);
}
void sendKeyPresses(boolean isDown); void sendKeyPresses(boolean isDown);

View File

@ -89,6 +89,7 @@ public class ControlJoystick extends JoystickView implements ControlInterface {
@Override @Override
public void setProperties(ControlData properties, boolean changePos) { public void setProperties(ControlData properties, boolean changePos) {
mControlData = (ControlJoystickData) properties; mControlData = (ControlJoystickData) properties;
mControlData.isHideable = true;
ControlInterface.super.setProperties(properties, changePos); ControlInterface.super.setProperties(properties, changePos);
postDelayed(() -> setForwardLockDistance(mControlData.forwardLock ? (int) Tools.dpToPx(60) : 0), 10); 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); getControlLayoutParent().addJoystickButton((ControlJoystickData) data);
} }
@Override
public void setVisible(boolean isVisible) {
setVisibility(isVisible ? VISIBLE : GONE);
}
@Override @Override
public void setBackground() { public void setBackground() {

View File

@ -33,7 +33,8 @@ public class ControlSubButton extends ControlButton {
@Override @Override
public void setVisible(boolean isVisible) { 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 @Override