From d32ff84240c393b8581abbcaf7e9812fa6be53b4 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Fri, 15 Mar 2019 10:43:57 +1100 Subject: [PATCH] fixed multiple clip issues --- panels/effectcontrols.cpp | 3 ++- ui/effectui.cpp | 26 +++++++++++++++++++++++--- ui/effectui.h | 2 ++ 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/panels/effectcontrols.cpp b/panels/effectcontrols.cpp index a221c8f98..f306ec031 100644 --- a/panels/effectcontrols.cpp +++ b/panels/effectcontrols.cpp @@ -600,7 +600,8 @@ void EffectControls::Load() { // Check if we've already opened an effect of this type before bool already_opened = false; for (int k=0;kGetEffect()->meta == c->effects.at(j)->meta) { + if (open_effects_.at(k)->GetEffect()->meta == c->effects.at(j)->meta + && !open_effects_.at(k)->IsAttachedToClip(c)) { open_effects_.at(k)->AddAdditionalEffect(c->effects.at(j).get()); diff --git a/ui/effectui.cpp b/ui/effectui.cpp index e5e5ac734..8ec85ba97 100644 --- a/ui/effectui.cpp +++ b/ui/effectui.cpp @@ -102,9 +102,14 @@ void EffectUI::AddAdditionalEffect(Effect *e) // Ensure this is the same kind of effect and will be fully compatible Q_ASSERT(e->meta == effect_->meta); - // Add multiple modifer to header label - QString new_title = QString(tr("%1 (multiple)")).arg(Title()); - SetTitle(new_title); + // Add multiple modifer to header label (but only once) + if (!multiple_) { + QString new_title = QString(tr("%1 (multiple)")).arg(Title()); + + SetTitle(new_title); + + multiple_ = true; + } // Add effect to list additional_effects_.append(e); @@ -189,6 +194,21 @@ void EffectUI::UpdateFromEffect() } } +bool EffectUI::IsAttachedToClip(Clip *c) +{ + if (GetEffect()->parent_clip == c) { + return true; + } + + for (int i=0;iparent_clip == c) { + return true; + } + } + + return false; +} + QWidget *EffectUI::Widget(int row, int field) { return widgets_.at(row).at(field); diff --git a/ui/effectui.h b/ui/effectui.h index 7e448a8d9..eb9be8dbf 100644 --- a/ui/effectui.h +++ b/ui/effectui.h @@ -17,6 +17,8 @@ public: void UpdateFromEffect(); + bool IsAttachedToClip(Clip* c); + signals: void CutRequested(); void CopyRequested();