private void updateWidgetCaretLocation(int documentCaret) { int widgetCaret = modelOffset2WidgetOffset(documentCaret); if (widgetCaret == -1) { // try to move it to the closest spot IRegion region = getModelCoverage(); if (region != null) { if (documentCaret <= region.getOffset()) { widgetCaret = 0; } else if (documentCaret >= region.getOffset() + region.getLength()) { widgetCaret = getVisibleRegion().getLength(); } } } if (widgetCaret != -1) { // there is a valid widget caret getTextWidget().setCaretOffset(widgetCaret); getTextWidget().showSelection(); } }