Enabling `w3c_touch_events` on desktop Firefox is causing major problems with ExtJS6

RESOLVED FIXED

Status

Tech Evangelism
Desktop
P3
normal
RESOLVED FIXED
2 years ago
2 months ago

People

(Reporter: Maciej Jaros, Unassigned)

Tracking

Firefox 47

Firefox Tracking Flags

(Not tracked)

Details

(Whiteboard: [sitewait])

(Reporter)

Description

2 years ago
User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0
Build ID: 20160623154057

Steps to reproduce:

1. Updated Firefox (have 47.0.1 now).

Not sure if this was during update, but I notice I have this options changed (don't remember changing them manually):
dom.w3c_touch_events.enabled 1
dom.w3c_touch_events.expose false


Actual results:

All ExJS 6 application stopped working (i.e. no click events seem to go through -- no buttons etc work).


Expected results:

Everything should work. Maybe fallback to standard events?

When I reset both values to defaults ExtJS 6 application work (after reloading the application page).
(Reporter)

Comment 1

2 years ago
One more note -- the same problem manifested in Firefox Developer. I'm sure ExtJS6 worked in both last month as I was working on ExtJS6 app last month. Judging from update history I was using FF 47.0 then (I also see FF 48.0.1 update, but status says the update timeout). Seems like I didn't update FF dev then and jumped from 46.0a2 (version working with ExtJS6) to 50.0a2 (not working without reset).

Updated

2 years ago
Component: Untriaged → Event Handling
Product: Firefox → Core
dom.w3c_touch_events.enabled seems to be 0 by default. Maybe an addon flipped it for you?

Stone or Ben, have you run into the problem Maciej reports here?
Flags: needinfo?(sshih)
Flags: needinfo?(bhsu)
I created a sample app to reproduce this bug. There are two factors cause this bug
1) ExtJS6 use deprecated API 'navigator.pointerEnabled' (see [1]) to check if pointer events are supported.
2) The condition to add mouse events listeners in ext-*.js doesn't work correctly on firefox. It checks
(!handledDomEvents.length || (supportsTouchEvents && Ext.isWebKit && Ext.os.is.Desktop))
On my laptop, handledDomEvents.length is 4 because touch is supported. Ext.isWebKit is false. So it won't listen mouse events.

I also found window.PointerEvent doesn't work correctly on firefox with my local build. Need to take a look at it.

[1] https://msdn.microsoft.com/en-us/library/windows/apps/hh972607.aspx
Flags: needinfo?(sshih)

Comment 4

2 years ago
Sorry for such a late response, and thanks for Stone's work!
Flags: needinfo?(bhsu)
Here are some works I would like to follow up. Will post it if any updates.
1) clarify why it works when pointer event is disabled
2) think about is there anything we can do to handle this problem
I tried to update from 46.0a2 to 50.0a2 and the value of "dom.w3c_touch_events.enabled" remains on 0.
Stone, since you are going to follow up, I assign this bug to you for now. Thanks for taking care of this :)
Assignee: nobody → sshih
When the UA supports pointer events or touch events, ext-all-rtl-debug.js wouldn't listen mouse events (except webkit based desktop UA with touch supported). It should consider to add mouse events even touch events are supported because users may still use mouse to control UA.
Should this move to Tech Evangelism?
Flags: needinfo?(sshih)
I think this is a bug of ExtJS6. I had submitted a bug to ExtJS6 and will track its status.
Flags: needinfo?(sshih)

Comment 11

2 years ago
(In reply to Ming-Chou Shih [:stone] (PTO 9/24~9/29) from comment #10)
> I think this is a bug of ExtJS6. I had submitted a bug to ExtJS6 and will
> track its status.

Share the link to extjs bug plz

Comment 12

2 years ago
(In reply to yuri.horus from comment #11)
> (In reply to Ming-Chou Shih [:stone] (PTO 9/24~9/29) from comment #10)
> > I think this is a bug of ExtJS6. I had submitted a bug to ExtJS6 and will
> > track its status.
> 
> Share the link to extjs bug plz

https://www.sencha.com/forum/showthread.php?328814-Ext-6-2-0-don-t-listen-mouse-events-when-touch-or-pointer-events-are-supported

Comment 13

a year ago
Do we know if this is a bug or if it is tech evangelism?  I think it's the same bug described here: https://bugzilla.mozilla.org/show_bug.cgi?id=1321758 which I tracked down to a build with mozregression, but that build could just be the one where this option was enabled by default.

It would be nice to either get this fixed or know that it was Extjs and reach out, and get one or both of these issues closed.
I think it's tech evangelism. Move it to tech evangelism.
Assignee: sshih → nobody
Component: Event Handling → Desktop
Product: Core → Tech Evangelism
Version: 47 Branch → Firefox 47
Looks like this bug has been diagnosed and outreach is done as per comment 12. Setting whiteboard to sitewait.
Status: UNCONFIRMED → NEW
Ever confirmed: true
Whiteboard: [sitewait]
Duplicate of this bug: 1350816
Duplicate of this bug: 1321758
Hi Maciej, are you able to test if there's been any changes/fixes here?
Flags: needinfo?(egil)
Priority: -- → P3
(Reporter)

Comment 19

2 months ago
Seems like it was fixed in ExtJS 6.5 :-).

Steps
1. Open `about:config`.
2. Filter to `touch_events`.
3. Change `dom.w3c_touch_events.enabled` to `1`.
4. Open ExtJS 6.2 e.g. https://examples.sencha.com/extjs/6.2.1/examples/kitchensink/#form-fieldcontainer
5. Click on button (e.g. "Load test data" on that page) -> no effect.
6. Open ExtJS 6.5 e.g. https://examples.sencha.com/extjs/6.5.0/examples/kitchensink/#form-fieldcontainer
7. Click on button (e.g. "Load test data" on that page) -> works fine.
Flags: needinfo?(egil)
Great, thanks!
Status: NEW → RESOLVED
Last Resolved: 2 months ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.