mirror of
https://github.com/loot/libloot.git
synced 2026-07-27 14:16:01 -07:00
Improved hover text handling slightly more.
Event listeners now get removed on custom element destruction. I built LOOT again using a new build of CEF, and the mouseover bug has been fixed.
This commit is contained in:
@@ -284,8 +284,8 @@ var pluginCardProto = Object.create(HTMLElement.prototype, {
|
||||
|
||||
var hoverTargets = this.shadowRoot.querySelectorAll('[title]');
|
||||
for (var i = 0; i < hoverTargets.length; ++i) {
|
||||
hoverTargets[i].addEventListener('mouseenter', toggleHoverText, false);
|
||||
hoverTargets[i].addEventListener('mouseleave', toggleHoverText, false);
|
||||
hoverTargets[i].addEventListener('mouseenter', showHoverText, false);
|
||||
hoverTargets[i].addEventListener('mouseleave', hideHoverText, false);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -295,6 +295,12 @@ var pluginCardProto = Object.create(HTMLElement.prototype, {
|
||||
detachedCallback: {
|
||||
value: function() {
|
||||
this.shadowRoot.querySelector('#menuButton').removeEventListener('click', this.onMenuButtonClick, false);
|
||||
|
||||
var hoverTargets = this.shadowRoot.querySelectorAll('[title]');
|
||||
for (var i = 0; i < hoverTargets.length; ++i) {
|
||||
hoverTargets[i].removeEventListener('mouseenter', showHoverText, false);
|
||||
hoverTargets[i].removeEventListener('mouseleave', hideHoverText, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -322,12 +328,22 @@ var pluginLIProto = Object.create(HTMLLIElement.prototype, {
|
||||
|
||||
var hoverTargets = this.shadowRoot.querySelectorAll('[title]');
|
||||
for (var i = 0; i < hoverTargets.length; ++i) {
|
||||
hoverTargets[i].addEventListener('mouseenter', toggleHoverText, false);
|
||||
hoverTargets[i].addEventListener('mouseleave', toggleHoverText, false);
|
||||
hoverTargets[i].addEventListener('mouseenter', showHoverText, false);
|
||||
hoverTargets[i].addEventListener('mouseleave', hideHoverText, false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
detachedCallback: {
|
||||
value: function() {
|
||||
var hoverTargets = this.shadowRoot.querySelectorAll('[title]');
|
||||
for (var i = 0; i < hoverTargets.length; ++i) {
|
||||
hoverTargets[i].removeEventListener('mouseenter', showHoverText, false);
|
||||
hoverTargets[i].removeEventListener('mouseleave', hideHoverText, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
@@ -387,18 +387,10 @@ function getDialogParent(element) {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
function toggleHoverText(evt) {
|
||||
var hoverText = document.getElementById('hoverText');
|
||||
function showHoverText(evt) {
|
||||
hideHoverText(evt);
|
||||
|
||||
if (hoverText) {
|
||||
var hoverTarget = document.getElementById('hoverTarget');
|
||||
if (hoverTarget) {
|
||||
hoverTarget.id = '';
|
||||
}
|
||||
hoverText.parentElement.removeChild(hoverText);
|
||||
}
|
||||
|
||||
hoverText = document.createElement('div');
|
||||
var hoverText = document.createElement('div');
|
||||
hoverText.id = 'hoverText';
|
||||
hoverText.textContent = evt.target.title;
|
||||
|
||||
@@ -418,6 +410,17 @@ function toggleHoverText(evt) {
|
||||
hoverText.style.left = (rect.left + evt.target.offsetWidth/2) + 'px';
|
||||
hoverText.style.top = (rect.bottom + 10) + 'px';
|
||||
}
|
||||
function hideHoverText(evt) {
|
||||
var hoverText = document.getElementById('hoverText');
|
||||
|
||||
if (hoverText) {
|
||||
var hoverTarget = document.getElementById('hoverTarget');
|
||||
if (hoverTarget) {
|
||||
hoverTarget.id = '';
|
||||
}
|
||||
hoverText.parentElement.removeChild(hoverText);
|
||||
}
|
||||
}
|
||||
function setupEventHandlers() {
|
||||
var elements;
|
||||
if (isStorageSupported()) { /*Set up filter value and CSS setting storage read/write handlers.*/
|
||||
@@ -473,8 +476,8 @@ function setupEventHandlers() {
|
||||
/* Set up event handler for hover text. */
|
||||
var hoverTargets = document.querySelectorAll('[title]');
|
||||
for (var i = 0; i < hoverTargets.length; ++i) {
|
||||
hoverTargets[i].addEventListener('mouseenter', toggleHoverText, false);
|
||||
hoverTargets[i].addEventListener('mouseleave', toggleHoverText, false);
|
||||
hoverTargets[i].addEventListener('mouseenter', showHoverText, false);
|
||||
hoverTargets[i].addEventListener('mouseleave', hideHoverText, false);
|
||||
}
|
||||
}
|
||||
function processCefError(errorCode, errorMessage) {
|
||||
|
||||
Reference in New Issue
Block a user