+void Header::mouseLeftPressEvent(QMouseEvent *event)
+{
+ (void)event;
+
+ const bool ctrl_pressed =
+ QApplication::keyboardModifiers() & Qt::ControlModifier;
+
+ // Clear selection if control is not pressed and this item is unselected
+ if ((!_mouse_down_item || !_mouse_down_item->selected()) &&
+ !ctrl_pressed)
+ for (shared_ptr<RowItem> r : _view)
+ r->select(false);
+
+ // Set the signal selection state if the item has been clicked
+ if (_mouse_down_item) {
+ if (ctrl_pressed)
+ _mouse_down_item->select(!_mouse_down_item->selected());
+ else
+ _mouse_down_item->select(true);
+ }
+
+ // Save the offsets of any signals which will be dragged
+ for (const shared_ptr<RowItem> r : _view)
+ if (r->selected())
+ r->drag();
+
+ selection_changed();
+ update();
+}
+