mirror of https://github.com/termux/termux-app
Merge bd6347ddda
into 2f40df91e5
This commit is contained in:
commit
00cf466a45
|
@ -26,6 +26,7 @@ import android.view.MotionEvent;
|
|||
import android.view.View;
|
||||
import android.view.ViewConfiguration;
|
||||
import android.view.ViewTreeObserver;
|
||||
import android.view.accessibility.AccessibilityEvent;
|
||||
import android.view.accessibility.AccessibilityManager;
|
||||
import android.view.autofill.AutofillValue;
|
||||
import android.view.inputmethod.BaseInputConnection;
|
||||
|
@ -39,6 +40,7 @@ import androidx.annotation.RequiresApi;
|
|||
import com.termux.terminal.KeyHandler;
|
||||
import com.termux.terminal.TerminalEmulator;
|
||||
import com.termux.terminal.TerminalSession;
|
||||
import com.termux.view.accessibility.TerminalAccessibilityDelegate;
|
||||
import com.termux.view.textselection.TextSelectionCursorController;
|
||||
|
||||
/** View displaying and interacting with a {@link TerminalSession}. */
|
||||
|
@ -221,6 +223,7 @@ public final class TerminalView extends View {
|
|||
mScroller = new Scroller(context);
|
||||
AccessibilityManager am = (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE);
|
||||
mAccessibilityEnabled = am.isEnabled();
|
||||
setAccessibilityDelegate(new TerminalAccessibilityDelegate(this));
|
||||
}
|
||||
|
||||
|
||||
|
@ -457,7 +460,9 @@ public final class TerminalView extends View {
|
|||
mEmulator.clearScrollCounter();
|
||||
|
||||
invalidate();
|
||||
if (mAccessibilityEnabled) setContentDescription(getText());
|
||||
|
||||
if (mAccessibilityEnabled)
|
||||
sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED);
|
||||
}
|
||||
|
||||
/** This must be called by the hosting activity in {@link Activity#onContextMenuClosed(Menu)}
|
||||
|
@ -986,7 +991,7 @@ public final class TerminalView extends View {
|
|||
return mTermSession;
|
||||
}
|
||||
|
||||
private CharSequence getText() {
|
||||
public CharSequence getText() {
|
||||
return mEmulator.getScreen().getSelectedText(0, mTopRow, mEmulator.mColumns, mTopRow + mEmulator.mRows);
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
package com.termux.view.accessibility;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.accessibility.AccessibilityNodeInfo;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.termux.view.TerminalView;
|
||||
|
||||
public class TerminalAccessibilityDelegate extends View.AccessibilityDelegate {
|
||||
|
||||
private static final String LOG_TAG = "TerminalAccessibilityDelegate";
|
||||
|
||||
public static String EXTRA_ACCESSIBILITY_NODE_TYPE = "accessibility-node-type";
|
||||
public static String EXTRA_TERMINAL_CURSOR_COL = "terminal-cursor-col";
|
||||
public static String EXTRA_TERMINAL_CURSOR_ROW = "terminal-cursor-row";
|
||||
|
||||
private final TerminalView mTerminalView;
|
||||
|
||||
public TerminalAccessibilityDelegate(@NonNull TerminalView terminalView) {
|
||||
mTerminalView = terminalView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInitializeAccessibilityNodeInfo(@NonNull View host, @NonNull AccessibilityNodeInfo info) {
|
||||
mTerminalView.mClient.logInfo(LOG_TAG, "onInitializeAccessibilityNodeInfo");
|
||||
super.onInitializeAccessibilityNodeInfo(host, info);
|
||||
Bundle extra = info.getExtras();
|
||||
if (mTerminalView.mEmulator != null) {
|
||||
extra.putString(EXTRA_ACCESSIBILITY_NODE_TYPE, "terminal");
|
||||
extra.putInt(EXTRA_TERMINAL_CURSOR_COL, mTerminalView.mEmulator.getCursorCol());
|
||||
extra.putInt(EXTRA_TERMINAL_CURSOR_ROW, mTerminalView.mEmulator.getCursorRow());
|
||||
mTerminalView.mClient.logInfo(LOG_TAG, "col=" + mTerminalView.mEmulator.getCursorCol() + ", row=" + mTerminalView.mEmulator.getCursorRow());
|
||||
}
|
||||
|
||||
info.setContentDescription(mTerminalView.getText());
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue