strict checking of coordinates wrt. inner painter component;
authorwenzelm
Sat, 24 Aug 2013 17:41:57 +0200
changeset 53183 018d71bee930
parent 53182 61b983193dc1
child 53184 5d6ffb87ee08
strict checking of coordinates wrt. inner painter component;
src/Tools/jEdit/src/jedit_lib.scala
--- a/src/Tools/jEdit/src/jedit_lib.scala	Sat Aug 24 17:39:18 2013 +0200
+++ b/src/Tools/jEdit/src/jedit_lib.scala	Sat Aug 24 17:41:57 2013 +0200
@@ -244,11 +244,20 @@
 
   def pixel_range(text_area: TextArea, x: Int, y: Int): Option[Text.Range] =
   {
-    val range = point_range(text_area.getBuffer, text_area.xyToOffset(x, y, false))
-    gfx_range(text_area, range) match {
-      case Some(g) if (g.x <= x && x < g.x + g.length) => Some(range)
-      case _ => None
+    // coordinates wrt. inner painter component
+    val painter = text_area.getPainter
+    if (0 <= x && x < painter.getWidth && 0 <= y && y < painter.getHeight) {
+      val offset = text_area.xyToOffset(x, y, false)
+      if (offset >= 0) {
+        val range = point_range(text_area.getBuffer, offset)
+        gfx_range(text_area, range) match {
+          case Some(g) if (g.x <= x && x < g.x + g.length) => Some(range)
+          case _ => None
+        }
+      }
+      else None
     }
+    else None
   }