Changeset 28093 in webkit


Ignore:
Timestamp:
Nov 27, 2007 5:12:22 PM (16 years ago)
Author:
timothy@apple.com
Message:

Reviewed by Sam Weinig.

Bug 16165: Dragging the inspector toolbar should move the window
http://bugs.webkit.org/show_bug.cgi?id=16165

  • page/inspector/DocumentPanel.js: Call the new drag functions, and cleanup code.
  • page/inspector/inspector.css: Only make the toolbar transparent in detached mode.
  • page/inspector/inspector.js: Call the new drag functions, and cleanup code. Add toolbar drag functions that move the window.
Location:
trunk/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r28085 r28093  
     12007-11-27  Timothy Hatcher  <timothy@apple.com>
     2
     3        Reviewed by Sam Weinig.
     4
     5        Bug 16165: Dragging the inspector toolbar should move the window
     6        http://bugs.webkit.org/show_bug.cgi?id=16165
     7
     8        * page/inspector/DocumentPanel.js: Call the new drag functions, and cleanup code.
     9        * page/inspector/inspector.css: Only make the toolbar transparent in detached mode.
     10        * page/inspector/inspector.js: Call the new drag functions, and cleanup code. Add
     11          toolbar drag functions that move the window.
     12
    1132007-11-27  Antti Koivisto  <antti@apple.com>
    214
  • trunk/WebCore/page/inspector/DocumentPanel.js

    r28002 r28093  
    699699    rightSidebarResizerDragStart: function(event)
    700700    {
    701         var panel = this;
    702         WebInspector.dividerDragStart(this.views.dom.sidebarElement, function(event) { panel.rightSidebarResizerDrag(event) }, function(event) { panel.rightSidebarResizerDragEnd(event) }, event, "col-resize");
     701        if (this.sidebarDragEventListener || this.sidebarDragEndEventListener)
     702            return this.rightSidebarResizerDragEnd(event);
     703
     704        this.sidebarDragEventListener = this.rightSidebarResizerDrag.bind(this);
     705        this.sidebarDragEndEventListener = this.rightSidebarResizerDragEnd.bind(this);
     706        WebInspector.elementDragStart(this.views.dom.sidebarElement, this.sidebarDragEventListener, this.sidebarDragEndEventListener, event, "col-resize");
    703707    },
    704708
    705709    rightSidebarResizerDragEnd: function(event)
    706710    {
    707         var panel = this;
    708         WebInspector.dividerDragEnd(this.views.dom.sidebarElement, function(event) { panel.rightSidebarResizerDrag(event) }, function(event) { panel.rightSidebarResizerDragEnd(event) }, event);
     711        WebInspector.elementDragEnd(this.views.dom.sidebarElement, this.sidebarDragEventListener, this.sidebarDragEndEventListener, event);
     712        delete this.sidebarDragEventListener;
     713        delete this.sidebarDragEndEventListener;
    709714    },
    710715
    711716    rightSidebarResizerDrag: function(event)
    712717    {
    713         var rightSidebar = this.views.dom.sidebarElement;
    714         if (rightSidebar.dragging == true) {
    715             var x = event.clientX + window.scrollX;
    716 
    717             var leftSidebarWidth = window.getComputedStyle(document.getElementById("sidebar")).getPropertyCSSValue("width").getFloatValue(CSSPrimitiveValue.CSS_PX);
    718             var newWidth = Number.constrain(window.innerWidth - x, 100, window.innerWidth - leftSidebarWidth - 100);
    719 
    720             if (x == newWidth)
    721                 rightSidebar.dragLastX = x;
    722 
    723             rightSidebar.style.width = newWidth + "px";
    724             this.views.dom.sideContentElement.style.right = newWidth + "px";
    725             this.views.dom.sidebarResizeElement.style.right = (newWidth - 3) + "px";
    726 
    727             this.updateTreeSelection();
    728             this.updateBreadcrumbSizes();
    729 
    730             event.preventDefault();
    731         }
     718        var x = event.pageX;
     719
     720        var leftSidebarWidth = document.getElementById("sidebar").offsetWidth;
     721        var newWidth = Number.constrain(window.innerWidth - x, 100, window.innerWidth - leftSidebarWidth - 100);
     722
     723        this.views.dom.sidebarElement.style.width = newWidth + "px";
     724        this.views.dom.sideContentElement.style.right = newWidth + "px";
     725        this.views.dom.sidebarResizeElement.style.right = (newWidth - 3) + "px";
     726
     727        this.updateTreeSelection();
     728        this.updateBreadcrumbSizes();
     729
     730        event.preventDefault();
    732731    }
    733732}
  • trunk/WebCore/page/inspector/inspector.css

    r28075 r28093  
    6969}
    7070
    71 .platform-mac-leopard #toolbar {
     71body.detached.platform-mac-leopard #toolbar {
    7272    background: transparent !important;
    7373}
  • trunk/WebCore/page/inspector/inspector.js

    r28039 r28093  
    224224WebInspector.loaded = function()
    225225{
    226     document.body.addStyleClass("platform-" + InspectorController.platform());
     226    var platform = InspectorController.platform();
     227    document.body.addStyleClass("platform-" + platform);
    227228
    228229    this.fileOutline = new TreeOutline(document.getElementById("list"));
     
    286287    document.getElementById("sidebarResizer").addEventListener("mousedown", this.sidebarResizerDragStart, true);
    287288    document.getElementById("searchResultsResizer").addEventListener("mousedown", this.searchResultsResizerDragStart, true);
     289
     290    if (platform === "mac-leopard")
     291        document.getElementById("toolbar").addEventListener("mousedown", this.toolbarDragStart, true);
    288292
    289293    document.body.addStyleClass("detached");
     
    541545}
    542546
     547WebInspector.toolbarDragStart = function(event)
     548{
     549    var toolbar = document.getElementById("toolbar");
     550    if (event.target !== toolbar || WebInspector.attached)
     551        return;
     552
     553    toolbar.lastScreenX = event.screenX;
     554    toolbar.lastScreenY = event.screenY;
     555
     556    document.addEventListener("mousemove", WebInspector.toolbarDrag, true);
     557    document.addEventListener("mouseup", WebInspector.toolbarDragEnd, true);
     558    document.body.style.cursor = "default";
     559
     560    event.preventDefault();
     561}
     562
     563WebInspector.toolbarDragEnd = function(event)
     564{
     565    var toolbar = document.getElementById("toolbar");
     566    delete toolbar.lastScreenX;
     567    delete toolbar.lastScreenY;
     568
     569    document.removeEventListener("mousemove", WebInspector.toolbarDrag, true);
     570    document.removeEventListener("mouseup", WebInspector.toolbarDragEnd, true);
     571    document.body.style.removeProperty("cursor");
     572
     573    event.preventDefault();
     574}
     575
     576WebInspector.toolbarDrag = function(event)
     577{
     578    var toolbar = document.getElementById("toolbar");
     579
     580    var x = event.screenX - toolbar.lastScreenX;
     581    var y = event.screenY - toolbar.lastScreenY;
     582
     583    toolbar.lastScreenX = event.screenX;
     584    toolbar.lastScreenY = event.screenY;
     585
     586    window.moveBy(x, y);
     587
     588    event.preventDefault();
     589}
     590
    543591WebInspector.sidebarResizerDragStart = function(event)
    544592{
    545     WebInspector.dividerDragStart(document.getElementById("sidebar"), WebInspector.sidebarResizerDrag, WebInspector.sidebarResizerDragEnd, event, "col-resize");
     593    WebInspector.elementDragStart(document.getElementById("sidebar"), WebInspector.sidebarResizerDrag, WebInspector.sidebarResizerDragEnd, event, "col-resize");
    546594}
    547595
    548596WebInspector.sidebarResizerDragEnd = function(event)
    549597{
    550     WebInspector.dividerDragEnd(document.getElementById("sidebar"), WebInspector.sidebarResizerDrag, WebInspector.sidebarResizerDragEnd, event);
     598    WebInspector.elementDragEnd(document.getElementById("sidebar"), WebInspector.sidebarResizerDrag, WebInspector.sidebarResizerDragEnd, event);
    551599}
    552600
    553601WebInspector.sidebarResizerDrag = function(event)
    554602{
    555     var sidebar = document.getElementById("sidebar");
    556     if (sidebar.dragging == true) {
    557         var x = event.clientX + window.scrollX;
    558 
    559         // FIXME: We can should come up with a better hueristic for constraining the size
    560         // of the sidebar.
    561         var newWidth = Number.constrain(x, 100, window.innerWidth - 100);
    562 
    563         if (x == newWidth)
    564             sidebar.dragLastX = x;
    565 
    566         sidebar.style.width = newWidth + "px";
    567         document.getElementById("sidebarResizer").style.left = (newWidth - 3) + "px";
    568         document.getElementById("main").style.left = newWidth + "px";
    569         document.getElementById("toolbarButtons").style.left = newWidth + "px";
    570 
    571         if (WebInspector.currentPanel && WebInspector.currentPanel.resize)
    572             WebInspector.currentPanel.resize();
    573 
    574         event.preventDefault();
    575     }
     603    var x = event.pageX;
     604
     605    // FIXME: We can should come up with a better hueristic for constraining the size of the sidebar.
     606    var newWidth = Number.constrain(x, 100, window.innerWidth - 100);
     607
     608    document.getElementById("sidebar").style.width = newWidth + "px";
     609    document.getElementById("sidebarResizer").style.left = (newWidth - 3) + "px";
     610    document.getElementById("main").style.left = newWidth + "px";
     611    document.getElementById("toolbarButtons").style.left = newWidth + "px";
     612
     613    if (WebInspector.currentPanel && WebInspector.currentPanel.resize)
     614        WebInspector.currentPanel.resize();
     615
     616    event.preventDefault();
    576617}
    577618
    578619WebInspector.searchResultsResizerDragStart = function(event)
    579620{
    580     WebInspector.dividerDragStart(document.getElementById("searchResults"), WebInspector.searchResultsResizerDrag, WebInspector.searchResultsResizerDragEnd, event, "row-resize");
     621    WebInspector.elementDragStart(document.getElementById("searchResults"), WebInspector.searchResultsResizerDrag, WebInspector.searchResultsResizerDragEnd, event, "row-resize");
    581622}
    582623
    583624WebInspector.searchResultsResizerDragEnd = function(event)
    584625{
    585     WebInspector.dividerDragEnd(document.getElementById("searchResults"), WebInspector.searchResultsResizerDrag, WebInspector.searchResultsResizerDragEnd, event);
     626    WebInspector.elementDragEnd(document.getElementById("searchResults"), WebInspector.searchResultsResizerDrag, WebInspector.searchResultsResizerDragEnd, event);
    586627}
    587628
    588629WebInspector.searchResultsResizerDrag = function(event)
    589630{
    590     var searchResults = document.getElementById("searchResults");
    591     if (searchResults.dragging == true) {
    592         var y = event.clientY - document.getElementById("main").offsetTop;
    593         var newHeight = Number.constrain(y, 100, window.innerHeight - 100);
    594 
    595         if (y == newHeight)
    596             searchResults.dragLastY = y;
    597 
    598         WebInspector.searchResultsHeight = newHeight;
    599         searchResults.style.height = WebInspector.searchResultsHeight + "px";
    600         document.getElementById("panels").style.top = newHeight + "px";
    601         document.getElementById("searchResultsResizer").style.top = (newHeight - 3) + "px";
    602         event.preventDefault();
    603     }
    604 }
    605 
    606 WebInspector.dividerDragStart = function(element, dividerDrag, dividerDragEnd, event, cursor)
    607 {
    608     element.dragging = true;
    609     element.dragLastY = event.clientY + window.scrollY;
    610     element.dragLastX = event.clientX + window.scrollX;
     631    var y = event.pageY - document.getElementById("main").offsetTop;
     632    var newHeight = Number.constrain(y, 100, window.innerHeight - 100);
     633
     634    WebInspector.searchResultsHeight = newHeight;
     635
     636    document.getElementById("searchResults").style.height = WebInspector.searchResultsHeight + "px";
     637    document.getElementById("panels").style.top = newHeight + "px";
     638    document.getElementById("searchResultsResizer").style.top = (newHeight - 3) + "px";
     639
     640    event.preventDefault();
     641}
     642
     643WebInspector.elementDragStart = function(element, dividerDrag, elementDragEnd, event, cursor)
     644{
     645    if (WebInspector.draggingElement)
     646        return elementDragEnd(event);
     647
     648    WebInspector.draggingElement = true;
     649
    611650    document.addEventListener("mousemove", dividerDrag, true);
    612     document.addEventListener("mouseup", dividerDragEnd, true);
     651    document.addEventListener("mouseup", elementDragEnd, true);
    613652    document.body.style.cursor = cursor;
     653
    614654    event.preventDefault();
    615655}
    616656
    617 WebInspector.dividerDragEnd = function(element, dividerDrag, dividerDragEnd, event)
    618 {
    619     element.dragging = false;
     657WebInspector.elementDragEnd = function(element, dividerDrag, elementDragEnd, event)
     658{
    620659    document.removeEventListener("mousemove", dividerDrag, true);
    621     document.removeEventListener("mouseup", dividerDragEnd, true);
     660    document.removeEventListener("mouseup", elementDragEnd, true);
    622661    document.body.style.removeProperty("cursor");
     662
     663    delete WebInspector.draggingElement;
     664
     665    event.preventDefault();
    623666}
    624667
Note: See TracChangeset for help on using the changeset viewer.