+bool ViewWidget::accept_drag() const
+{
+ const vector< shared_ptr<TimeItem> > items(view_.time_items());
+
+ const bool any_row_items_selected = any_of(view_.begin(), view_.end(),
+ [](const shared_ptr<RowItem> &r) { return r->selected(); });
+
+ const bool any_time_items_selected = any_of(items.begin(), items.end(),
+ [](const shared_ptr<TimeItem> &i) { return i->selected(); });
+
+ if (any_row_items_selected && !any_time_items_selected)
+ {
+ // 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 false;
+ }
+
+ return true;
+ }
+ else if (any_time_items_selected && !any_row_items_selected)
+ {
+ return true;
+ }
+
+ return false;
+}
+