Exemplo n.º 1
0
bool SlideNavmesh::mouseDown(const float x, const float y)
{
	if (!m_expanded)
	{
		if (hitCorner(x,y))
		{
			startDrag(1, x,y, m_pos);
			return true;
		}
	}
	else
	{
		int bidx = hitButtons(x-m_pos[0],y-m_pos[1]);
		if (bidx != -1)
		{
			return true;
		}
		else if (hitCorner(x,y))
		{
			startDrag(1, x,y, m_pos);
			return true;
		}
		else if (hitArea(x,y))
		{
			const float lx = x - (m_pos[0]+PADDING_SIZE);
			const float ly = y - (m_pos[1]+PADDING_SIZE);

			float pos[2] = {lx,ly};
			float nearest[2] = {lx,ly};
			if (m_scene.nav)
				navmeshFindNearestTri(m_scene.nav, pos, nearest);
			
			if (SDL_GetModState() & KMOD_SHIFT)
			{
				agentMoveAndAdjustCorridor(&m_scene.agents[0], nearest, m_scene.nav);
				vcpy(m_scene.agents[0].oldpos, m_scene.agents[0].pos);
				vset(m_scene.agents[0].corner, FLT_MAX,FLT_MAX);
			}
			else
			{
				vcpy(m_scene.agents[0].target, nearest);
				vcpy(m_scene.agents[0].oldpos, m_scene.agents[0].pos);
				agentFindPath(&m_scene.agents[0], m_scene.nav);
				vset(m_scene.agents[0].corner, FLT_MAX,FLT_MAX);
			}

			return true;
		}
	}
	return false;
}
Exemplo n.º 2
0
void Scene::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
    if(itemAt(event->scenePos(), QTransform()))
        startDrag(event->scenePos());

    QGraphicsScene::mouseMoveEvent(event);
}
Exemplo n.º 3
0
void CardsList::mouseMoveEvent(QMouseEvent *event)
{
    int index = itemAt(event->pos());
    if(index != -1)
    {
        quint32 id = ls[index];
        if(currentCardId != id)
        {
            currentCardId = id;
            tower->changeCurrentId(ls[index]);
        }
        needRefreshId = false;
    }

    if(event->buttons() & Qt::LeftButton)
    {
        int dist = (event->pos() - startPos).manhattanLength();
        if(dist >= QApplication::startDragDistance() && index != -1)
        {
            current = -1;
            startDrag(index);
        }
    }
    else if(current != index)
    {
        current = index;
        update();
    }
    QWidget::mouseMoveEvent(event);
}
Exemplo n.º 4
0
void ComponentSceneItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
     if (QLineF(event->screenPos(), event->buttonDownScreenPos(Qt::LeftButton)).length() >= QApplication::startDragDistance()) {
         startDrag();
     }
     QGraphicsObject::mouseMoveEvent(event);
}
Exemplo n.º 5
0
/**
 * Tablet events are handled here
 * @param event event info
 */
