i->select(false);
}
-void ViewWidget::item_hover(const shared_ptr<ViewItem> &item)
+void ViewWidget::item_hover(const shared_ptr<ViewItem> &item, QPoint pos)
{
(void)item;
+ (void)pos;
}
void ViewWidget::item_clicked(const shared_ptr<ViewItem> &item)
clear_selection();
// Set the signal selection state if the item has been clicked
- if (mouse_down_item_) {
+ if (mouse_down_item_ && mouse_down_item_->is_selectable(event->pos())) {
if (ctrl_pressed)
mouse_down_item_->select(!mouse_down_item_->selected());
else
bool item_dragged = false;
const auto items = this->items();
for (auto &i : items)
- if (i->selected()) {
+ if (i->selected() && i->is_draggable(event->pos())) {
item_dragged = true;
i->drag();
}
mouse_point_ = event->pos();
if (!event->buttons())
- item_hover(get_mouse_over_item(event->pos()));
+ item_hover(get_mouse_over_item(event->pos()), event->pos());
else if (event->buttons() & Qt::LeftButton) {
if (!item_dragging_) {
if ((event->pos() - mouse_down_point_).manhattanLength() <