more robust GUI component handlers;
authorwenzelm
Wed, 19 Sep 2012 12:10:40 +0200
changeset 49424 491363c6feb4
parent 49423 28bd0709443a
child 49442 98960e2fadd7
more robust GUI component handlers;
src/Tools/jEdit/src/document_view.scala
src/Tools/jEdit/src/rich_text_area.scala
--- a/src/Tools/jEdit/src/document_view.scala	Tue Sep 18 21:16:48 2012 +0200
+++ b/src/Tools/jEdit/src/document_view.scala	Wed Sep 19 12:10:40 2012 +0200
@@ -97,6 +97,7 @@
       first_line: Int, last_line: Int, physical_lines: Array[Int],
       start: Array[Int], end: Array[Int], y: Int, line_height: Int)
     {
+      // no robust_body
       model.update_perspective()
     }
   }
--- a/src/Tools/jEdit/src/rich_text_area.scala	Tue Sep 18 21:16:48 2012 +0200
+++ b/src/Tools/jEdit/src/rich_text_area.scala	Wed Sep 19 12:10:40 2012 +0200
@@ -127,35 +127,39 @@
   private def active_reset(): Unit = active_areas.foreach(_.reset)
 
   private val focus_listener = new FocusAdapter {
-    override def focusLost(e: FocusEvent) { active_reset() }
+    override def focusLost(e: FocusEvent) { robust_body(()) { active_reset() } }
   }
 
   private val window_listener = new WindowAdapter {
-    override def windowIconified(e: WindowEvent) { active_reset() }
-    override def windowDeactivated(e: WindowEvent) { active_reset() }
+    override def windowIconified(e: WindowEvent) { robust_body(()) { active_reset() } }
+    override def windowDeactivated(e: WindowEvent) { robust_body(()) { active_reset() } }
   }
 
   private val mouse_listener = new MouseAdapter {
     override def mouseClicked(e: MouseEvent) {
-      hyperlink_area.info match {
-        case Some(Text.Info(range, link)) => link.follow(view)
-        case None =>
+      robust_body(()) {
+        hyperlink_area.info match {
+          case Some(Text.Info(range, link)) => link.follow(view)
+          case None =>
+        }
       }
     }
   }
 
   private val mouse_motion_listener = new MouseMotionAdapter {
     override def mouseMoved(e: MouseEvent) {
-      control = if (OperatingSystem.isMacOS()) e.isMetaDown else e.isControlDown
-      if (control && !buffer.isLoading) {
-        JEdit_Lib.buffer_lock(buffer) {
-          val rendering = get_rendering()
-          val mouse_offset = text_area.xyToOffset(e.getX(), e.getY())
-          val mouse_range = JEdit_Lib.point_range(buffer, mouse_offset)
-          active_areas.foreach(_.update_rendering(rendering, mouse_range))
+      robust_body(()) {
+        control = if (OperatingSystem.isMacOS()) e.isMetaDown else e.isControlDown
+        if (control && !buffer.isLoading) {
+          JEdit_Lib.buffer_lock(buffer) {
+            val rendering = get_rendering()
+            val mouse_offset = text_area.xyToOffset(e.getX(), e.getY())
+            val mouse_range = JEdit_Lib.point_range(buffer, mouse_offset)
+            active_areas.foreach(_.update_rendering(rendering, mouse_range))
+          }
         }
+        else active_reset()
       }
-      else active_reset()
     }
   }