public void onMouseMove(MouseMoveEvent event) { if (isMouseDown()) { setDragging(true); updateCSS(); model.setX(event.getX() + model.getX() - dragStartX); model.setY(event.getY() + model.getY() - dragStartY); onUpdateInModel(); int clientX = event.getClientX(); int clientY = event.getClientY(); boolean outsideWindow = clientX < 0 || clientY < 0 || clientX > Window.getClientWidth() || clientY > Window.getClientHeight(); if (outsideWindow) { parent.save(model, true); setDragging(false); } } event.preventDefault(); }