void wxhdDragTrackerTool::mouseDrag(wxhdMouseEvent& event) { wxhdAbstractTool::mouseDrag(event); if(event.LeftIsDown()) { int x=event.GetPosition().x, y=event.GetPosition().y; //Hack to avoid a weird bug that ocurrs when use double click very fast over figure and drag a same time, lastX //and lastY values becomes big negatives numbers, if this happens, then reset it to click point if(lastX<0) lastX=x; if(lastY<0) lastY=y; hasMovedValue = (abs (x - anchorX) > 4 || abs (y - anchorX) > 4); if (hasMoved()) { wxhdIFigure *tmp=NULL; wxhdIteratorBase *iterator=view->selectionFigures(); while(iterator->HasNext()) { tmp=(wxhdIFigure *)iterator->Next(); tmp->moveBy(x - lastX, y - lastY); } delete iterator; } setLastCoords (x, y); } }
void wxhdDragTrackerTool::mouseDown(wxhdMouseEvent& event) { wxhdAbstractTool::mouseDown(event); if(event.LeftDown()) { int x=event.GetPosition().x, y=event.GetPosition().y; setLastCoords(x,y); if(event.m_shiftDown) { view->toggleSelection(anchorFigure); } else if(!view->isFigureSelected(anchorFigure)) { view->clearSelection(); view->addToSelection(anchorFigure); } } }
void hdDragTrackerTool::mouseDown(hdMouseEvent &event) { hdAbstractTool::mouseDown(event); if(event.LeftDown()) { int x = event.GetPosition().x, y = event.GetPosition().y; setLastCoords(x, y); if(event.m_shiftDown) { event.getView()->getDrawing()->toggleSelection(anchorFigure); } else if(!event.getView()->getDrawing()->isFigureSelected(anchorFigure)) { event.getView()->getDrawing()->clearSelection(); event.getView()->getDrawing()->addToSelection(anchorFigure); } } }