private void SelectNextRegion(bool backward) { MarkupRange smartContentRange = EditorContext.MarkupServices.CreateMarkupRange(HTMLElement, false); IHTMLElement[] editFields = smartContentRange.GetElements(ElementFilters.CreateClassFilter(InlineEditField.EDIT_FIELD), true); IHTMLElement element = GetSelectedChildEditField(HTMLElement, EditorContext.Selection.SelectedMarkupRange); if (element == null) { if (editFields.Length > 0) { SelectElement(backward ? editFields[editFields.Length - 1] : editFields[0]); } else { Select(); } return; } // One of the edit fields was selected for (int i = 0; i < editFields.Length; i++) { IHTMLElement editField = editFields[i]; if (element.sourceIndex == editField.sourceIndex) { if (i == 0 && backward || i == editFields.Length - 1 && !backward) { Select(); } else { SelectElement(backward ? editFields[i - 1] : editFields[i + 1]); } return; } } Debug.Fail("How did we get here?"); }