commit 5ac418c9262ddc1c41f1ef6325f4da5036b9d135
parent ce79aca304b2ada02577253f239eaf284b2b3c53
Author: Sergey Orlov <wladimirych@gmail.com>
Date: Wed, 16 Dec 2020 16:28:06 +0100
tracks: refactor track highlight code
Related to #408
* dispatch all hover events through knockout observables
* highlight track line also when mouse is over the line
Diffstat:
2 files changed, 13 insertions(+), 8 deletions(-)
diff --git a/src/lib/leaflet.control.track-list/track-list.css b/src/lib/leaflet.control.track-list/track-list.css
@@ -268,8 +268,7 @@
}
-.leaflet-control-tracklist .hover,
-.leaflet-control-tracklist tr:hover {
+.leaflet-control-tracklist .hover {
background-color: rgb(93%, 93%, 93%);
}
diff --git a/src/lib/leaflet.control.track-list/track-list.js b/src/lib/leaflet.control.track-list/track-list.js
@@ -1095,15 +1095,11 @@ L.Control.TrackList = L.Control.extend({
},
onTrackRowMouseEnter: function(track) {
- this._highlightedTrack = track;
- this.updateTrackHighlight();
+ track.hover(true);
},
onTrackRowMouseLeave: function(track) {
- if (this._highlightedTrack === track) {
- this._highlightedTrack = null;
- this.updateTrackHighlight();
- }
+ track.hover(false);
},
onTrackSegmentDrawEnd: function() {
@@ -1173,6 +1169,7 @@ L.Control.TrackList = L.Control.extend({
if (!L.Browser.touch) {
track.feature.bindTooltip(() => track.name(), {sticky: true, delay: 500});
}
+ track.hover.subscribe(this.onTrackHoverChanged.bind(this, track));
// this.onTrackColorChanged(track);
this.onTrackVisibilityChanged(track);
@@ -1181,6 +1178,15 @@ L.Control.TrackList = L.Control.extend({
return track;
},
+ onTrackHoverChanged: function(track, hover) {
+ if (hover) {
+ this._highlightedTrack = track;
+ } else if (this._highlightedTrack === track) {
+ this._highlightedTrack = null;
+ }
+ this.updateTrackHighlight();
+ },
+
updateTrackHighlight: function() {
if (L.Browser.touch) {
return;