From f59152cf00520d1bd36949b44faca2e1fcf6d28f Mon Sep 17 00:00:00 2001 From: James Cook Date: Thu, 26 Feb 2015 18:03:58 -0800 Subject: Reland: Add basic support for Ctrl-Z to editable TextViews Reland 9201e797833f35b9afb219f88c10d3b6fda02a4e which was reverted in c8f08e07a47cc259a25caed3f731ee7044328635. Original description: * Add an UndoManager to the Editor for each editable TextView * Record operations as being owned by that Editor * Parcel the undo state * Wire hardware keyboard shortcuts Ctrl-Z for undo and Ctrl-Shift-Z for redo into TextView shortcut handling. * Expose IDs for "undo" and "redo" for symmetry with cut/copy/paste. Additional fix: * Ensure each UndoOwner always has a valid mManager, even after the UndoManager is parceled and restored. Bug: 19332904 Bug: 19505388 Change-Id: Iad4476e6e9ca952281e69bf22c07cca915dfa7bd --- core/java/android/content/UndoOwner.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'core/java/android/content/UndoOwner.java') diff --git a/core/java/android/content/UndoOwner.java b/core/java/android/content/UndoOwner.java index d0cdc95..9106588 100644 --- a/core/java/android/content/UndoOwner.java +++ b/core/java/android/content/UndoOwner.java @@ -23,8 +23,8 @@ package android.content; */ public class UndoOwner { final String mTag; + final UndoManager mManager; - UndoManager mManager; Object mData; int mOpCount; @@ -32,8 +32,15 @@ public class UndoOwner { int mStateSeq; int mSavedIdx; - UndoOwner(String tag) { + UndoOwner(String tag, UndoManager manager) { + if (tag == null) { + throw new NullPointerException("tag can't be null"); + } + if (manager == null) { + throw new NullPointerException("manager can't be null"); + } mTag = tag; + mManager = manager; } /** -- cgit v1.1