[pve-devel] applied: [PATCH widget-toolkit] (partially) fix #1223: add touchscreen override for extjs
Thomas Lamprecht
t.lamprecht at proxmox.com
Fri Mar 30 10:22:21 CEST 2018
Am 03/30/2018 um 09:48 AM schrieb Dominik Csapak:
> the combination of firefox, touchscreen, mouse input and extjs
> prevents normal click/touch input for buttons, lists, etc.
>
> the workaround on firefox was to set
> dom.w3c_touch_events.enabled
> to 0 (in about:config)
>
> or to upgrade to extjs >= 6.5.1 (of which there is no gpl release as of now)
>
I guess you took a quick look at what they changed to address this in
6.5.1 and it is just to much change to backport a similar "full"
solution to our available versions?
Anyway it looks OK, tested and applied.
> so we introduce that workaround as it seems to not disrupt 'normal'
> browsers and non-touchscreen devices
>
> we then still have an issue with scrolling though, since extjs
> now expects the user to drag the content instead of using the wheel
>
> but it is still better than a completely non working interface
>
> Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
> ---
> Toolkit.js | 43 +++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 43 insertions(+)
>
> diff --git a/Toolkit.js b/Toolkit.js
> index 7e62e05..4f1b623 100644
> --- a/Toolkit.js
> +++ b/Toolkit.js
> @@ -139,6 +139,49 @@ Ext.apply(Ext.form.field.VTypes, {
> passwordText: gettext('Passwords do not match')
> });
>
> +// Firefox 52+ Touchscreen bug
> +// see https://www.sencha.com/forum/showthread.php?336762-Examples-don-t-work-in-Firefox-52-touchscreen/page2
> +// and https://bugzilla.proxmox.com/show_bug.cgi?id=1223
> +Ext.define('EXTJS_23846.Element', {
> + override: 'Ext.dom.Element'
> +}, function(Element) {
> + var supports = Ext.supports,
> + proto = Element.prototype,
> + eventMap = proto.eventMap,
> + additiveEvents = proto.additiveEvents;
> +
> + if (Ext.os.is.Desktop && supports.TouchEvents && !supports.PointerEvents) {
> + eventMap.touchstart = 'mousedown';
> + eventMap.touchmove = 'mousemove';
> + eventMap.touchend = 'mouseup';
> + eventMap.touchcancel = 'mouseup';
> +
> + additiveEvents.mousedown = 'mousedown';
> + additiveEvents.mousemove = 'mousemove';
> + additiveEvents.mouseup = 'mouseup';
> + additiveEvents.touchstart = 'touchstart';
> + additiveEvents.touchmove = 'touchmove';
> + additiveEvents.touchend = 'touchend';
> + additiveEvents.touchcancel = 'touchcancel';
> +
> + additiveEvents.pointerdown = 'mousedown';
> + additiveEvents.pointermove = 'mousemove';
> + additiveEvents.pointerup = 'mouseup';
> + additiveEvents.pointercancel = 'mouseup';
> + }
> +});
> +
> +Ext.define('EXTJS_23846.Gesture', {
> + override: 'Ext.event.publisher.Gesture'
> +}, function(Gesture) {
> + var me = Gesture.instance;
> +
> + if (Ext.supports.TouchEvents && !Ext.isWebKit && Ext.os.is.Desktop) {
> + me.handledDomEvents.push('mousedown', 'mousemove', 'mouseup');
> + me.registerEvents();
> + }
> +});
> +
> // we always want the number in x.y format and never in, e.g., x,y
> Ext.define('PVE.form.field.Number', {
> override: 'Ext.form.field.Number',
>
More information about the pve-devel
mailing list