FIX: only respond to menu open swipes on Andorid

approved
cherry-pick-2-2

#1

FIX: only respond to menu open swipes on Andorid

diff --git a/app/assets/javascripts/discourse/components/site-header.js.es6 b/app/assets/javascripts/discourse/components/site-header.js.es6
index 85913e6..8d126c2 100644
--- a/app/assets/javascripts/discourse/components/site-header.js.es6
+++ b/app/assets/javascripts/discourse/components/site-header.js.es6
@@ -228,6 +228,7 @@ const SiteHeaderComponent = MountWidget.extend(Docking, PanEvents, {
 
   didInsertElement() {
     this._super(...arguments);
+    const { isAndroid } = this.capabilities;
     $(window).on("resize.discourse-menu-panel", () => this.afterRender());
 
     this.appEvents.on("header:show-topic", topic => this.setTopic(topic));
@@ -244,11 +245,16 @@ const SiteHeaderComponent = MountWidget.extend(Docking, PanEvents, {
       }
     });
 
-    this.addTouchListeners($("body"));
+    // Only add listeners for opening menus by swiping them in on Android devices
+    // iOS will respond to these events, but also does swiping for back/forward
+    if (isAndroid) {
+      this.addTouchListeners($("body"));
+    }
   },
 
   willDestroyElement() {
     this._super(...arguments);
+    const { isAndroid } = this.capabilities;
     $("body").off("keydown.header");
     $(window).off("resize.discourse-menu-panel");
 
@@ -256,7 +262,9 @@ const SiteHeaderComponent = MountWidget.extend(Docking, PanEvents, {
     this.appEvents.off("header:hide-topic");
     this.appEvents.off("dom:clean");
 
-    this.removeTouchListeners($("body"));
+    if (isAndroid) {
+      this.removeTouchListeners($("body"));
+    }
 
     Ember.run.cancel(this._scheduledRemoveAnimate);
     window.cancelAnimationFrame(this._scheduledMovingAnimation);

GitHub sha: c3cbff55


#2

This commit has been mentioned on Discourse Meta. There might be relevant details there:


#3

This commit has been mentioned on Discourse Meta. There might be relevant details there:


Approved #4