Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKai Maetzel2002-12-03 13:53:47 +0000
committerKai Maetzel2002-12-03 13:53:47 +0000
commit12a19d1dcedb0e74ec7448608e801550e9ddf756 (patch)
tree666fd0e3d69aeaa61cae9fc0a44a95a6eb6614c1 /org.eclipse.jface.text/src/org/eclipse/jface/text/information
parentcca5d0bee1158d234c5366d10b4dcb9126932563 (diff)
downloadeclipse.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.java31
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)
*/

Back to the top