void DragContainer::onMouseMove(MouseEventArgs& e) { Window::onMouseMove(e); // get position of mouse as co-ordinates local to this window. Point localMousePos = (getMetricsMode() == Relative) ? relativeToAbsolute(screenToWindow(e.position)) : screenToWindow(e.position); // handle dragging if (d_dragging) { doDragging(localMousePos); } // not dragging else { // if mouse button is down (but we're not yet being dragged) if (d_leftMouseDown) { if (isDraggingThresholdExceeded(localMousePos)) { // Trigger the event WindowEventArgs args(this); onDragStarted(args); } } } }
void DragContainer::onMouseMove(MouseEventArgs& e) { Window::onMouseMove(e); // get position of mouse as co-ordinates local to this window. Vector2 localMousePos = CoordConverter::screenToWindow(*this, e.position); // handle dragging if (d_dragging) { doDragging(localMousePos); } // not dragging else { // if mouse button is down (but we're not yet being dragged) if (d_leftMouseDown) { if (isDraggingThresholdExceeded(localMousePos)) { // Trigger the event WindowEventArgs args(this); onDragStarted(args); } } } }
//----------------------------------------------------------------------------// bool DragContainer::pickUp(const bool force_sticky /*= false*/) { // check if we're already picked up or if dragging is disabled. if (d_pickedUp || !d_draggingEnabled) return true; // see if we need to force sticky mode switch if (!d_stickyMode && force_sticky) setStickyModeEnabled(true); // can only pick up if sticky if (d_stickyMode) { // force immediate release of any current input capture (unless it's us) if (d_captureWindow && d_captureWindow != this) d_captureWindow->releaseInput(); // activate ourselves and try to capture input activate(); if (captureInput()) { // set the dragging point to the centre of the container. d_dragPoint.d_x = cegui_absdim(d_pixelSize.d_width / 2); d_dragPoint.d_y = cegui_absdim(d_pixelSize.d_height / 2); // initialise the dragging state initialiseDragging(); // get position of mouse as co-ordinates local to this window. const Vector2 localMousePos(CoordConverter::screenToWindow(*this, MouseCursor::getSingleton().getPosition())); doDragging(localMousePos); d_pickedUp = true; } } return d_pickedUp; }