bool CanvasView::viewportEvent(QEvent *event)
{
	if(event->type() == QEvent::TabletMove) {
		// Stylus moved
		QTabletEvent *tabev = static_cast<QTabletEvent*>(event);
		tabev->accept();
		const dpcore::Point point(mapToScene(tabev->pos()), tabev->pressure());

		if(!_prevpoint.intSame(point)) {
			if(_isdragging)
				moveDrag(tabev->x(), tabev->y());
			else {
				if(_pendown) {
					if(point.pressure()==0) {
						// Missed a release event
						_pendown = NOTDOWN;
						onPenUp();
					} else {
						onPenMove(point);
					}
				}
				updateOutline(point);
			}
			_prevpoint = point;
		}
	} else if(event->type() == QEvent::TabletPress) {
		// Stylus touches the tablet surface
		QTabletEvent *tabev = static_cast<QTabletEvent*>(event);
		tabev->accept();
		if(_dragbtndown) {
			startDrag(tabev->x(), tabev->y(), _dragbtndown);
		} else {
			if(_pendown == NOTDOWN) {
				const dpcore::Point point(mapToScene(tabev->pos()), tabev->pressure());

				_pendown = TABLETDOWN;
				onPenDown(point, false);
				updateOutline(point);
				_prevpoint = point;
			}
		}
	} else if(event->type() == QEvent::TabletRelease) {
		// Stylus lifted
		QTabletEvent *tabev = static_cast<QTabletEvent*>(event);
		tabev->accept();
		if(_isdragging) {
			stopDrag();
		} else if(_pendown == TABLETDOWN) {
			dpcore::Point point(mapToScene(tabev->pos()), 0);
			updateOutline(point);
			_prevpoint = point;
			_pendown = NOTDOWN;
			onPenUp();
		}
	} else {
		return QGraphicsView::viewportEvent(event);
	}
	
	return true;
}
Exemplo n.º 6
0
    void Draggable::onEvent(Event* event)
    {
        //if (event->currentTarget.get() != _actor)
        //  return;

        TouchEvent* te = safeCast<TouchEvent*>(event);
        switch (te->type)
        {
            case TouchEvent::TOUCH_DOWN:
            {
                startDrag(te->localPosition);
            }
            break;
            case TouchEvent::TOUCH_UP:
            {
                _pressed = false;
                _actor->_getStage()->removeEventListeners(this);
                if (getTimeMS() - _startTm < 2)
                {
                    _actor->setPosition(_clientPos);
                }
            }
            break;

            case TouchEvent::MOVE:
            {
                onMove(te->localPosition);
            }
            break;
        }
    }
