+void Ruler::item_hover(const shared_ptr<ViewItem> &item, QPoint pos)
+{
+ (void)pos;
+
+ hover_item_ = dynamic_pointer_cast<TimeItem>(item);
+}
+
+shared_ptr<TimeItem> Ruler::get_reference_item() const
+{
+ // Note: time() returns 0 if item returns no valid time
+
+ if (mouse_modifiers_ & Qt::ShiftModifier)
+ return nullptr;
+
+ if (hover_item_ && (hover_item_->time() != 0))
+ return hover_item_;
+
+ shared_ptr<TimeItem> ref_item;
+ const vector< shared_ptr<TimeItem> > items(view_.time_items());
+
+ for (auto i = items.rbegin(); i != items.rend(); i++) {
+ if ((*i)->enabled() && (*i)->selected()) {
+ if (!ref_item)
+ ref_item = *i;
+ else {
+ // Return nothing if multiple items are selected
+ ref_item.reset();
+ break;
+ }
+ }
+ }
+
+ if (ref_item && (ref_item->time() == 0))
+ ref_item.reset();
+
+ return ref_item;
+}
+