void RulerGesture::mouseMoveEvent(QMouseEvent* m)
{
	movePoint(m, false);
	m->accept();
	if (m_ScMW->doc->guidesSettings.guidesShown)
		emit guideInfo(m_mode, m_currentGuide);
}
void RulerGesture::activate(bool fromGesture)
{
	m_haveCursor = (qApp->overrideCursor() != NULL);
	if ( (!fromGesture) && qApp->overrideCursor())
	{
		m_haveCursor = true;
		m_cursor = *(qApp->overrideCursor());
	}
	else
	{
		m_haveCursor = false;
	}
	switch (m_mode)
	{
		case HORIZONTAL:
			qApp->changeOverrideCursor(QCursor(Qt::SplitVCursor));
			break;
		case VERTICAL:
			qApp->changeOverrideCursor(QCursor(Qt::SplitHCursor));
			break;
		case ORIGIN:
			qApp->changeOverrideCursor(QCursor(Qt::CrossCursor));
			break;
	}
	emit guideInfo(m_mode, m_guide);
}
void RulerGesture::mousePressEvent(QMouseEvent* m)
{
	FPoint mousePointDoc = m_canvas->globalToCanvas(m->globalPos());
	if (mouseHitsGuide(mousePointDoc))
	{
		m_xy = m->globalPos() - (m_canvas->mapToParent(QPoint(0, 0)) + m_canvas->parentWidget()->mapToGlobal(QPoint(0, 0)));
		m->accept();
	}
	if (m_ScMW->doc->guidesSettings.guidesShown)
		emit guideInfo(m_mode, m_currentGuide);
}
void RulerGesture::mouseMoveEvent(QMouseEvent* m)
{
	m_mousePoint=m_canvas->globalToCanvas(m->globalPos());
	m->accept();
	if (m_view->moveTimerElapsed())
	{
		movePoint(m, false);
		if (m_ScMW->doc->guidesPrefs().guidesShown)
			emit guideInfo(m_mode, m_currentGuide);
	}
}
void RulerGesture::mouseSelectGuide(QMouseEvent *m)
{
	FPoint mousePointDoc = m_canvas->globalToCanvas(m->globalPos());
	const int page = m_doc->OnPage(mousePointDoc.x(), mousePointDoc.y());
	if ((m_doc->guidesSettings.guidesShown) && page >= 0)
	{
		double grabRadScale = m_doc->guidesSettings.grabRad / m_canvas->scale();
		int index = m_doc->Pages->at(page)->guides.isMouseOnVertical(mousePointDoc.x() + grabRadScale, mousePointDoc.x() - grabRadScale, GuideManagerCore::Standard);
		if (index >= 0)
		{
			emit guideInfo(VERTICAL, m_doc->Pages->at(page)->guides.vertical(index, GuideManagerCore::Standard));
			return;
		}
		index = m_doc->Pages->at(page)->guides.isMouseOnHorizontal(mousePointDoc.y() + grabRadScale, mousePointDoc.y() - grabRadScale, GuideManagerCore::Standard);
		if (index >= 0)
		{
			emit guideInfo(HORIZONTAL, m_doc->Pages->at(page)->guides.horizontal(index, GuideManagerCore::Standard));
			return;
		}
	}
}
void RulerGesture::mouseReleaseEvent(QMouseEvent* m)
{
	movePoint(m, true);
	if (m_mode == ORIGIN)
		m_view->setNewRulerOrigin(m);
	else
	{
		if (m_ScMW->doc->guidesSettings.guidesShown)
			m_ScMW->guidePalette->setupPage();
	}
	m_haveGuide = false;
	m->accept();
	m_canvas->repaint();
	m_view->stopGesture();
	if (m_ScMW->doc->guidesSettings.guidesShown)
		emit guideInfo(m_mode, m_currentGuide);
}
void RulerGesture::mouseReleaseEvent(QMouseEvent* m)
{
	m->accept();
	if (m_view->moveTimerElapsed())
	{
		movePoint(m, true);
		if (m_mode == ORIGIN)
			m_view->setNewRulerOrigin(m);
		else
		{
			if (m_ScMW->doc->guidesPrefs().guidesShown)
				m_ScMW->guidePalette->setupPage();
		}
	}
	m_haveGuide = false;
	//#9391: Force redraw to get the guide drawn if we draw a guide in an edit mode
	if (m_ScMW->doc->appMode != modeNormal)
		m_canvas->setForcedRedraw(true);
	m_canvas->repaint();
	m_view->stopGesture();
	m_mousePoint=QPoint(0,0);
	if (m_ScMW->doc->guidesPrefs().guidesShown)
		emit guideInfo(m_mode, m_currentGuide);
}