Header::Header(View &parent) :
MarginWidget(parent)
{
- connect(&view_, SIGNAL(signals_moved()),
- this, SLOT(on_signals_moved()));
}
QSize Header::sizeHint() const
{
assert(r);
- const bool highlight = !dragging_ &&
+ const bool highlight = !item_dragging_ &&
r->label_rect(rect).contains(mouse_point_);
r->paint_label(painter, rect, highlight);
}
painter.end();
}
-void Header::mouseLeftReleaseEvent(QMouseEvent *event)
-{
- assert(event);
-
- const bool ctrl_pressed =
- QApplication::keyboardModifiers() & Qt::ControlModifier;
-
- // Unselect everything if control is not pressed
- const shared_ptr<ViewItem> mouse_over =
- get_mouse_over_item(event->pos());
-
- for (auto &r : view_)
- r->drag_release();
-
- if (dragging_)
- view_.restack_all_row_items();
- else
- {
- if (!ctrl_pressed) {
- for (shared_ptr<RowItem> r : view_)
- if (mouse_down_item_ != r)
- r->select(false);
-
- if (mouse_down_item_)
- show_popup(mouse_down_item_);
- }
- }
-
- dragging_ = false;
-}
-
-void Header::mouseReleaseEvent(QMouseEvent *event)
-{
- assert(event);
- if (event->button() & Qt::LeftButton)
- mouseLeftReleaseEvent(event);
-
- mouse_down_item_ = nullptr;
-}
-
-void Header::mouseMoveEvent(QMouseEvent *event)
-{
- assert(event);
- mouse_point_ = event->pos();
-
- if (!(event->buttons() & Qt::LeftButton))
- return;
-
- if ((event->pos() - mouse_down_point_).manhattanLength() <
- QApplication::startDragDistance())
- return;
-
- // Check all the drag items share a common owner
- RowItemOwner *item_owner = nullptr;
- for (shared_ptr<RowItem> r : view_)
- if (r->dragging()) {
- if (!item_owner)
- item_owner = r->owner();
- else if(item_owner != r->owner())
- return;
- }
-
- if (!item_owner)
- return;
-
- // Do the drag
- dragging_ = true;
-
- const QPoint delta = event->pos() - mouse_down_point_;
-
- for (std::shared_ptr<RowItem> r : view_)
- if (r->dragging()) {
- r->drag_by(delta);
-
- // Ensure the trace is selected
- r->select();
- }
-
- item_owner->restack_items();
- for (const auto &r : *item_owner)
- r->animate_to_layout_v_offset();
- signals_moved();
-
- update();
-}
-
void Header::contextMenuEvent(QContextMenuEvent *event)
{
const shared_ptr<ViewItem> r = get_mouse_over_item(mouse_point_);
{
assert(e);
- if (e->key() == Qt::Key_Delete)
- {
- for (const shared_ptr<RowItem> r : view_)
- if (r->selected())
- r->delete_pressed();
- }
- else if (e->key() == Qt::Key_G && e->modifiers() == Qt::ControlModifier)
+ MarginWidget::keyPressEvent(e);
+
+ if (e->key() == Qt::Key_G && e->modifiers() == Qt::ControlModifier)
on_group();
else if (e->key() == Qt::Key_U && e->modifiers() == Qt::ControlModifier)
on_ungroup();
}
-void Header::on_signals_moved()
-{
- update();
-}
-
void Header::on_group()
{
vector< shared_ptr<RowItem> > selected_items(
break;
}
}
- } while(restart);
+ } while (restart);
}
} // namespace view