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 */ |