@@ -1239,6 +1239,7 @@ href="https://doc.rust-lang.org/${channel}/rustdoc/how-to-read-rustdoc.html\
12391239 e . preventDefault ( ) ;
12401240 } ) ;
12411241 }
1242+ let currentPointerId = null ;
12421243 const resizer = document . getElementsByClassName ( "sidebar-resizer" ) [ 0 ] ;
12431244 const sidebar = document . getElementsByClassName ( "sidebar" ) [ 0 ] ;
12441245 if ( ! resizer || ! sidebar ) {
@@ -1280,6 +1281,10 @@ href="https://doc.rust-lang.org/${channel}/rustdoc/how-to-read-rustdoc.html\
12801281 hasClass ( document . documentElement , "hide-sidebar" ) ;
12811282 } ;
12821283 const resize = e => {
1284+ if ( currentPointerId === null || currentPointerId !== e . pointerId ) {
1285+ return ;
1286+ }
1287+ e . preventDefault ( ) ;
12831288 const pos = e . clientX - sidebar . offsetLeft - 3 ;
12841289 if ( pos < 50 ) {
12851290 hideSidebar ( ) ;
@@ -1292,22 +1297,42 @@ href="https://doc.rust-lang.org/${channel}/rustdoc/how-to-read-rustdoc.html\
12921297 changeSidebarSize ( Math . min ( pos , window . innerWidth - 100 ) ) ;
12931298 }
12941299 } ;
1295- const stopResize = ( ) => {
1300+ const stopResize = e => {
1301+ if ( currentPointerId === null ) {
1302+ return ;
1303+ }
1304+ e . preventDefault ( ) ;
12961305 removeClass ( resizer , "active" ) ;
1297- window . removeEventListener ( "mousemove " , resize , false ) ;
1298- window . removeEventListener ( "mouseup " , stopResize , false ) ;
1306+ window . removeEventListener ( "pointermove " , resize , false ) ;
1307+ window . removeEventListener ( "pointerup " , stopResize , false ) ;
12991308 removeClass ( document . documentElement , "sidebar-resizing" ) ;
1309+ if ( resizer . releasePointerCapture ) {
1310+ resizer . releasePointerCapture ( currentPointerId ) ;
1311+ currentPointerId = null ;
1312+ }
13001313 } ;
13011314 const initResize = e => {
1302- if ( e . altKey || e . ctrlKey || e . metaKey || e . button !== 0 ) {
1315+ if ( currentPointerId !== null || e . altKey || e . ctrlKey || e . metaKey || e . button !== 0 ) {
13031316 return ;
13041317 }
1305- window . addEventListener ( "mousemove" , resize , false ) ;
1306- window . addEventListener ( "mouseup" , stopResize , false ) ;
1318+ if ( resizer . setPointerCapture ) {
1319+ resizer . setPointerCapture ( e . pointerId ) ;
1320+ if ( ! resizer . hasPointerCapture ( e . pointerId ) ) {
1321+ // unable to capture pointer; something else has it
1322+ // on iOS, this usually means you long-clicked a link instead
1323+ resizer . releasePointerCapture ( e . pointerId ) ;
1324+ return ;
1325+ }
1326+ currentPointerId = e . pointerId ;
1327+ }
1328+ e . preventDefault ( ) ;
1329+ window . addEventListener ( "pointermove" , resize , false ) ;
1330+ window . addEventListener ( "pointercancel" , stopResize , false ) ;
1331+ window . addEventListener ( "pointerup" , stopResize , false ) ;
13071332 addClass ( resizer , "active" ) ;
13081333 addClass ( document . documentElement , "sidebar-resizing" ) ;
13091334 } ;
1310- resizer . addEventListener ( "mousedown " , initResize , false ) ;
1335+ resizer . addEventListener ( "pointerdown " , initResize , false ) ;
13111336} ( ) ) ;
13121337
13131338( function ( ) {
0 commit comments