src/Tools/jEdit/src/rich_text_area.scala
changeset 49424 491363c6feb4
parent 49411 1da54e9bda68
child 49473 ca7e2c21b104
equal deleted inserted replaced
49423:28bd0709443a 49424:491363c6feb4
   125   private val hyperlink_area = new Active_Area[Hyperlink]((r: Isabelle_Rendering) => r.hyperlink _)
   125   private val hyperlink_area = new Active_Area[Hyperlink]((r: Isabelle_Rendering) => r.hyperlink _)
   126   private val active_areas = List(highlight_area, hyperlink_area)
   126   private val active_areas = List(highlight_area, hyperlink_area)
   127   private def active_reset(): Unit = active_areas.foreach(_.reset)
   127   private def active_reset(): Unit = active_areas.foreach(_.reset)
   128 
   128 
   129   private val focus_listener = new FocusAdapter {
   129   private val focus_listener = new FocusAdapter {
   130     override def focusLost(e: FocusEvent) { active_reset() }
   130     override def focusLost(e: FocusEvent) { robust_body(()) { active_reset() } }
   131   }
   131   }
   132 
   132 
   133   private val window_listener = new WindowAdapter {
   133   private val window_listener = new WindowAdapter {
   134     override def windowIconified(e: WindowEvent) { active_reset() }
   134     override def windowIconified(e: WindowEvent) { robust_body(()) { active_reset() } }
   135     override def windowDeactivated(e: WindowEvent) { active_reset() }
   135     override def windowDeactivated(e: WindowEvent) { robust_body(()) { active_reset() } }
   136   }
   136   }
   137 
   137 
   138   private val mouse_listener = new MouseAdapter {
   138   private val mouse_listener = new MouseAdapter {
   139     override def mouseClicked(e: MouseEvent) {
   139     override def mouseClicked(e: MouseEvent) {
   140       hyperlink_area.info match {
   140       robust_body(()) {
   141         case Some(Text.Info(range, link)) => link.follow(view)
   141         hyperlink_area.info match {
   142         case None =>
   142           case Some(Text.Info(range, link)) => link.follow(view)
       
   143           case None =>
       
   144         }
   143       }
   145       }
   144     }
   146     }
   145   }
   147   }
   146 
   148 
   147   private val mouse_motion_listener = new MouseMotionAdapter {
   149   private val mouse_motion_listener = new MouseMotionAdapter {
   148     override def mouseMoved(e: MouseEvent) {
   150     override def mouseMoved(e: MouseEvent) {
   149       control = if (OperatingSystem.isMacOS()) e.isMetaDown else e.isControlDown
   151       robust_body(()) {
   150       if (control && !buffer.isLoading) {
   152         control = if (OperatingSystem.isMacOS()) e.isMetaDown else e.isControlDown
   151         JEdit_Lib.buffer_lock(buffer) {
   153         if (control && !buffer.isLoading) {
   152           val rendering = get_rendering()
   154           JEdit_Lib.buffer_lock(buffer) {
   153           val mouse_offset = text_area.xyToOffset(e.getX(), e.getY())
   155             val rendering = get_rendering()
   154           val mouse_range = JEdit_Lib.point_range(buffer, mouse_offset)
   156             val mouse_offset = text_area.xyToOffset(e.getX(), e.getY())
   155           active_areas.foreach(_.update_rendering(rendering, mouse_range))
   157             val mouse_range = JEdit_Lib.point_range(buffer, mouse_offset)
   156         }
   158             active_areas.foreach(_.update_rendering(rendering, mouse_range))
   157       }
   159           }
   158       else active_reset()
   160         }
       
   161         else active_reset()
       
   162       }
   159     }
   163     }
   160   }
   164   }
   161 
   165 
   162 
   166 
   163   /* tooltips */
   167   /* tooltips */