@@ -1239,6 +1239,7 @@ href="https://doc.rust-lang.org/${channel}/rustdoc/how-to-read-rustdoc.html\
1239
1239
e . preventDefault ( ) ;
1240
1240
} ) ;
1241
1241
}
1242
+ let currentPointerId = null ;
1242
1243
const resizer = document . getElementsByClassName ( "sidebar-resizer" ) [ 0 ] ;
1243
1244
const sidebar = document . getElementsByClassName ( "sidebar" ) [ 0 ] ;
1244
1245
if ( ! resizer || ! sidebar ) {
@@ -1280,6 +1281,10 @@ href="https://doc.rust-lang.org/${channel}/rustdoc/how-to-read-rustdoc.html\
1280
1281
hasClass ( document . documentElement , "hide-sidebar" ) ;
1281
1282
} ;
1282
1283
const resize = e => {
1284
+ if ( currentPointerId === null || currentPointerId !== e . pointerId ) {
1285
+ return ;
1286
+ }
1287
+ e . preventDefault ( ) ;
1283
1288
const pos = e . clientX - sidebar . offsetLeft - 3 ;
1284
1289
if ( pos < 50 ) {
1285
1290
hideSidebar ( ) ;
@@ -1292,22 +1297,42 @@ href="https://doc.rust-lang.org/${channel}/rustdoc/how-to-read-rustdoc.html\
1292
1297
changeSidebarSize ( Math . min ( pos , window . innerWidth - 100 ) ) ;
1293
1298
}
1294
1299
} ;
1295
- const stopResize = ( ) => {
1300
+ const stopResize = e => {
1301
+ if ( currentPointerId === null ) {
1302
+ return ;
1303
+ }
1304
+ e . preventDefault ( ) ;
1296
1305
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 ) ;
1299
1308
removeClass ( document . documentElement , "sidebar-resizing" ) ;
1309
+ if ( resizer . releasePointerCapture ) {
1310
+ resizer . releasePointerCapture ( currentPointerId ) ;
1311
+ currentPointerId = null ;
1312
+ }
1300
1313
} ;
1301
1314
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 ) {
1303
1316
return ;
1304
1317
}
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 ) ;
1307
1332
addClass ( resizer , "active" ) ;
1308
1333
addClass ( document . documentElement , "sidebar-resizing" ) ;
1309
1334
} ;
1310
- resizer . addEventListener ( "mousedown " , initResize , false ) ;
1335
+ resizer . addEventListener ( "pointerdown " , initResize , false ) ;
1311
1336
} ( ) ) ;
1312
1337
1313
1338
( function ( ) {
0 commit comments