123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- (function() {
- "use strict";
- namespace = "scroll_";
- testCM("bars_hidden", function(cm) {
- for (var i = 0;; i++) {
- var wrapBox = cm.getWrapperElement().getBoundingClientRect();
- var scrollBox = cm.getScrollerElement().getBoundingClientRect();
- is(wrapBox.bottom < scrollBox.bottom - 10);
- is(wrapBox.right < scrollBox.right - 10);
- if (i == 1) break;
- cm.getWrapperElement().style.height = "auto";
- cm.refresh();
- }
- });
-
- function barH(cm) { return byClassName(cm.getWrapperElement(), "CodeMirror-hscrollbar")[0]; }
- function barV(cm) { return byClassName(cm.getWrapperElement(), "CodeMirror-vscrollbar")[0]; }
- function displayBottom(cm, scrollbar) {
- if (scrollbar && cm.display.scroller.offsetHeight > cm.display.scroller.clientHeight)
- return barH(cm).getBoundingClientRect().top;
- else
- return cm.getWrapperElement().getBoundingClientRect().bottom - 1;
- }
- function displayRight(cm, scrollbar) {
- if (scrollbar && cm.display.scroller.offsetWidth > cm.display.scroller.clientWidth)
- return barV(cm).getBoundingClientRect().left;
- else
- return cm.getWrapperElement().getBoundingClientRect().right - 1;
- }
- function testMovedownFixed(cm, hScroll) {
- cm.setSize("100px", "100px");
- if (hScroll) cm.setValue(new Array(100).join("x"));
- var bottom = displayBottom(cm, hScroll);
- for (var i = 0; i < 30; i++) {
- cm.replaceSelection("x\n");
- var cursorBottom = cm.cursorCoords(null, "window").bottom;
- is(cursorBottom <= bottom);
- }
- is(cursorBottom >= bottom - 5);
- }
- testCM("movedown_fixed", function(cm) {testMovedownFixed(cm, false);});
- testCM("movedown_hscroll_fixed", function(cm) {testMovedownFixed(cm, true);});
- function testMovedownResize(cm, hScroll) {
- cm.getWrapperElement().style.height = "auto";
- if (hScroll) cm.setValue(new Array(100).join("x"));
- cm.refresh();
- for (var i = 0; i < 30; i++) {
- cm.replaceSelection("x\n");
- var bottom = displayBottom(cm, hScroll);
- var cursorBottom = cm.cursorCoords(null, "window").bottom;
- is(cursorBottom <= bottom);
- is(cursorBottom >= bottom - 5);
- }
- }
- testCM("movedown_resize", function(cm) {testMovedownResize(cm, false);});
- testCM("movedown_hscroll_resize", function(cm) {testMovedownResize(cm, true);});
- function testMoveright(cm, wrap, scroll) {
- cm.setSize("100px", "100px");
- if (wrap) cm.setOption("lineWrapping", true);
- if (scroll) {
- cm.setValue("\n" + new Array(100).join("x\n"));
- cm.setCursor(Pos(0, 0));
- }
- var right = displayRight(cm, scroll);
- for (var i = 0; i < 10; i++) {
- cm.replaceSelection("xxxxxxxxxx");
- var cursorRight = cm.cursorCoords(null, "window").right;
- is(cursorRight < right);
- }
- if (!wrap) is(cursorRight > right - 20);
- }
- testCM("moveright", function(cm) {testMoveright(cm, false, false);});
- testCM("moveright_wrap", function(cm) {testMoveright(cm, true, false);});
- testCM("moveright_scroll", function(cm) {testMoveright(cm, false, true);});
- testCM("moveright_scroll_wrap", function(cm) {testMoveright(cm, true, true);});
- testCM("suddenly_wide", function(cm) {
- addDoc(cm, 100, 100);
- cm.replaceSelection(new Array(600).join("l ") + "\n");
- cm.execCommand("goLineUp");
- cm.execCommand("goLineEnd");
- is(barH(cm).scrollLeft > cm.getScrollerElement().scrollLeft - 1);
- });
- testCM("wrap_changes_height", function(cm) {
- var line = new Array(20).join("a ") + "\n";
- cm.setValue(new Array(20).join(line));
- var box = cm.getWrapperElement().getBoundingClientRect();
- cm.setSize(cm.cursorCoords(Pos(0), "window").right - box.left + 2,
- cm.cursorCoords(Pos(19, 0), "window").bottom - box.top + 2);
- cm.setCursor(Pos(19, 0));
- cm.replaceSelection("\n");
- is(cm.cursorCoords(null, "window").bottom < displayBottom(cm, false));
- }, {lineWrapping: true});
- testCM("height_auto_with_gutter_expect_no_scroll_after_line_delete", function(cm) {
- cm.setSize(null, "auto");
- cm.setValue("x\n");
- cm.execCommand("goDocEnd");
- cm.execCommand("delCharBefore");
- eq(cm.getScrollInfo().top, 0);
- cm.scrollTo(null, 10);
- is(cm.getScrollInfo().top < 5);
- }, {lineNumbers: true});
- testCM("bidi_ensureCursorVisible", function(cm) {
- cm.setValue("<dd>وضع الاستخدام. عندما لا تعطى، وهذا الافتراضي إلى الطريقة الاولى\n");
- cm.execCommand("goLineStart");
- eq(cm.getScrollInfo().left, 0);
- cm.execCommand("goCharRight");
- cm.execCommand("goCharRight");
- cm.execCommand("goCharRight");
- eqCursorPos(cm.getCursor(), Pos(0, 3, "before"));
- eq(cm.getScrollInfo().left, 0);
- }, {lineWrapping: false});
- })();
|