reimplemented pointer default functionality

This commit is contained in:
itsmattkc
2019-10-12 06:37:53 +11:00
parent 937acd4c8c
commit 6f4e5a04e4
36 changed files with 146 additions and 63 deletions
@@ -10,6 +10,7 @@
TimelineWidget::TimelineWidget(QWidget *parent) :
QWidget(parent),
rubberband_(QRubberBand::Rectangle, this),
timeline_node_(nullptr),
playhead_(0)
{
@@ -584,3 +585,52 @@ void TimelineWidget::AddGhost(TimelineViewGhostItem *ghost)
ghost_items_.append(ghost);
views_.at(ghost->Track().type())->scene()->addItem(ghost);
}
void TimelineWidget::StartRubberBandSelect(bool clear_current_selection)
{
rubberband_origin_ = QCursor::pos();
rubberband_.show();
if (!clear_current_selection) {
foreach (TimelineView* view, views_) {
rubberband_already_selected_.append(view->scene()->selectedItems());
}
}
MoveRubberBandSelect();
}
void TimelineWidget::MoveRubberBandSelect()
{
QPoint rubberband_now = QCursor::pos();
rubberband_.setGeometry(QRect(mapFromGlobal(rubberband_origin_), mapFromGlobal(rubberband_now)).normalized());
foreach (TimelineView* view, views_) {
view->DeselectAll();
// Map global mouse coordinates to viewport
QRect mapped_rect(view->viewport()->mapFromGlobal(rubberband_origin_),
view->viewport()->mapFromGlobal(rubberband_now));
// Normalize and get items in rect
QList<QGraphicsItem*> rubberband_items = view->items(mapped_rect.normalized());
// Select them all
foreach (QGraphicsItem* item, rubberband_items) {
item->setSelected(true);
}
}
foreach (QGraphicsItem* item, rubberband_already_selected_) {
item->setSelected(true);
}
}
void TimelineWidget::EndRubberBandSelect()
{
MoveRubberBandSelect();
rubberband_.hide();
rubberband_already_selected_.clear();
}