From 8b5038befcccc29bdf8ea1f0f5745277e87e072f Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Mon, 29 Sep 2014 05:22:38 -0400
Subject: [PATCH] Fix handling of smart list inputs
---
program/js/common.js | 40 ++++++++++++++++++++++++----------------
1 files changed, 24 insertions(+), 16 deletions(-)
diff --git a/program/js/common.js b/program/js/common.js
index b532c36..7664306 100644
--- a/program/js/common.js
+++ b/program/js/common.js
@@ -31,7 +31,6 @@
var SHIFT_KEY = 2;
var CONTROL_SHIFT_KEY = 3;
-
/**
* Default browser check class
* @constructor
@@ -224,7 +223,7 @@
p.element = document;
if (!p.object._rc_events)
- p.object._rc_events = [];
+ p.object._rc_events = {};
var key = p.event + '*' + p.method;
if (!p.object._rc_events[key])
@@ -287,8 +286,11 @@
is_keyboard: function(e)
{
return e && (
- (e.mozInputSource && e.mozInputSource == e.MOZ_SOURCE_KEYBOARD) ||
- (!e.pageX && (e.pageY || 0) <= 0 && !e.clientX && (e.clientY || 0) <= 0)
+ (e.pointerType !== undefined && e.pointerType !== 'mouse') || // IE 11+
+ (e.mozInputSource && e.mozInputSource == e.MOZ_SOURCE_KEYBOARD) || // Firefox
+ (e.offsetX === 0 && e.offsetY === 0) || // Opera
+ (!e.pageX && (e.pageY || 0) <= 0 && !e.clientX && (e.clientY || 0) <= 0) || // others
+ (bw.ie && rcube_event._last_keyboard_event && rcube_event._last_keyboard_event.target == e.target) // hack for IE <= 10
);
},
@@ -491,21 +493,25 @@
function rcube_find_object(id, d)
{
var n, f, obj, e;
- if(!d) d = document;
- if(d.getElementsByName && (e = d.getElementsByName(id)))
+ if (!d) d = document;
+
+ if (d.getElementById)
+ if (obj = d.getElementById(id))
+ return obj;
+
+ if (!obj && d.getElementsByName && (e = d.getElementsByName(id)))
obj = e[0];
- if(!obj && d.getElementById)
- obj = d.getElementById(id);
- if(!obj && d.all)
+
+ if (!obj && d.all)
obj = d.all[id];
- if(!obj && d.images.length)
+ if (!obj && d.images.length)
obj = d.images[id];
if (!obj && d.forms.length) {
for (f=0; f<d.forms.length; f++) {
- if(d.forms[f].name == id)
+ if (d.forms[f].name == id)
obj = d.forms[f];
else if(d.forms[f].elements[id])
obj = d.forms[f].elements[id];
@@ -513,7 +519,8 @@
}
if (!obj && d.layers) {
- if (d.layers[id]) obj = d.layers[id];
+ if (d.layers[id])
+ obj = d.layers[id];
for (n=0; !obj && n<d.layers.length; n++)
obj = rcube_find_object(id, d.layers[n].document);
}
@@ -527,8 +534,8 @@
var mouse = rcube_event.get_mouse_pos(ev),
pos = $(obj).offset();
- return ((mouse.x >= pos.left) && (mouse.x < (pos.left + obj.offsetWidth)) &&
- (mouse.y >= pos.top) && (mouse.y < (pos.top + obj.offsetHeight)));
+ return (mouse.x >= pos.left) && (mouse.x < (pos.left + obj.offsetWidth)) &&
+ (mouse.y >= pos.top) && (mouse.y < (pos.top + obj.offsetHeight));
};
@@ -540,6 +547,7 @@
(path ? "; path=" + path : "") +
(domain ? "; domain=" + domain : "") +
(secure ? "; secure" : "");
+
document.cookie = curCookie;
};
@@ -607,8 +615,8 @@
}
// array utility function
-Array.prototype.last = function() {
- return this[this.length-1];
+jQuery.last = function(arr) {
+ return arr && arr.length ? arr[arr.length-1] : undefined;
}
// jQuery plugin to emulate HTML5 placeholder attributes on input elements
--
Gitblit v1.9.1