Changeset 4772

Show
Ignore:
Timestamp:
06/06/08 09:25:41 (6 months ago)
Author:
marc.englund@…
Message:

Resizing and moving does no longer loose event to iframes and such.
Fixes #1765

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java

    r4678 r4772  
    9797 
    9898    private Element modalityCurtain; 
     99    private Element draggingCurtain; 
    99100 
    100101    private Element headerText; 
     
    418419    } 
    419420 
     421    /* 
     422     * Shows (or hides) an empty div on top of all other content; used when 
     423     * resizing or moving, so that iframes (etc) do not steal event. 
     424     */ 
     425    private void showDraggingCurtain(boolean show) { 
     426        if (show && draggingCurtain == null) { 
     427            ApplicationConnection.getConsole().log("SHOW"); 
     428            draggingCurtain = DOM.createDiv(); 
     429            DOM.setStyleAttribute(draggingCurtain, "position", "absolute"); 
     430            DOM.setStyleAttribute(draggingCurtain, "top", "0px"); 
     431            DOM.setStyleAttribute(draggingCurtain, "left", "0px"); 
     432            DOM.setStyleAttribute(draggingCurtain, "width", "100%"); 
     433            DOM.setStyleAttribute(draggingCurtain, "height", "100%"); 
     434            DOM.setStyleAttribute(draggingCurtain, "zIndex", "" 
     435                    + ToolkitOverlay.Z_INDEX); 
     436 
     437            DOM.appendChild(RootPanel.getBodyElement(), draggingCurtain); 
     438        } else if (!show && draggingCurtain != null) { 
     439            ApplicationConnection.getConsole().log("HIDE"); 
     440            DOM.removeChild(RootPanel.getBodyElement(), draggingCurtain); 
     441            draggingCurtain = null; 
     442        } 
     443 
     444    } 
     445 
    420446    public void setPopupPosition(int left, int top) { 
    421447        super.setPopupPosition(left, top); 
     
    473499                bringToFront(); 
    474500            } 
     501            showDraggingCurtain(true); 
    475502            resizing = true; 
    476503            startX = DOM.eventGetScreenX(event); 
     
    482509            break; 
    483510        case Event.ONMOUSEUP: 
     511            showDraggingCurtain(false); 
    484512            resizing = false; 
    485513            DOM.releaseCapture(getElement()); 
     
    487515            break; 
    488516        case Event.ONLOSECAPTURE: 
     517            showDraggingCurtain(false); 
    489518            resizing = false; 
    490519        case Event.ONMOUSEMOVE: 
     
    538567                bringToFront(); 
    539568            } 
     569            showDraggingCurtain(true); 
    540570            dragging = true; 
    541571            startX = DOM.eventGetScreenX(event); 
     
    548578        case Event.ONMOUSEUP: 
    549579            dragging = false; 
     580            showDraggingCurtain(false); 
    550581            DOM.releaseCapture(getElement()); 
    551582            break; 
    552583        case Event.ONLOSECAPTURE: 
     584            showDraggingCurtain(false); 
    553585            dragging = false; 
    554586            break;