cache: improved invalidation system

This commit is contained in:
itsmattkc
2021-07-15 20:59:37 -07:00
parent 657f9c5520
commit 8350ce300f
7 changed files with 46 additions and 44 deletions
@@ -62,6 +62,11 @@ void NodeParamViewWidgetBridge::SetTime(const rational &time)
}
}
int GetSliderCount(NodeValue::Type type)
{
return NodeValue::get_number_of_keyframe_tracks(type);
}
void NodeParamViewWidgetBridge::CreateWidgets()
{
if (input_.IsArray() && input_.element() == -1) {
@@ -73,7 +78,8 @@ void NodeParamViewWidgetBridge::CreateWidgets()
} else {
// We assume the first data type is the "primary" type
switch (input_.GetDataType()) {
NodeValue::Type t = input_.GetDataType();
switch (t) {
// None of these inputs have applicable UI widgets
case NodeValue::kNone:
case NodeValue::kTexture:
@@ -89,29 +95,17 @@ void NodeParamViewWidgetBridge::CreateWidgets()
CreateSliders<IntegerSlider>(1);
break;
}
case NodeValue::kFloat:
{
CreateSliders<FloatSlider>(1);
break;
}
case NodeValue::kRational:
{
CreateSliders<RationalSlider>(1);
break;
}
case NodeValue::kFloat:
case NodeValue::kVec2:
{
CreateSliders<FloatSlider>(2);
break;
}
case NodeValue::kVec3:
{
CreateSliders<FloatSlider>(3);
break;
}
case NodeValue::kVec4:
{
CreateSliders<FloatSlider>(4);
CreateSliders<FloatSlider>(GetSliderCount(t));
break;
}
case NodeValue::kCombo:
@@ -410,6 +404,7 @@ void NodeParamViewWidgetBridge::CreateSliders(int count)
T* fs = new T();
fs->SliderBase::SetDefaultValue(input_.GetSplitDefaultValueForTrack(i));
fs->SetLadderElementCount(2);
fs->SetIsEffectsSlider(true);
widgets_.append(fs);
connect(fs, &T::ValueChanged, this, &NodeParamViewWidgetBridge::WidgetCallback);
}
+11 -1
View File
@@ -22,6 +22,7 @@
#include "common/qtutils.h"
#include "config/config.h"
#include "core.h"
namespace olive {
@@ -34,7 +35,8 @@ NumericSliderBase::NumericSliderBase(QWidget *parent) :
has_max_(false),
dragged_diff_(0),
drag_multiplier_(1.0),
setting_drag_value_(false)
setting_drag_value_(false),
is_effects_slider_(false)
{
// Numeric sliders are draggable, so we have a cursor that indicates that
setCursor(Qt::SizeHorCursor);
@@ -60,6 +62,10 @@ void NumericSliderBase::LabelPressed()
connect(drag_ladder_, &SliderLadder::DraggedByValue, this, &NumericSliderBase::LadderDragged);
connect(drag_ladder_, &SliderLadder::Released, this, &NumericSliderBase::LadderReleased);
if (is_effects_slider_) {
Core::instance()->SetEffectsSliderIsBeingDragged(true);
}
}
void NumericSliderBase::LadderDragged(int value, double multiplier)
@@ -90,6 +96,10 @@ void NumericSliderBase::LadderDragged(int value, double multiplier)
void NumericSliderBase::LadderReleased()
{
if (is_effects_slider_) {
Core::instance()->SetEffectsSliderIsBeingDragged(false);
}
drag_ladder_->deleteLater();
drag_ladder_ = nullptr;
dragged_diff_ = 0;
@@ -42,6 +42,8 @@ public:
bool IsDragging() const;
void SetIsEffectsSlider(bool e) {is_effects_slider_ = e;}
protected:
const QVariant& GetOffset() const
{
@@ -87,6 +89,8 @@ private:
bool setting_drag_value_;
bool is_effects_slider_;
private slots:
void LabelPressed();