Example #1
0
void ViewWidget::mousePressEvent(QMouseEvent *event)
{
	assert(event);

	/* Ignore right click events as they will open context menus when
	 * used on trace labels. Those menus prevent ViewWidget::mouseReleaseEvent()
	 * to be triggered upon button release, making mouse_down_item_
	 * hold the last reference to a view item that might have been deleted
	 * from the context menu, preventing it from being freed as intended.
	 */
	if (event->button() & Qt::LeftButton) {
		mouse_down_point_ = event->pos();
		mouse_down_item_ = get_mouse_over_item(event->pos());
		mouse_left_press_event(event);
	}
}
Example #2
0
void ViewWidget::mouseMoveEvent(QMouseEvent *e)
{
	assert(e);
	mouse_point_ = e->pos();

	if (!e->buttons())
		item_hover(get_mouse_over_item(e->pos()));
	else if (e->buttons() & Qt::LeftButton) {
		if (!item_dragging_) {
			if ((e->pos() - mouse_down_point_).manhattanLength() <
				QApplication::startDragDistance())
				return;

			if (!accept_drag())
				return;

			item_dragging_ = true;
		}

		// Do the drag
		drag_items(e->pos() - mouse_down_point_);
	}
}