(cm)
| 3738 | var scrollbarModel = {"native": NativeScrollbars, "null": NullScrollbars}; |
| 3739 | |
| 3740 | function initScrollbars(cm) { |
| 3741 | if (cm.display.scrollbars) { |
| 3742 | cm.display.scrollbars.clear(); |
| 3743 | if (cm.display.scrollbars.addClass) |
| 3744 | { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); } |
| 3745 | } |
| 3746 | |
| 3747 | cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) { |
| 3748 | cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller); |
| 3749 | // Prevent clicks in the scrollbars from killing focus |
| 3750 | on(node, "mousedown", function () { |
| 3751 | if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); } |
| 3752 | }); |
| 3753 | node.setAttribute("cm-not-content", "true"); |
| 3754 | }, function (pos, axis) { |
| 3755 | if (axis == "horizontal") { setScrollLeft(cm, pos); } |
| 3756 | else { updateScrollTop(cm, pos); } |
| 3757 | }, cm); |
| 3758 | if (cm.display.scrollbars.addClass) |
| 3759 | { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); } |
| 3760 | } |
| 3761 | |
| 3762 | // Operations are used to wrap a series of changes to the editor |
| 3763 | // state in such a way that each change won't have to update the |
no test coverage detected