diff options
author | Kai Maetzel | 2002-12-03 13:53:47 +0000 |
---|---|---|
committer | Kai Maetzel | 2002-12-03 13:53:47 +0000 |
commit | 12a19d1dcedb0e74ec7448608e801550e9ddf756 (patch) | |
tree | 666fd0e3d69aeaa61cae9fc0a44a95a6eb6614c1 /org.eclipse.jface.text/src/org/eclipse/jface/text/information | |
parent | cca5d0bee1158d234c5366d10b4dcb9126932563 (diff) | |
download | eclipse.platform.text-12a19d1dcedb0e74ec7448608e801550e9ddf756.tar.gz eclipse.platform.text-12a19d1dcedb0e74ec7448608e801550e9ddf756.tar.xz eclipse.platform.text-12a19d1dcedb0e74ec7448608e801550e9ddf756.zip |
projection
Diffstat (limited to 'org.eclipse.jface.text/src/org/eclipse/jface/text/information')
-rw-r--r-- | org.eclipse.jface.text/src/org/eclipse/jface/text/information/InformationPresenter.java | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/information/InformationPresenter.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/information/InformationPresenter.java index 4360fe922d5..7c7390a056a 100644 --- a/org.eclipse.jface.text/src/org/eclipse/jface/text/information/InformationPresenter.java +++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/information/InformationPresenter.java @@ -37,9 +37,11 @@ import org.eclipse.jface.text.IInformationControl; import org.eclipse.jface.text.IInformationControlCreator; import org.eclipse.jface.text.IRegion; import org.eclipse.jface.text.ITextViewer; +import org.eclipse.jface.text.ITextViewerExtension3; import org.eclipse.jface.text.IViewportListener; import org.eclipse.jface.text.IWidgetTokenKeeper; import org.eclipse.jface.text.IWidgetTokenOwner; +import org.eclipse.jface.text.Region; import org.eclipse.jface.util.Assert; @@ -308,13 +310,12 @@ public class InformationPresenter extends AbstractInformationControlManager impl * @return the graphical extend of the given region */ private Rectangle computeArea(IRegion region) { + + IRegion widgetRegion= modelRange2WidgetRange(region); + int start= widgetRegion.getOffset(); + int end= widgetRegion.getOffset() + widgetRegion.getLength(); StyledText styledText= fTextViewer.getTextWidget(); - - IRegion visible= fTextViewer.getVisibleRegion(); - int start= region.getOffset() - visible.getOffset(); - int end= start + region.getLength(); - Point upperLeft= styledText.getLocationAtOffset(start); Point lowerRight= new Point(upperLeft.x, upperLeft.y); @@ -345,6 +346,26 @@ public class InformationPresenter extends AbstractInformationControlManager impl return new Rectangle(upperLeft.x, upperLeft.y, width, height); } + /** + * Method modelRange2WidgetRange. + * @param region + * @return IRegion + */ + private IRegion modelRange2WidgetRange(IRegion region) { + if (fTextViewer instanceof ITextViewerExtension3) { + ITextViewerExtension3 extension= (ITextViewerExtension3) fTextViewer; + return extension.modelRange2WidgetRange(region); + } + + IRegion visibleRegion= fTextViewer.getVisibleRegion(); + int start= region.getOffset() - visibleRegion.getOffset(); + int end= start + region.getLength(); + if (end > visibleRegion.getLength()) + end= visibleRegion.getLength(); + + return new Region(start, end - start); + } + /* * @see IInformationPresenter#install(ITextViewer) */ |