Bug 1348828 - Only prevent default behavior of scroll event if the tree is scrollable. draft
authorJared Wein <jwein@mozilla.com>
Mon, 03 Apr 2017 21:51:11 -0400
changeset 555312 6d4684929c3ddefdb0c8f0b8641d430676178568
parent 555310 b5d8b27a753725c1de41ffae2e338798f3b5cacd
child 555313 9fe56a625e0ae35d69ae03e22598a37820864ed5
push id52212
push userbmo:jaws@mozilla.com
push dateTue, 04 Apr 2017 01:51:52 +0000
bugs1348828
milestone55.0a1
Bug 1348828 - Only prevent default behavior of scroll event if the tree is scrollable. MozReview-Commit-ID: AGS103gy08O
browser/components/preferences/in-content/main.xul
toolkit/content/widgets/tree.xml
--- a/browser/components/preferences/in-content/main.xul
+++ b/browser/components/preferences/in-content/main.xul
@@ -323,17 +323,17 @@
   </vbox>
 </groupbox>
 
 <groupbox id="oneClickSearchProvidersGroup" data-category="paneGeneral">
   <caption label="&oneClickSearchEngines.label;"/>
   <label>&chooseWhichOneToDisplay.label;</label>
 
   <tree id="engineList" flex="1" rows="8" hidecolumnpicker="true" editable="true"
-        seltype="single">
+        seltype="single" allowunderflowscroll="true">
     <treechildren id="engineChildren" flex="1"/>
     <treecols>
       <treecol id="engineShown" type="checkbox" editable="true" sortable="false"/>
       <treecol id="engineName" flex="4" label="&engineNameColumn.label;" sortable="false"/>
       <treecol id="engineKeyword" flex="1" label="&engineKeywordColumn.label;" editable="true"
                 sortable="false"/>
     </treecols>
   </tree>
--- a/toolkit/content/widgets/tree.xml
+++ b/toolkit/content/widgets/tree.xml
@@ -712,19 +712,29 @@
           }
         ]]>
       </handler>
       <handler event="touchend">
         <![CDATA[
           this._touchY = -1;
         ]]>
       </handler>
-      <handler event="MozMousePixelScroll" preventdefault="true"/>
-      <handler event="DOMMouseScroll" preventdefault="true">
+      <handler event="MozMousePixelScroll">
         <![CDATA[
+          if (this.getAttribute("allowunderflowscroll") != "true" &&
+              this.getAttribute("hidevscroll") != "true")
+            event.preventDefault();
+        ]]>
+      </handler>
+      <handler event="DOMMouseScroll">
+        <![CDATA[
+          if (this.getAttribute("allowunderflowscroll") != "true" &&
+              this.getAttribute("hidevscroll") != "true")
+            event.preventDefault();
+
           if (this._editingColumn)
             return;
           if (event.axis == event.HORIZONTAL_AXIS)
             return;
 
           var rows = event.detail;
           if (rows == UIEvent.SCROLL_PAGE_UP)
             this.treeBoxObject.scrollByPages(-1);