-void Header::mousePressEvent(QMouseEvent *event)
-{
- assert(event);
-
- const vector< shared_ptr<Signal> > sigs(
- _view.session().get_signals());
-
- if (event->button() & Qt::LeftButton) {
- _mouse_down_point = event->pos();
-
- // Save the offsets of any signals which will be dragged
- BOOST_FOREACH(const shared_ptr<Signal> s, sigs)
- if (s->selected())
- _drag_sigs.push_back(
- make_pair(s, s->get_v_offset()));
- }
-
- // Select the signal if it has been clicked
- const shared_ptr<Signal> mouse_over_signal =
- get_mouse_over_signal(event->pos());
- if (mouse_over_signal) {
- if (mouse_over_signal->selected())
- mouse_over_signal->select(false);
- else {
- mouse_over_signal->select(true);
-
- if (~QApplication::keyboardModifiers() &
- Qt::ControlModifier)
- _drag_sigs.clear();
-
- // Add the signal to the drag list
- if (event->button() & Qt::LeftButton)
- _drag_sigs.push_back(
- make_pair(mouse_over_signal,
- mouse_over_signal->get_v_offset()));
- }
- }
-
- if (~QApplication::keyboardModifiers() & Qt::ControlModifier) {
- // Unselect all other signals because the Ctrl is not
- // pressed
- BOOST_FOREACH(const shared_ptr<Signal> s, sigs)
- if (s != mouse_over_signal)
- s->select(false);
- }
-
- update();
-}
-
-void Header::mouseReleaseEvent(QMouseEvent *event)
-{
- assert(event);
- if (event->button() == Qt::LeftButton) {
- _drag_sigs.clear();
- _view.normalize_layout();
- }
-}
-
-void Header::mouseMoveEvent(QMouseEvent *event)
-{
- assert(event);
- _mouse_point = event->pos();
-
- // Move the signals if we are dragging
- if (!_drag_sigs.empty()) {
- const int delta = event->pos().y() - _mouse_down_point.y();
-
- for (std::list<std::pair<boost::weak_ptr<Signal>,
- int> >::iterator i = _drag_sigs.begin();
- i != _drag_sigs.end(); i++) {
- const boost::shared_ptr<Signal> sig((*i).first);
- if (sig) {
- const int y = (*i).second + delta;
- const int y_snap =
- ((y + View::SignalSnapGridSize / 2) /
- View::SignalSnapGridSize) *
- View::SignalSnapGridSize;
- sig->set_v_offset(y_snap);
-
- // Ensure the signal is selected
- sig->select();
- }
-
- }
-
- signals_moved();
- }
-
- update();
-}
-
-void Header::leaveEvent(QEvent*)
-{
- _mouse_point = QPoint(-1, -1);
- update();
-}
-