aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/anysoftkeyboard/AnySoftKeyboard.java40
-rw-r--r--src/main/java/com/anysoftkeyboard/devicespecific/Clipboard.java2
-rw-r--r--src/main/java/com/anysoftkeyboard/devicespecific/ClipboardV11.java7
-rw-r--r--src/main/java/com/anysoftkeyboard/devicespecific/ClipboardV3.java4
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);
}