paramview: changed to static viewer-bound and fixed various scrolling issues

This commit is contained in:
itsmattkc
2020-06-22 00:38:00 +10:00
parent e97b5a9a14
commit 1725f01459
12 changed files with 81 additions and 70 deletions
+8 -1
View File
@@ -23,7 +23,8 @@
OLIVE_NAMESPACE_ENTER
KeyframeView::KeyframeView(QWidget *parent) :
KeyframeViewBase(parent)
KeyframeViewBase(parent),
max_scroll_(0)
{
setAlignment(Qt::AlignLeft | Qt::AlignTop);
}
@@ -35,6 +36,12 @@ void KeyframeView::wheelEvent(QWheelEvent *event)
}
}
void KeyframeView::SceneRectUpdateEvent(QRectF &rect)
{
rect.setY(0);
rect.setHeight(max_scroll_);
}
void KeyframeView::AddKeyframe(NodeKeyframePtr key, int y)
{
QPoint global_pt(0, y);
+10
View File
@@ -31,12 +31,22 @@ class KeyframeView : public KeyframeViewBase
public:
KeyframeView(QWidget* parent = nullptr);
void SetMaxScroll(int i)
{
max_scroll_ = i;
}
protected:
virtual void wheelEvent(QWheelEvent* event) override;
virtual void SceneRectUpdateEvent(QRectF& rect) override;
public slots:
void AddKeyframe(NodeKeyframePtr key, int y);
private:
int max_scroll_;
};
OLIVE_NAMESPACE_EXIT
+11 -7
View File
@@ -101,14 +101,18 @@ void KeyframeViewBase::RemoveKeyframe(NodeKeyframePtr key)
KeyframeViewItem *KeyframeViewBase::AddKeyframeInternal(NodeKeyframePtr key)
{
KeyframeViewItem* item = new KeyframeViewItem(key);
item->SetTimeTarget(GetTimeTarget());
item->SetScale(GetScale());
item_map_.insert(key.get(), item);
scene()->addItem(item);
KeyframeViewItem* item = item_map_.value(key.get());
if (hidden_tracks_.contains(key->track())) {
item->setVisible(false);
if (!item) {
item = new KeyframeViewItem(key);
item->SetTimeTarget(GetTimeTarget());
item->SetScale(GetScale());
item_map_.insert(key.get(), item);
scene()->addItem(item);
if (hidden_tracks_.contains(key->track())) {
item->setVisible(false);
}
}
return item;