Exemplo n.º 7
0
void PoolTreeView::mouseMoveEvent(QMouseEvent* _event) {
  CursorManager cursorMan(this, _event, state() == PoolTreeView::DraggingState);
  if (!(_event->buttons() & Qt::LeftButton)) {
    WalletTreeView::mouseMoveEvent(_event);
    QModelIndex index = indexAt(_event->pos());
    if (index.isValid() && index.column() != MinerModel::COLUMN_REMOVE) {
      selectionModel()->setCurrentIndex(index, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
    } else {
      selectionModel()->clearSelection();
    }

    return;
  }

  if (!m_pressedIndex.isValid()) {
    WalletTreeView::mouseMoveEvent(_event);
    return;
  }

  if ((_event->pos() - m_pressedPosition).manhattanLength() < QApplication::startDragDistance()) {
    WalletTreeView::mouseMoveEvent(_event);
    return;
  }

  if (m_pressedTime.msecsTo(QDateTime::currentDateTime()) < QApplication::startDragTime()) {
    WalletTreeView::mouseMoveEvent(_event);
    return;
  }

  startDrag(model()->supportedDragActions());
}
Exemplo n.º 8
0
SourceWidget::SourceWidget(QWidget *parent)
    : QWidget(parent)
{
    QFile imageFile(":/images/example.svg");
    imageFile.open(QIODevice::ReadOnly);
    imageData = imageFile.readAll();
    imageFile.close();

    QScrollArea *imageArea = new QScrollArea;
    imageLabel = new QSvgWidget;
    imageLabel->renderer()->load(imageData);
    imageArea->setWidget(imageLabel);
    //imageLabel->setMinimumSize(imageLabel->renderer()->viewBox().size());

    QLabel *instructTopLabel = new QLabel(tr("This is an SVG drawing:"));
    QLabel *instructBottomLabel = new QLabel(
        tr("Drag the icon to copy the drawing as a PNG file:"));
    instructBottomLabel->setWordWrap(true);
    QPushButton *dragIcon = new QPushButton(tr("Export"));
    dragIcon->setIcon(QIcon(":/images/drag.png"));

    connect(dragIcon, SIGNAL(pressed()), this, SLOT(startDrag()));

    QGridLayout *layout = new QGridLayout;
    layout->addWidget(instructTopLabel, 0, 0, 1, 2);
    layout->addWidget(imageArea, 1, 0, 2, 2);
    layout->addWidget(instructBottomLabel, 3, 0);
    layout->addWidget(dragIcon, 3, 1);
    setLayout(layout);
    setWindowTitle(tr("Delayed Encoding"));
}
Exemplo n.º 9
0
/**
 * Tablet events are handled here
 * @param event event info
 */
bool EditorView::viewportEvent(QEvent *event)
{
    if(event->type() == QEvent::TabletMove) {
        // Stylus moved
        QTabletEvent *tabev = static_cast<QTabletEvent*>(event);
        tabev->accept();
        const dpcore::Point point(mapToScene(tabev->pos()), tabev->pressure());

        if(!prevpoint_.intSame(point)) {
            if(isdragging_)
                moveDrag(tabev->x(), tabev->y());
            else {
                if(pendown_) {
                    if(point.pressure()==0) {
                        // Missed a release event
                        pendown_ = NOTDOWN;
                        emit penUp();
                    } else {
                        emit penMove(point);
                    }
                }
                updateOutline(point);
            }
            prevpoint_ = point;
        }
    } else if(event->type() == QEvent::TabletPress) {
        // Stylus touches the tablet surface
        QTabletEvent *tabev = static_cast<QTabletEvent*>(event);
        tabev->accept();
        if(dragbtndown_) {
            startDrag(tabev->x(), tabev->y(), dragbtndown_);
        } else {
            if(pendown_ == NOTDOWN) {
                const dpcore::Point point(mapToScene(tabev->pos()), tabev->pressure());

                pendown_ = TABLETDOWN;
                emit penDown(point);
                updateOutline(point);
                prevpoint_ = point;
            }
        }
    } else if(event->type() == QEvent::TabletRelease) {
        // Stylus lifted
        QTabletEvent *tabev = static_cast<QTabletEvent*>(event);
        tabev->accept();
        if(isdragging_) {
            stopDrag();
        } else if(pendown_ == TABLETDOWN) {
            dpcore::Point point(mapToScene(tabev->pos()), 0);
            updateOutline(point);
            prevpoint_ = point;
            pendown_ = NOTDOWN;
            emit penUp();
        }
    } else {
        return QGraphicsView::viewportEvent(event);
    }

    return true;
}
Exemplo n.º 10
0
void CSVWorld::Table::mouseMoveEvent (QMouseEvent* event)
{
    if (event->buttons() & Qt::LeftButton)
    {
        startDrag(*this);
    }
}
Exemplo n.º 11
0
//! Handle mouse press events
void CanvasView::mousePressEvent(QMouseEvent *event)
{
	/** @todo why do we sometimes get mouse events for tablet strokes? */
	if(_pendown != NOTDOWN)
		return;
	if(event->button() == Qt::MidButton || _dragbtndown) {
		ViewTransform mode;
		if(_dragbtndown == DRAG_NOTRANSFORM) {
			if((event->modifiers() & Qt::ControlModifier))
				mode = DRAG_ZOOM;
			else if((event->modifiers() & Qt::ShiftModifier))
				mode = DRAG_QUICKADJUST1;
			else
				mode = DRAG_TRANSLATE;
		} else
			mode = _dragbtndown;

		startDrag(event->x(), event->y(), mode);
	} else if((event->button() == Qt::LeftButton || event->button() == Qt::RightButton) && _isdragging==DRAG_NOTRANSFORM) {
		_pendown = MOUSEDOWN;
		_pointerdistance = 0;
		_pointervelocity = 0;

		_specialpenmode = event->modifiers() & Qt::ControlModifier;
		onPenDown(mapToScene(event->pos(), mapPressure(1.0, false)), event->button() == Qt::RightButton);
	}
}
Exemplo n.º 12
0
void CardView::contentsMouseMoveEvent( QMouseEvent *e )
{
  // resizing
  if ( d->mResizeAnchor ) {
    int x = e->x();
    if ( x != d->mRubberBandAnchor )
      drawRubberBands( x );
      return;
  }

  if ( d->mLastClickOnItem && (e->buttons() & Qt::LeftButton) &&
       ((e->pos() - d->mLastClickPos).manhattanLength() > 4)) {

    startDrag();
    return;
  }

  d->mTimer->start( 500 );

  // see if we are over a separator
  // only if we actually have them painted?
  if ( d->mDrawSeparators  ) {
    int colcontentw = d->mItemWidth + (2 * d->mItemSpacing);
    int colw = colcontentw + d->mSepWidth;
    int m = e->x() % colw;
    if ( m >= colcontentw && m > 0 ) {
      setCursor( Qt::SplitHCursor );
      d->mOnSeparator = true;
    } else {
      setCursor( Qt::ArrowCursor );
      d->mOnSeparator = false;
    }
  }
}
Exemplo n.º 13
0
 /// Mouse Move Event and handler for dragging to ScreenSetup widget
 void Tuning::mouseMoveEvent(QMouseEvent *event)
 {
   // Handle drag to ScreenWidget
   if (event->button() == Qt::LeftButton)
   {
     startDrag();
   }
 }
Exemplo n.º 14
0
void ImageButton::mouseMoveEvent( QMouseEvent *event )
{
    if ( (event->buttons() & Qt::LeftButton) &&
            (event->pos() - mDragStartPos).manhattanLength() >
            KGlobalSettings::dndEventDelay() ) {
        startDrag();
    }
}
Exemplo n.º 15
0
/**
 * Tablet events are handled here
 * @param event event info
 */
bool CanvasView::viewportEvent(QEvent *event)
{
	if(event->type() == QEvent::Gesture) {
		gestureEvent(static_cast<QGestureEvent*>(event));

	} else if(event->type() == QEvent::TabletMove && _enableTabletEvents) {
		// Stylus moved
		QTabletEvent *tabev = static_cast<QTabletEvent*>(event);
		tabev->accept();

		paintcore::Point point = mapToScene(tabev->posF(), tabev->pressure());
		updateOutline(point);

		if(!_prevpoint.intSame(point)) {
			if(_isdragging)
				moveDrag(tabev->x(), tabev->y());
			else {
				if(_pendown) {
					_pointervelocity = point.distance(_prevpoint);
					_pointerdistance += _pointervelocity;
					point.setPressure(mapPressure(point.pressure(), true));
					onPenMove(point, false, tabev->modifiers() & Qt::ShiftModifier, tabev->modifiers() & Qt::AltModifier);
				}
			}
			_prevpoint = point;
		}
	} else if(event->type() == QEvent::TabletPress && _enableTabletEvents) {
		// Stylus touches the tablet surface
		QTabletEvent *tabev = static_cast<QTabletEvent*>(event);
		tabev->accept();

		if(_dragbtndown) {
			startDrag(tabev->x(), tabev->y(), _dragbtndown);
		} else {
			if(_pendown == NOTDOWN) {
				_pointerdistance = 0;
				_pointervelocity = 0;

				const paintcore::Point point = mapToScene(tabev->posF(), mapPressure(tabev->pressure(), true));

				_specialpenmode = tabev->modifiers() & Qt::ControlModifier; /* note: modifiers doesn't seem to work, at least on Qt 5.2.0 */
				_pendown = TABLETDOWN;
				onPenDown(point, false);
				updateOutline(point);
				_prevpoint = point;

			}
		}
	} else if(event->type() == QEvent::TabletRelease && _enableTabletEvents) {
		// Stylus lifted
		// Ignore this event: a mouseRelease event is also generated, so we let
		// the mouseRleaseEvent function handle this.
	} else {
		return QGraphicsView::viewportEvent(event);
	}
	
	return true;
}
void BookmarksListBox::contentsMouseMoveEvent(QMouseEvent *event)
{
    if (event->state() & LeftButton) {
        int distance = (event->pos() - dragPos).manhattanLength();
        if (distance > QApplication::startDragDistance())
            startDrag();
    }
    QListBox::contentsMouseMoveEvent(event); 
}
void ProjectListWidget::mouseMoveEvent(QMouseEvent *event)
{
    if (event->buttons() & Qt::LeftButton) {
        int distance = (event->pos() - startPos).manhattanLength();
        if (distance >= QApplication::startDragDistance())
            startDrag();
    }
    QListWidget::mouseMoveEvent(event);
}
Exemplo n.º 18
0
void ListView::startDrag()
{
#if QT_VERSION < 300
    if (m_mousePressPos.isNull()) return;
    m_mousePressPos = QPoint(0, 0);
#endif
    emit dragStart();
    startDrag(dragObject());
}
Exemplo n.º 19
0
void Desktop::mouseMoveEvent( QMouseEvent *ev )
{
    if ( !KPagerConfigDialog::m_windowDragging )
	return;
    if ( (ev->state() & LeftButton) == 0 )
	return;
    QPoint p( ev->pos() - pressPos );
    if ( p.manhattanLength() >= qApp->startDragDistance() )
	startDrag( pressPos );
}
Exemplo n.º 20
0
	void GUITabbedTitleBar::tabDragged(UINT32 tabIdx, const Vector2I& dragPos)
	{
		INT32 idx = uniqueIdxToSeqIdx(tabIdx);
		if(idx != -1)
		{
			Rect2I bounds = _getLayoutData().area;
			if(bounds.contains(dragPos))
			{
				if(!mDragInProgress)
					startDrag(idx, dragPos);

				mDragBtnOffset = dragPos.x - mInitialDragOffset;

				for(INT32 i = 0; i < idx; i++)
				{
					UINT32 width = mTabButtons[i]->_getLayoutData().area.width;
					INT32 centerX = mTabButtons[i]->_getLayoutData().area.x + width / 2;

					if(dragPos.x < centerX)
					{
						GUITabButton* temp = mTabButtons[i];
						mTabButtons[i] = mTabButtons[idx];
						mTabButtons[idx] = temp;

						break;
					}
				}

				for(UINT32 i = idx + 1; i < (UINT32)mTabButtons.size(); i++)
				{
					UINT32 width = mTabButtons[i]->_getLayoutData().area.width;
					INT32 centerX = mTabButtons[i]->_getLayoutData().area.x + width / 2;

					if(dragPos.x > centerX)
					{
						GUITabButton* temp = mTabButtons[i];
						mTabButtons[i] = mTabButtons[idx];
						mTabButtons[idx] = temp;

						break;
					}
				}

				_markLayoutAsDirty();
			}
			else
			{
				endDrag();
				_markLayoutAsDirty();

				if(!onTabDraggedOff.empty())
					onTabDraggedOff(tabIdx);
			}
		}
	}
Exemplo n.º 21
0
void TB_PokemonItem::mouseMoveEvent(QGraphicsSceneMouseEvent * event)
{
    if(event->buttons() & Qt::LeftButton)
    {
        int distance = int((event->pos()-startPos).manhattanLength());
        if(distance >= QApplication::startDragDistance())
        {
            startDrag();
        }
    }
}
Exemplo n.º 22
0
void WindowManager::timerEvent(QTimerEvent *event)
{
    if (event->timerId() == _dragTimer.timerId()) {
        _dragTimer.stop();
        if (_target) {
            startDrag(_target.data(), _globalDragPoint);
        }
    } else {
        return QObject::timerEvent(event);
    }
}
Exemplo n.º 23
0
void QDockWidgetPrivate::nonClientAreaMouseEvent(QMouseEvent *event)
{
    Q_Q(QDockWidget);

    int fw = q->style()->pixelMetric(QStyle::PM_DockWidgetFrameWidth, 0, q);

    QRect geo = q->geometry();
    QRect titleRect = q->frameGeometry();
#ifdef Q_WS_MAC
    if ((features & QDockWidget::DockWidgetVerticalTitleBar)) {
        titleRect.setTop(geo.top());
        titleRect.setBottom(geo.bottom());
        titleRect.setRight(geo.left() - 1);
    } else
#endif
    {
        titleRect.setLeft(geo.left());
        titleRect.setRight(geo.right());
        titleRect.setBottom(geo.top() - 1);
        titleRect.adjust(0, fw, 0, 0);
    }

    switch (event->type()) {
        case QEvent::NonClientAreaMouseButtonPress:
            if (!titleRect.contains(event->globalPos()))
                break;
            if (state != 0)
                break;
            if (qobject_cast<QMainWindow*>(parent) == 0)
                break;
            if (isAnimating())
                break;
            initDrag(event->pos(), true);
            if (state == 0)
                break;
            state->ctrlDrag = event->modifiers() & Qt::ControlModifier;
            startDrag();
            break;
        case QEvent::NonClientAreaMouseMove:
            if (state == 0 || !state->dragging)
                break;
            if (state->nca) {
                endDrag();
            }
            break;
        case QEvent::NonClientAreaMouseButtonRelease:
            break;
        case QEvent::NonClientAreaMouseButtonDblClick:
            _q_toggleTopLevel();
            break;
        default:
            break;
    }
}
Exemplo n.º 24
0
void ListView::contentsMouseMoveEvent(QMouseEvent *e)
{
#if QT_VERSION < 300
    if (e->state() & QObject::LeftButton){
        if (!m_mousePressPos.isNull() && currentItem() &&
                (QPoint(e->pos() - m_mousePressPos).manhattanLength() > QApplication::startDragDistance())){
            startDrag();
        }
    }
#endif
    QListView::contentsMouseMoveEvent(e);
}
Exemplo n.º 25
0
void QProjectList::mouseMoveEvent(QMouseEvent *e)
{
    if(e->buttons() & Qt::LeftButton)
    {
        int distance=(e->pos()-startPos).manhattanLength();
        if(distance >= QApplication::startDragDistance())//QApplication::startDragDistance() 默认是4个像素
        {
            startDrag();// 开始拖动 调用函数
        }
        QListWidget::mouseMoveEvent(e);
    }
}
void OperatorLibraryView::mouseMoveEvent(QMouseEvent* event)
{
    if(event->buttons() & Qt::LeftButton)
    {
        int distance = (event->pos() - m_startPos).manhattanLength();
        
        if(distance >= QApplication::startDragDistance())
            startDrag();
    }
        
    QTreeView::mouseMoveEvent(event);
}
Exemplo n.º 27
0
void MyFileSystemView::mouseMoveEvent(QMouseEvent *event)
{
	if (event->buttons() & Qt::LeftButton)
	{
		int distance = (event->pos() - m_startPos).manhattanLength();
		if (distance >= QApplication::startDragDistance())
		{
			startDrag();
		}
	}
	QTreeView::mouseMoveEvent(event);
}
Exemplo n.º 28
0
void TeamPokeButton::mouseMoveEvent(QMouseEvent * event)
{
    if(event->buttons() & Qt::LeftButton)
    {
        int distance = (event->pos()-startPos).manhattanLength();
        if(distance >= QApplication::startDragDistance())
        {
            startDrag();
        }
    }
    QPushButton::mouseMoveEvent(event);
}
Exemplo n.º 29
0
void DraggableListView::mouseMoveEvent(QMouseEvent *e) {
  if (_dragEnabled && e->buttons() & Qt::LeftButton && _pressPos != QPoint(-1, -1)) {
    QPoint delta = e->pos() - _pressPos;
    if (delta.manhattanLength() > QApplication::startDragDistance()) {
      _pressPos = QPoint(-1, -1);
      startDrag();
    }
    e->accept();
  } else {
    Q3ListView::mouseMoveEvent(e);
  }
}
Exemplo n.º 30
0
//! Handle mouse press events
void CanvasView::mousePressEvent(QMouseEvent *event)
{
	/** @todo why do we sometimes get mouse events for tablet strokes? */
	if(_pendown != NOTDOWN)
		return;
	if(event->button() == Qt::MidButton || _dragbtndown) {
		startDrag(event->x(), event->y(), _dragbtndown!=ROTATE?TRANSLATE:ROTATE);
	} else if((event->button() == Qt::LeftButton || event->button() == Qt::RightButton) && _isdragging==NOTRANSFORM) {
		_pendown = MOUSEDOWN;
		
		onPenDown(dpcore::Point(mapToScene(event->pos()), 1.0), event->button() == Qt::RightButton);
	}
}