private bool deleteSelection(android.view.View view, android.text.Editable content ) { int selectionStart = android.text.Selection.getSelectionStart(content); int selectionEnd = android.text.Selection.getSelectionEnd(content); if (selectionEnd < selectionStart) { int temp = selectionEnd; selectionEnd = selectionStart; selectionStart = temp; } if (selectionStart != selectionEnd) { content.delete(selectionStart, selectionEnd); return(true); } return(false); }
private bool backspaceOrForwardDelete(android.view.View view, android.text.Editable content, int keyCode, android.view.KeyEvent @event, bool isForwardDelete) { // Ensure the key event does not have modifiers except ALT or SHIFT. if (!android.view.KeyEvent.metaStateHasNoModifiers(@event.getMetaState() & ~(android.view.KeyEvent .META_SHIFT_MASK | android.view.KeyEvent.META_ALT_MASK))) { return(false); } // If there is a current selection, delete it. if (deleteSelection(view, content)) { return(true); } // Alt+Backspace or Alt+ForwardDelete deletes the current line, if possible. if (@event.isAltPressed() || getMetaState(content, META_ALT_ON) == 1) { if (deleteLine(view, content)) { return(true); } } // Delete a character. int start = android.text.Selection.getSelectionEnd(content); int end; if (isForwardDelete || @event.isShiftPressed() || getMetaState(content, META_SHIFT_ON ) == 1) { end = android.text.TextUtils.getOffsetAfter(content, start); } else { end = android.text.TextUtils.getOffsetBefore(content, start); } if (start != end) { content.delete(System.Math.Min(start, end), System.Math.Max(start, end)); return(true); } return(false); }
private bool deleteLine(android.view.View view, android.text.Editable content) { if (view is android.widget.TextView) { android.text.Layout layout = ((android.widget.TextView)view).getLayout(); if (layout != null) { int line = layout.getLineForOffset(android.text.Selection.getSelectionStart(content )); int start = layout.getLineStart(line); int end = layout.getLineEnd(line); if (end != start) { content.delete(start, end); return(true); } } } return(false); }