|
44 | 44 | this.orig.state.trackAlignable = new TrackAlignable(this.orig) |
45 | 45 | } |
46 | 46 | this.lockButton.title = this.edit.phrase("Toggle locked scrolling"); |
| 47 | + this.lockButton.setAttribute("aria-label", this.lockButton.title); |
47 | 48 |
|
48 | 49 | this.orig.state.diffViews = [this]; |
49 | 50 | var classLocation = options.chunkClassLocation || "background"; |
|
509 | 510 | copy.chunk = chunk; |
510 | 511 | copy.style.top = (chunk.origTo > chunk.origFrom ? top : dv.edit.heightAtLine(chunk.editFrom, "local") - sTopEdit) + "px"; |
511 | 512 | copy.setAttribute("role", "button"); |
| 513 | + copy.setAttribute("tabindex", "0"); |
| 514 | + copy.setAttribute("aria-label", copy.title); |
512 | 515 |
|
513 | 516 | if (editOriginals) { |
514 | 517 | var topReverse = dv.edit.heightAtLine(chunk.editFrom, "local") - sTopEdit; |
|
520 | 523 | copyReverse.style.top = topReverse + "px"; |
521 | 524 | dv.type == "right" ? copyReverse.style.left = "2px" : copyReverse.style.right = "2px"; |
522 | 525 | copyReverse.setAttribute("role", "button"); |
| 526 | + copyReverse.setAttribute("tabindex", "0"); |
| 527 | + copyReverse.setAttribute("aria-label", copyReverse.title); |
523 | 528 | } |
524 | 529 | } |
525 | 530 | } |
|
602 | 607 | function buildGap(dv) { |
603 | 608 | var lock = dv.lockButton = elt("div", null, "CodeMirror-merge-scrolllock"); |
604 | 609 | lock.setAttribute("role", "button"); |
| 610 | + lock.setAttribute("tabindex", "0"); |
605 | 611 | var lockWrap = elt("div", [lock], "CodeMirror-merge-scrolllock-wrap"); |
606 | 612 | CodeMirror.on(lock, "click", function() { setScrollLock(dv, !dv.lockScroll); }); |
| 613 | + CodeMirror.on(lock, "keyup", function(e) { e.key === "Enter" && setScrollLock(dv, !dv.lockScroll); }); |
607 | 614 | var gapElts = [lockWrap]; |
608 | 615 | if (dv.mv.options.revertButtons !== false) { |
609 | 616 | dv.copyButtons = elt("div", null, "CodeMirror-merge-copybuttons-" + dv.type); |
610 | | - CodeMirror.on(dv.copyButtons, "click", function(e) { |
| 617 | + function copyButtons(e) { |
611 | 618 | var node = e.target || e.srcElement; |
612 | 619 | if (!node.chunk) return; |
613 | 620 | if (node.className == "CodeMirror-merge-copy-reverse") { |
614 | 621 | copyChunk(dv, dv.orig, dv.edit, node.chunk); |
615 | 622 | return; |
616 | 623 | } |
617 | 624 | copyChunk(dv, dv.edit, dv.orig, node.chunk); |
618 | | - }); |
| 625 | + } |
| 626 | + CodeMirror.on(dv.copyButtons, "click", copyButtons); |
| 627 | + CodeMirror.on(dv.copyButtons, "keyup", function(e) { e.key === "Enter" && copyButtons(e); }); |
619 | 628 | gapElts.unshift(dv.copyButtons); |
620 | 629 | } |
621 | 630 | if (dv.mv.options.connect != "align") { |
|
0 commit comments