From 0036aaf4b67d55e621ac2e4553a98dc80d2ca727 Mon Sep 17 00:00:00 2001 From: Paul Bakaus Date: Fri, 21 Nov 2008 19:40:45 +0000 Subject: [PATCH] draggable: added missing default for zIndex and cursorAt, added missing scroll tests (unfortunately showing big regressions that need to be fixed prior to 1.6) --- tests/draggable.js | 241 +++++++++++++++++++++++++++++++++---------- tests/droppable.html | 8 +- ui/ui.draggable.js | 4 +- 3 files changed, 196 insertions(+), 57 deletions(-) diff --git a/tests/draggable.js b/tests/draggable.js index 31a820613..4c62d45a2 100644 --- a/tests/draggable.js +++ b/tests/draggable.js @@ -476,85 +476,196 @@ test("callbacks occurance count", function() { module("draggable: Scroll offsets"); + +function testScroll(position) { + $("#main").css('position', position); + drag(el, 50, 50); + moved(50, 50, position+' parent'); + +} + +function setScroll(what) { + if(what) { + $(document).scrollTop(100); $(document).scrollLeft(100); + } else { + $("#main")[0].scrollTop = 100; $("#main")[0].scrollLeft = 100; + } +} + +function restoreScroll(what) { + if(what) { + $(document).scrollTop(0); $(document).scrollLeft(0); + } else { + $("#main")[0].scrollTop = 0; $("#main")[0].scrollLeft = 0; + } +} + test("{ helper: 'original' }, relative, with scroll offset on parent", function() { + el = $("#draggable1").draggable({ helper: "original" }); - $("#main")[0].scrollTop = 100; - drag(el, 50, 50); - moved(50, 50); - $("#main")[0].scrollTop = 0; + + setScroll(); + testScroll('relative'); + + setScroll(); + testScroll('static'); + + setScroll(); + testScroll('absolute'); + + restoreScroll(); + }); test("{ helper: 'original' }, relative, with scroll offset on root", function() { + el = $("#draggable1").draggable({ helper: "original" }); - $(document).scrollTop(100); - drag(el, 50, 50); - moved(50, 50); - $(document).scrollTop(0); + + setScroll('root'); + testScroll('relative'); + + setScroll('root'); + testScroll('static'); + + setScroll('root'); + testScroll('absolute'); + + restoreScroll('root'); + }); test("{ helper: 'original' }, relative, with scroll offset on root and parent", function() { + el = $("#draggable1").draggable({ helper: "original" }); - $(document).scrollTop(100); - $("#main")[0].scrollTop = 100; - drag(el, 50, 50); - moved(50, 50); - $(document).scrollTop(0); - $("#main")[0].scrollTop = 0; + + setScroll(); + setScroll('root'); + testScroll('relative'); + + setScroll(); + setScroll('root'); + testScroll('static'); + + setScroll(); + setScroll('root'); + testScroll('absolute'); + + restoreScroll(); + restoreScroll('root'); + }); test("{ helper: 'original' }, absolute, with scroll offset on parent", function() { + el = $("#draggable1").css({ position: 'absolute', top: 0, left: 0 }).draggable({ helper: "original" }); - $("#main")[0].scrollTop = 100; - drag(el, 50, 50); - moved(50, 50); - $("#main")[0].scrollTop = 0; + + setScroll(); + testScroll('relative'); + + setScroll(); + testScroll('static'); + + setScroll(); + testScroll('absolute'); + + restoreScroll(); + }); test("{ helper: 'original' }, absolute, with scroll offset on root", function() { + el = $("#draggable1").css({ position: 'absolute', top: 0, left: 0 }).draggable({ helper: "original" }); - $(document).scrollTop(100); - drag(el, 50, 50); - moved(50, 50); - $(document).scrollTop(0); + + setScroll('root'); + testScroll('relative'); + + setScroll('root'); + testScroll('static'); + + setScroll('root'); + testScroll('absolute'); + + restoreScroll('root'); + }); test("{ helper: 'original' }, absolute, with scroll offset on root and parent", function() { + el = $("#draggable1").css({ position: 'absolute', top: 0, left: 0 }).draggable({ helper: "original" }); - $(document).scrollTop(100); - $("#main")[0].scrollTop = 100; - drag(el, 50, 50); - moved(50, 50); - $(document).scrollTop(0); - $("#main")[0].scrollTop = 0; + + setScroll(); + setScroll('root'); + testScroll('relative'); + + setScroll(); + setScroll('root'); + testScroll('static'); + + setScroll(); + setScroll('root'); + testScroll('absolute'); + + restoreScroll(); + restoreScroll('root'); + }); //Fixed not for IE < 7 if(!($.browser.msie && $.browser.version < 7)) { test("{ helper: 'original' }, fixed, with scroll offset on parent", function() { + el = $("#draggable1").css({ position: 'fixed', top: 0, left: 0 }).draggable({ helper: "original" }); - $("#main")[0].scrollTop = 100; - drag(el, 50, 50); - moved(50, 50); - $("#main")[0].scrollTop = 0; + + setScroll(); + testScroll('relative'); + + setScroll(); + testScroll('static'); + + setScroll(); + testScroll('absolute'); + + restoreScroll(); + }); test("{ helper: 'original' }, fixed, with scroll offset on root", function() { + el = $("#draggable1").css({ position: 'fixed', top: 0, left: 0 }).draggable({ helper: "original" }); - $(document).scrollTop(100); - drag(el, 50, 50); - moved(50, 50); - $(document).scrollTop(0); + + setScroll('root'); + testScroll('relative'); + + setScroll('root'); + testScroll('static'); + + setScroll('root'); + testScroll('absolute'); + + restoreScroll('root'); + }); test("{ helper: 'original' }, fixed, with scroll offset on root and parent", function() { + el = $("#draggable1").css({ position: 'fixed', top: 0, left: 0 }).draggable({ helper: "original" }); - $(document).scrollTop(100); - $("#main")[0].scrollTop = 100; - drag(el, 50, 50); - moved(50, 50); - $(document).scrollTop(0); - $("#main")[0].scrollTop = 0; + + setScroll(); + setScroll('root'); + testScroll('relative'); + + setScroll(); + setScroll('root'); + testScroll('static'); + + setScroll(); + setScroll('root'); + testScroll('absolute'); + + restoreScroll(); + restoreScroll('root'); + }); } @@ -571,14 +682,13 @@ test("{ helper: 'clone' }, absolute", function() { } }); drag(el, 1, 1); - same({ top: helperOffset.top-1, left: helperOffset.left-1 }, origOffset, 'dragged[' + dragged.dx + ', ' + dragged.dy + '] '); }); test("{ helper: 'clone' }, absolute with scroll offset on parent", function() { - $("#main")[0].scrollTop = 100; + setScroll(); var helperOffset = null; var origOffset = $("#draggable1").offset(); @@ -586,34 +696,52 @@ test("{ helper: 'clone' }, absolute with scroll offset on parent", function() { helperOffset = ui.helper.offset(); } }); + $("#main").css('position', 'relative'); drag(el, 1, 1); + same({ top: helperOffset.top-1, left: helperOffset.left-1 }, origOffset, 'dragged[' + dragged.dx + ', ' + dragged.dy + '] '); + $("#main").css('position', 'static'); + drag(el, 1, 1); same({ top: helperOffset.top-1, left: helperOffset.left-1 }, origOffset, 'dragged[' + dragged.dx + ', ' + dragged.dy + '] '); - $("#main")[0].scrollTop = 0; + + $("#main").css('position', 'absolute'); + drag(el, 1, 1); + same({ top: helperOffset.top-1, left: helperOffset.left-1 }, origOffset, 'dragged[' + dragged.dx + ', ' + dragged.dy + '] '); + + restoreScroll(); }); test("{ helper: 'clone' }, absolute with scroll offset on root", function() { - $(document).scrollTop(100); + setScroll('root'); var helperOffset = null; var origOffset = $("#draggable1").offset(); el = $("#draggable1").draggable({ helper: "clone", drag: function(event, ui) { helperOffset = ui.helper.offset(); } }); - + + $("#main").css('position', 'relative'); drag(el, 1, 1); + same({ top: helperOffset.top-1, left: helperOffset.left-1 }, origOffset, 'dragged[' + dragged.dx + ', ' + dragged.dy + '] '); + $("#main").css('position', 'static'); + drag(el, 1, 1); same({ top: helperOffset.top-1, left: helperOffset.left-1 }, origOffset, 'dragged[' + dragged.dx + ', ' + dragged.dy + '] '); - $(document).scrollTop(0); + + $("#main").css('position', 'absolute'); + drag(el, 1, 1); + same({ top: helperOffset.top-1, left: helperOffset.left-1 }, origOffset, 'dragged[' + dragged.dx + ', ' + dragged.dy + '] '); + + restoreScroll('root'); }); test("{ helper: 'clone' }, absolute with scroll offset on root and parent", function() { - $(document).scrollTop(100); - $("#main")[0].scrollTop = 100; + setScroll('root'); + setScroll(); var helperOffset = null; var origOffset = $("#draggable1").offset(); @@ -621,11 +749,20 @@ test("{ helper: 'clone' }, absolute with scroll offset on root and parent", func helperOffset = ui.helper.offset(); } }); + $("#main").css('position', 'relative'); drag(el, 1, 1); + same({ top: helperOffset.top-1, left: helperOffset.left-1 }, origOffset, 'dragged[' + dragged.dx + ', ' + dragged.dy + '] '); + $("#main").css('position', 'static'); + drag(el, 1, 1); + same({ top: helperOffset.top-1, left: helperOffset.left-1 }, origOffset, 'dragged[' + dragged.dx + ', ' + dragged.dy + '] '); + + $("#main").css('position', 'absolute'); + drag(el, 1, 1); same({ top: helperOffset.top-1, left: helperOffset.left-1 }, origOffset, 'dragged[' + dragged.dx + ', ' + dragged.dy + '] '); - $(document).scrollTop(0); - $("#main")[0].scrollTop = 0; + + restoreScroll('root'); + restoreScroll(); }); diff --git a/tests/droppable.html b/tests/droppable.html index ec4bb758b..d2a4e0beb 100644 --- a/tests/droppable.html +++ b/tests/droppable.html @@ -18,9 +18,8 @@ @@ -32,9 +31,10 @@
    -
    +
    Draggable
    Droppable
    +
     
    diff --git a/ui/ui.draggable.js b/ui/ui.draggable.js index abf1cddbc..d247ac09a 100644 --- a/ui/ui.draggable.js +++ b/ui/ui.draggable.js @@ -369,6 +369,7 @@ $.extend($.ui.draggable, { containment: false, cssNamespace: "ui", cursor: "default", + cursorAt: null, delay: 0, distance: 1, grid: false, @@ -386,7 +387,8 @@ $.extend($.ui.draggable, { snap: false, snapMode: "both", snapTolerance: 20, - stack: false + stack: false, + zIndex: null } }); -- 2.39.5