improved nodeparamview Y setting

Still not perfect, mostly due to Qt's terrible QMainWindowLayout, but ah well
This commit is contained in:
itsmattkc
2021-01-30 10:27:52 +11:00
parent 060714cec6
commit d53885fe3d
11 changed files with 215 additions and 138 deletions
+19 -7
View File
@@ -22,6 +22,8 @@
namespace olive {
#define super KeyframeViewBase
KeyframeView::KeyframeView(QWidget *parent) :
KeyframeViewBase(parent),
max_scroll_(0)
@@ -29,6 +31,19 @@ KeyframeView::KeyframeView(QWidget *parent) :
setAlignment(Qt::AlignLeft | Qt::AlignTop);
}
void KeyframeView::SetElementY(const NodeConnectable::InputConnection &c, int y)
{
qreal scene_y = mapToScene(mapFromGlobal(QPoint(0, y))).y();
element_y_.insert(c, scene_y);
for (auto it=item_map().cbegin(); it!=item_map().cend(); it++) {
if (it.key()->parent() == c.input && it.key()->element() == c.element) {
it.value()->SetOverrideY(scene_y);
}
}
}
void KeyframeView::wheelEvent(QWheelEvent *event)
{
if (!HandleZoomFromScroll(event)) {
@@ -42,14 +57,11 @@ void KeyframeView::SceneRectUpdateEvent(QRectF &rect)
rect.setHeight(max_scroll_);
}
void KeyframeView::AddKeyframe(NodeKeyframe* key, int y)
KeyframeViewItem* KeyframeView::AddKeyframe(NodeKeyframe* key)
{
QPoint global_pt(0, y);
QPoint local_pt = mapFromGlobal(global_pt);
QPointF scene_pt = mapToScene(local_pt);
KeyframeViewItem* item = AddKeyframeInternal(key);
item->SetOverrideY(scene_pt.y());
KeyframeViewItem* item = super::AddKeyframe(key);
item->SetOverrideY(element_y_.value({key->parent(), key->element()}));
return item;
}
}