예제 #1
0
void PlotWindow::endSelection(const QPointF& point)
{
	if (_x_axis_measurement->currentIndex() == 0) // time
		emit endSelection(_data_log->indexFromTime(point.x()));
	else // distance
		emit endSelection(_data_log->indexFromDist(point.x()));
}
예제 #2
0
void GraphWidget::endCtrlPtSelection(const int iMouseX, const int iMouseY)
{
	endSelection(iMouseX, iMouseY);

	m_bHasCtrlPtSelection = false;

	deselectCtrlPts();

	if (m_rectSelectionRect.width() > 0.0f && m_rectSelectionRect.height() > 0.0f) {
		if (m_ivActiveCurves.size() > 0) {
			for (int i = 0; i < m_ivActiveCurves.size(); ++i) {
				int iCurve = m_ivActiveCurves[i];

				for (int iCtrlPt = 0; iCtrlPt < m_pcrvvCurves[iCurve]->controlPointCount(); ++iCtrlPt) {
					Point ptCtrlPtWndCoord, ptCtrlPt;
					m_pcrvvCurves[iCurve]->getControlPoint(iCtrlPt, ptCtrlPt);
					ptCtrlPtWndCoord = curveToWindow(iCurve, ptCtrlPt);

					if (ptCtrlPtWndCoord.x >= m_rectSelectionRect.left() && 
						ptCtrlPtWndCoord.x <= m_rectSelectionRect.right() &&
						ptCtrlPtWndCoord.y <= m_rectSelectionRect.top() &&
						ptCtrlPtWndCoord.y >= m_rectSelectionRect.bottom()) {
						m_ivvCurrCtrlPts[iCurve].push_back(iCtrlPt);
					}
				}
			}
		}
	}
}
예제 #3
0
void GraphWidget::endZoomSelection(const int iMouseX, const int iMouseY)
{
	endSelection(iMouseX, iMouseY);

	m_bHasZoomSelection = false;

	if (m_rectSelectionRect.width() > 0.0f && m_rectSelectionRect.height() > 0.0f) {
		Rect rectOldViewport = m_rectCurrViewport;

		m_rectCurrViewport.left(
			rectOldViewport.width() * m_rectSelectionRect.left() / (float)w() + rectOldViewport.left());
		m_rectCurrViewport.right(
			rectOldViewport.width() * m_rectSelectionRect.right() / (float)w() + rectOldViewport.left());
		m_rectCurrViewport.bottom(
			rectOldViewport.height() * ((float)h() - m_rectSelectionRect.top()) / (float)h() + rectOldViewport.bottom());
		m_rectCurrViewport.top(
			rectOldViewport.height() * ((float)h() - m_rectSelectionRect.bottom()) / (float)h() + rectOldViewport.bottom());
	}
}
예제 #4
0
BOOL LLViewerTextEditor::handleMouseUp(S32 x, S32 y, MASK mask)
{
	BOOL	handled = FALSE;

	// let scrollbar have first dibs
	handled = LLView::childrenHandleMouseUp(x, y, mask) != NULL;

	// Used to enable I Agree checkbox if the user scrolled through entire text
	BOOL was_scrolled_to_bottom = (mScrollbar->getDocPos() == mScrollbar->getDocPosMax());
	if (mOnScrollEndCallback && was_scrolled_to_bottom)
	{
		mOnScrollEndCallback(mOnScrollEndData);
	}

	if( !handled && mTakesNonScrollClicks)
	{
		if( mIsSelecting )
		{
			// Finish selection
			if( y > getTextRect().mTop )
			{
				mScrollbar->setDocPos( mScrollbar->getDocPos() - 1 );
			}
			else
			if( y < getTextRect().mBottom )
			{
				mScrollbar->setDocPos( mScrollbar->getDocPos() + 1 );
			}
			
			setCursorAtLocalPos( x, y, TRUE );
			endSelection();

			updateScrollFromCursor();
		}
		
		if( !hasSelection() )
		{
			handleMouseUpOverSegment( x, y, mask );
		}

		handled = TRUE;
	}

	// Delay cursor flashing
	resetKeystrokeTimer();

	if( hasMouseCapture()  )
	{
		if (mDragItem)
		{
			// mouse down was on an item
			S32 dx = x - mMouseDownX;
			S32 dy = y - mMouseDownY;
			if (-2 < dx && dx < 2 && -2 < dy && dy < 2)
			{
				if(mDragItemSaved)
				{
					openEmbeddedItem(mDragItem);
				}else
				{
					showUnsavedAlertDialog(mDragItem);
				}
			}
		}
		mDragItem = NULL;
		gFocusMgr.setMouseCapture( NULL );
		handled = TRUE;
	}

	return handled;
}