ExtraKeysView: SpecialButtons use Button instead of ToggleButton

This commit is contained in:
Vincent Deville
2021-01-14 15:54:01 +01:00
committed by Leonid Pliushch
parent 866da75fa9
commit a4381b7827

View File

@@ -27,7 +27,6 @@ import android.view.inputmethod.InputMethodManager;
import android.widget.Button; import android.widget.Button;
import android.widget.GridLayout; import android.widget.GridLayout;
import android.widget.PopupWindow; import android.widget.PopupWindow;
import android.widget.ToggleButton;
import com.termux.R; import com.termux.R;
import com.termux.view.TerminalView; import com.termux.view.TerminalView;
@@ -134,14 +133,11 @@ public final class ExtraKeysView extends GridLayout {
private static class SpecialButtonState { private static class SpecialButtonState {
boolean isOn = false; boolean isOn = false;
boolean isActive = false; boolean isActive = false;
List<ToggleButton> buttons = new ArrayList<>(); List<Button> buttons = new ArrayList<>();
void toggle(boolean value) { void setIsActive(boolean value) {
isActive = value; isActive = value;
buttons.forEach(button -> { buttons.forEach(button -> button.setTextColor(value ? INTERESTING_COLOR : TEXT_COLOR));
button.setChecked(value);
button.setTextColor(value ? INTERESTING_COLOR : TEXT_COLOR);
});
} }
} }
@@ -166,27 +162,23 @@ public final class ExtraKeysView extends GridLayout {
if (state == null) if (state == null)
throw new RuntimeException("Must be a valid special button (see source)"); throw new RuntimeException("Must be a valid special button (see source)");
if (!state.isOn) if (!state.isOn || !state.isActive)
return false; return false;
if (!state.isActive) { state.setIsActive(false);
return false;
}
state.toggle(false);
return true; return true;
} }
private ToggleButton createSpecialButton(String buttonKey, boolean needUpdate) { private Button createSpecialButton(String buttonKey, boolean needUpdate) {
SpecialButtonState state = specialButtons.get(SpecialButton.valueOf(buttonKey)); SpecialButtonState state = specialButtons.get(SpecialButton.valueOf(buttonKey));
state.isOn = true; state.isOn = true;
ToggleButton toggleButton = new ToggleButton(getContext(), null, android.R.attr.buttonBarButtonStyle); Button button = new Button(getContext(), null, android.R.attr.buttonBarButtonStyle);
toggleButton.setTextColor(state.isActive ? INTERESTING_COLOR : TEXT_COLOR); button.setTextColor(state.isActive ? INTERESTING_COLOR : TEXT_COLOR);
if (needUpdate) { if (needUpdate) {
state.buttons.add(toggleButton); state.buttons.add(button);
} }
return toggleButton; return button;
} }
void popup(View view, ExtraKeyButton extraButton) { void popup(View view, ExtraKeyButton extraButton) {
@@ -264,7 +256,6 @@ public final class ExtraKeysView extends GridLayout {
Button button; Button button;
if(isSpecialButton(buttonInfo)) { if(isSpecialButton(buttonInfo)) {
button = createSpecialButton(buttonInfo.getKey(), true); button = createSpecialButton(buttonInfo.getKey(), true);
button.setClickable(true);
} else { } else {
button = new Button(getContext(), null, android.R.attr.buttonBarButtonStyle); button = new Button(getContext(), null, android.R.attr.buttonBarButtonStyle);
} }
@@ -291,7 +282,7 @@ public final class ExtraKeysView extends GridLayout {
View root = getRootView(); View root = getRootView();
if (isSpecialButton(buttonInfo)) { if (isSpecialButton(buttonInfo)) {
SpecialButtonState state = specialButtons.get(SpecialButton.valueOf(buttonInfo.getKey())); SpecialButtonState state = specialButtons.get(SpecialButton.valueOf(buttonInfo.getKey()));
state.toggle(!state.isActive); state.setIsActive(!state.isActive);
} else { } else {
sendKey(root, buttonInfo); sendKey(root, buttonInfo);
} }
@@ -352,7 +343,7 @@ public final class ExtraKeysView extends GridLayout {
if (buttonInfo.getPopup() != null) { if (buttonInfo.getPopup() != null) {
if (isSpecialButton(buttonInfo.getPopup())) { if (isSpecialButton(buttonInfo.getPopup())) {
SpecialButtonState state = specialButtons.get(SpecialButton.valueOf(buttonInfo.getPopup().getKey())); SpecialButtonState state = specialButtons.get(SpecialButton.valueOf(buttonInfo.getPopup().getKey()));
state.toggle(!state.isActive); state.setIsActive(!state.isActive);
} else { } else {
sendKey(root, buttonInfo.getPopup()); sendKey(root, buttonInfo.getPopup());
} }