Program: 145569
Project: 145569
Buggy source:
protected void onMouseMove(Event event){
  Element elem=event.getEventTarget().cast();
  if (hasAttribute(elem,"String_Node_Str")) {
    String cls=((Element)event.getEventTarget().cast()).getClassName();
    if (cls != null && cls.contains("String_Node_Str")) {
      return;
    }
  }
  int x=event.getClientX();
  int y=event.getClientY();
  if (!dragging && (Math.abs(dragStartX - x) > startDragDistance || Math.abs(dragStartY - y) > startDragDistance)) {
    startDrag(event);
  }
  if (dragging) {
    int left=constrainHorizontal ? startBounds.getX() : startBounds.getX() + (x - dragStartX);
    int top=constrainVertical ? startBounds.getY() : startBounds.getY() + (y - dragStartY);
    if (constrainClient) {
      if (!constrainHorizontal) {
        int width=startBounds.getWidth();
        left=Math.max(left,0);
        left=Math.max(0,Math.min(clientWidth - width,left));
      }
      if (!constrainVertical) {
        top=Math.max(top,0);
        int height=startBounds.getHeight();
        if (Math.min(clientHeight - height,top) > 0) {
          top=Math.max(2,Math.min(clientHeight - height,top));
        }
      }
    }
    if (container != null) {
      int width=startBounds.getWidth();
      int height=startBounds.getHeight();
      if (!constrainHorizontal) {
        left=Math.max(left,conX);
        left=Math.min(conX + conWidth - width,left);
      }
      if (!constrainVertical) {
        top=Math.min(conY + conHeight - height,top);
        top=Math.max(top,conY);
      }
    }
    if (!constrainHorizontal) {
      if (xLeft != Style.DEFAULT) {
        left=Math.max(startBounds.getX() - xLeft,left);
      }
      if (xRight != Style.DEFAULT) {
        left=Math.min(startBounds.getX() + xRight,left);
      }
    }
    if (!constrainVertical) {
      if (xTop != Style.DEFAULT) {
        top=Math.max(startBounds.getY() - xTop,top);
      }
      if (xBottom != Style.DEFAULT) {
        top=Math.min(startBounds.getY() + xBottom,top);
      }
    }
    lastX=left;
    lastY=top;
    DragMoveEvent evt=new DragMoveEvent(dragWidget,startElement,lastX,lastY,event);
    ensureHandlers().fireEventFromSource(evt,this);
    if (evt.isCancelled()) {
      cancelDrag();
      return;
    }
    int tl=evt.getX() != lastX ? evt.getX() : lastX;
    int tt=evt.getY() != lastY ? evt.getY() : lastY;
    if (useProxy) {
      proxyEl.setXY(tl,tt);
    }
 else {
      dragWidgetElement.setXY(tl,tt);
    }
  }
}

Fixed version (ground truth):
protected void onMouseMove(Event event){
  Element elem=event.getEventTarget().cast();
  if (hasAttribute(elem,"String_Node_Str")) {
    String cls=null;
    try {
      cls=elem.getClassName();
    }
 catch (    Exception ex) {
      cls=elem.getAttribute("String_Node_Str");
    }
    if (cls != null && cls.contains("String_Node_Str")) {
      return;
    }
  }
  int x=event.getClientX();
  int y=event.getClientY();
  if (!dragging && (Math.abs(dragStartX - x) > startDragDistance || Math.abs(dragStartY - y) > startDragDistance)) {
    startDrag(event);
  }
  if (dragging) {
    int left=constrainHorizontal ? startBounds.getX() : startBounds.getX() + (x - dragStartX);
    int top=constrainVertical ? startBounds.getY() : startBounds.getY() + (y - dragStartY);
    if (constrainClient) {
      if (!constrainHorizontal) {
        int width=startBounds.getWidth();
        left=Math.max(left,0);
        left=Math.max(0,Math.min(clientWidth - width,left));
      }
      if (!constrainVertical) {
        top=Math.max(top,0);
        int height=startBounds.getHeight();
        if (Math.min(clientHeight - height,top) > 0) {
          top=Math.max(2,Math.min(clientHeight - height,top));
        }
      }
    }
    if (container != null) {
      int width=startBounds.getWidth();
      int height=startBounds.getHeight();
      if (!constrainHorizontal) {
        left=Math.max(left,conX);
        left=Math.min(conX + conWidth - width,left);
      }
      if (!constrainVertical) {
        top=Math.min(conY + conHeight - height,top);
        top=Math.max(top,conY);
      }
    }
    if (!constrainHorizontal) {
      if (xLeft != Style.DEFAULT) {
        left=Math.max(startBounds.getX() - xLeft,left);
      }
      if (xRight != Style.DEFAULT) {
        left=Math.min(startBounds.getX() + xRight,left);
      }
    }
    if (!constrainVertical) {
      if (xTop != Style.DEFAULT) {
        top=Math.max(startBounds.getY() - xTop,top);
      }
      if (xBottom != Style.DEFAULT) {
        top=Math.min(startBounds.getY() + xBottom,top);
      }
    }
    lastX=left;
    lastY=top;
    DragMoveEvent evt=new DragMoveEvent(dragWidget,startElement,lastX,lastY,event);
    ensureHandlers().fireEventFromSource(evt,this);
    if (evt.isCancelled()) {
      cancelDrag();
      return;
    }
    int tl=evt.getX() != lastX ? evt.getX() : lastX;
    int tt=evt.getY() != lastY ? evt.getY() : lastY;
    if (useProxy) {
      proxyEl.setXY(tl,tt);
    }
 else {
      dragWidgetElement.setXY(tl,tt);
    }
  }
}