diff options
Diffstat (limited to 'src/main/java')
4 files changed, 39 insertions, 14 deletions
diff --git a/src/main/java/com/anysoftkeyboard/AnySoftKeyboard.java b/src/main/java/com/anysoftkeyboard/AnySoftKeyboard.java index 92d27d61c..d92a4a527 100644 --- a/src/main/java/com/anysoftkeyboard/AnySoftKeyboard.java +++ b/src/main/java/com/anysoftkeyboard/AnySoftKeyboard.java @@ -1641,13 +1641,10 @@ public class AnySoftKeyboard extends InputMethodService implements nextKeyboard(getCurrentInputEditorInfo(), NextKeyboardType.OtherMode); break; - case KeyCodes.CLIPBOARD: - Clipboard cp = AnyApplication.getFrankenRobot().embody( - new Clipboard.ClipboardDiagram(getApplicationContext())); - CharSequence clipboardText = cp.getText(); - if (!TextUtils.isEmpty(clipboardText)) { - onText(key, clipboardText); - } + case KeyCodes.CLIPBOARD_COPY: + case KeyCodes.CLIPBOARD_PASTE: + case KeyCodes.CLIPBOARD_CUT: + handleClipboardOperation(key, primaryCode); break; case KeyCodes.TAB: sendTab(); @@ -1687,6 +1684,35 @@ public class AnySoftKeyboard extends InputMethodService implements } } + private void handleClipboardOperation(final Key key, final int primaryCode) { + Clipboard clipboard = AnyApplication.getFrankenRobot().embody(new Clipboard.ClipboardDiagram(getApplicationContext())); + switch (primaryCode) { + case KeyCodes.CLIPBOARD_PASTE: + CharSequence clipboardText = clipboard.getText(); + if (!TextUtils.isEmpty(clipboardText)) { + onText(key, clipboardText); + } + break; + case KeyCodes.CLIPBOARD_CUT: + case KeyCodes.CLIPBOARD_COPY: + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) { + InputConnection ic = getCurrentInputConnection(); + if (ic != null) { + CharSequence selectedText = ic.getSelectedText(InputConnection.GET_TEXT_WITH_STYLES); + if (!TextUtils.isEmpty(selectedText)) { + clipboard.setText(selectedText); + if (primaryCode == KeyCodes.CLIPBOARD_CUT) { + //sending a DEL key will delete the selected text + sendDownUpKeyEvents(KeyEvent.KEYCODE_DEL); + } + } + } + } + break; + } + + } + private void openQuickTextPopup(Key key) { if (mInputView != null) { mInputView.showQuickKeysView(key); diff --git a/src/main/java/com/anysoftkeyboard/devicespecific/Clipboard.java b/src/main/java/com/anysoftkeyboard/devicespecific/Clipboard.java index 0caf353e8..dfb0b0b65 100644 --- a/src/main/java/com/anysoftkeyboard/devicespecific/Clipboard.java +++ b/src/main/java/com/anysoftkeyboard/devicespecific/Clipboard.java @@ -24,7 +24,7 @@ import net.evendanan.frankenrobot.Diagram; @IndirectlyInstantiated public interface Clipboard { - public static class ClipboardDiagram extends Diagram<Clipboard> { + class ClipboardDiagram extends Diagram<Clipboard> { private final Context mContext; public ClipboardDiagram(Context context) { diff --git a/src/main/java/com/anysoftkeyboard/devicespecific/ClipboardV11.java b/src/main/java/com/anysoftkeyboard/devicespecific/ClipboardV11.java index 6b6f51bda..81bb2b9a8 100644 --- a/src/main/java/com/anysoftkeyboard/devicespecific/ClipboardV11.java +++ b/src/main/java/com/anysoftkeyboard/devicespecific/ClipboardV11.java @@ -26,14 +26,13 @@ import com.anysoftkeyboard.IndirectlyInstantiated; @TargetApi(11) @IndirectlyInstantiated -final class ClipboardV11 implements Clipboard { +public class ClipboardV11 implements Clipboard { private final ClipboardManager cbV11; private final Context mAppContext; - ClipboardV11(ClipboardDiagram diagram) { + public ClipboardV11(ClipboardDiagram diagram) { mAppContext = diagram.getContext(); - cbV11 = (ClipboardManager) mAppContext - .getSystemService(Context.CLIPBOARD_SERVICE); + cbV11 = (ClipboardManager) mAppContext.getSystemService(Context.CLIPBOARD_SERVICE); } public void setText(CharSequence text) { diff --git a/src/main/java/com/anysoftkeyboard/devicespecific/ClipboardV3.java b/src/main/java/com/anysoftkeyboard/devicespecific/ClipboardV3.java index e7766346e..3a2407ce8 100644 --- a/src/main/java/com/anysoftkeyboard/devicespecific/ClipboardV3.java +++ b/src/main/java/com/anysoftkeyboard/devicespecific/ClipboardV3.java @@ -25,10 +25,10 @@ import com.anysoftkeyboard.IndirectlyInstantiated; @SuppressWarnings("deprecation") @TargetApi(3) @IndirectlyInstantiated -final class ClipboardV3 implements Clipboard { +public class ClipboardV3 implements Clipboard { private final ClipboardManager cbV3; - ClipboardV3(ClipboardDiagram diagram) { + public ClipboardV3(ClipboardDiagram diagram) { cbV3 = (android.text.ClipboardManager) diagram.getContext() .getSystemService(Context.CLIPBOARD_SERVICE); } |
