コード例 #1
0
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);
	}
}
コード例 #2
0
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);
		}
	}
}
コード例 #3
0
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);
		}
	}
}