1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-01-03 15:04:12 +01:00

Automagically hidden popup panels. This probably includes those horrible "door hanger" panels when the location bar is hidden.

This commit is contained in:
Kris Maglione
2011-02-12 13:32:30 -05:00
parent d86cb2b3df
commit a5bcb15d22

View File

@@ -1036,12 +1036,8 @@ var Events = Module("events", {
let elem = event.originalTarget;
if (event.target instanceof Ci.nsIDOMXULTextBoxElement)
for (let e = elem; e instanceof Element; e = e.parentNode)
if (util.computedStyle(e).visibility !== "visible" ||
e.boxObject && e.boxObject.height === 0) {
elem.blur();
break;
}
if (Events.isHidden(elem))
elem.blur();
let win = (elem.ownerDocument || elem).defaultView || elem;
@@ -1233,7 +1229,11 @@ var Events = Module("events", {
popupshown: function onPopupShown(event) {
if (event.originalTarget.localName !== "tooltip" && event.originalTarget.id !== "dactyl-visualbell")
if (modes.main != modes.MENU)
if (Events.isHidden(event.originalTarget)) {
if (event.originalTarget.hidePopup)
event.originalTarget.hidePopup();
}
else if (modes.main != modes.MENU)
modes.push(modes.MENU);
},
@@ -1353,6 +1353,14 @@ var Events = Module("events", {
let (key = isString(event) ? event : events.toString(event))
key === "<Esc>" || key === "<C-[>",
isHidden: function isHidden(elem) {
for (let e = elem; e instanceof Element; e = e.parentNode)
if (util.computedStyle(e).visibility !== "visible" ||
e.boxObject && e.boxObject.height === 0)
return true;
return false;
},
isInputElement: function isInputElement(elem) {
return elem instanceof HTMLInputElement && set.has(util.editableInputs, elem.type) ||
isinstance(elem, [HTMLIsIndexElement, HTMLEmbedElement,