# HG changeset patch # User wenzelm # Date 1729243930 -7200 # Node ID 264f043c5da18959427112101fb14710d684e630 # Parent cf2c039671789508f4e00fe01efba8f4e7ba40db more ambitious rendering: highlight active area for mouse hovering without modifier; diff -r cf2c03967178 -r 264f043c5da1 src/Tools/jEdit/src/document_view.scala --- a/src/Tools/jEdit/src/document_view.scala Wed Oct 16 23:13:02 2024 +0200 +++ b/src/Tools/jEdit/src/document_view.scala Fri Oct 18 11:32:10 2024 +0200 @@ -68,7 +68,7 @@ val rich_text_area: Rich_Text_Area = new Rich_Text_Area(text_area.getView, text_area, () => Document_View.rendering(doc_view), () => (), () => None, - () => delay_caret_update.invoke(), caret_visible = true, enable_hovering = false) + () => delay_caret_update.invoke(), caret_visible = true, enable_hovering = true) /* perspective */ diff -r cf2c03967178 -r 264f043c5da1 src/Tools/jEdit/src/rich_text_area.scala --- a/src/Tools/jEdit/src/rich_text_area.scala Wed Oct 16 23:13:02 2024 +0200 +++ b/src/Tools/jEdit/src/rich_text_area.scala Fri Oct 18 11:32:10 2024 +0200 @@ -148,10 +148,14 @@ private class Active_Area[A]( render: JEdit_Rendering => Text.Range => Option[Text.Info[A]], val require_control: Boolean = false, + val ignore_control: Boolean = false, cursor: Int = -1 ) { private var the_text_info: Option[(String, Text.Info[A])] = None + def check_control(control: Boolean): Boolean = + control == require_control || ignore_control + def is_active: Boolean = the_text_info.isDefined def text_info: Option[(String, Text.Info[A])] = the_text_info def info: Option[Text.Info[A]] = the_text_info.map(_._2) @@ -188,7 +192,7 @@ // owned by GUI thread private val highlight_area = - new Active_Area[Color](_.highlight, require_control = true) + new Active_Area[Color](_.highlight, ignore_control = true) private val hyperlink_area = new Active_Area[PIDE.editor.Hyperlink]( @@ -268,7 +272,7 @@ case Some(range) => val rendering = get_rendering() for (area <- active_areas) { - if (control == area.require_control && !rendering.snapshot.is_outdated) { + if (area.check_control(control) && !rendering.snapshot.is_outdated) { area.update_rendering(rendering, range) } else area.reset()