- if(event->buttons() & Qt::LeftButton)
- {
- _view.set_scale_offset(_view.scale(),
- _mouse_down_offset +
- (_mouse_down_point - event->pos()).x() *
- _view.scale());
- }
+ stable_sort(row_items.begin(), row_items.end(),
+ [](const shared_ptr<RowItem> &a, const shared_ptr<RowItem> &b) {
+ return a->visual_v_offset() < b->visual_v_offset(); });
+
+ const vector< shared_ptr<TimeItem> > time_items(view_.time_items());
+ assert(none_of(time_items.begin(), time_items.end(),
+ [](const shared_ptr<TimeItem> &t) { return !t; }));
+
+ QPainter p(this);
+ p.setRenderHint(QPainter::Antialiasing);
+
+ const ViewItemPaintParams pp(rect(), view_.scale(), view_.offset());
+
+ for (const shared_ptr<TimeItem> t : time_items)
+ t->paint_back(p, pp);
+ for (const shared_ptr<RowItem> r : row_items)
+ r->paint_back(p, pp);
+
+ for (const shared_ptr<TimeItem> t : time_items)
+ t->paint_mid(p, pp);
+ for (const shared_ptr<RowItem> r : row_items)
+ r->paint_mid(p, pp);
+
+ for (const shared_ptr<RowItem> r : row_items)
+ r->paint_fore(p, pp);
+ for (const shared_ptr<TimeItem> t : time_items)
+ t->paint_fore(p, pp);
+
+ p.end();