OPERATIONTYPE ClipItem::operationMode(QPointF pos)
{
if (isItemLocked()) return NONE;
-
+ const double scale = projectScene()->scale().x();
+ double maximumOffset = 6 / scale;
if (isSelected() || (parentItem() && parentItem()->isSelected())) {
- m_editedKeyframe = mouseOverKeyFrames(pos);
+ m_editedKeyframe = mouseOverKeyFrames(pos, maximumOffset);
if (m_editedKeyframe != -1) return KEYFRAME;
}
QRectF rect = sceneBoundingRect();
- const double scale = projectScene()->scale().x();
- double maximumOffset = 6 / scale;
int addtransitionOffset = 10;
// Don't allow add transition if track height is very small
if (rect.height() < 30) addtransitionOffset = 0;
EffectsParameterList ClipItem::addEffect(const QDomElement effect, bool animate)
{
bool needRepaint = false;
- int ix = effect.attribute("kdenlive_ix").toInt();
- if (ix <= m_effectList.count()) {
+ int ix;
+ if (!effect.hasAttribute("kdenlive_ix")) {
+ ix = effectsCounter();
+ } else ix = effect.attribute("kdenlive_ix").toInt();
+ if (!m_effectList.isEmpty() && ix <= m_effectList.count()) {
needRepaint = true;
m_effectList.insert(ix - 1, effect);
for (int i = ix; i < m_effectList.count(); i++) {
m_effectNames = m_effectList.effectNames().join(" / ");
if (fade > 0) m_startFade = fade;
else if (fade < 0) m_endFade = -fade;
+
if (m_selectedEffect == -1) {
setSelectedEffect(0);
- }
+ } else if (m_selectedEffect == ix - 1) setSelectedEffect(m_selectedEffect);
if (needRepaint) update(boundingRect());
/*if (animate) {
flashClip();
}
}
m_effectNames = m_effectList.effectNames().join(" / ");
+
if (m_effectList.isEmpty() || m_selectedEffect + 1 == index.toInt()) {
// Current effect was removed
if (index.toInt() > m_effectList.count() - 1) {
} else setSelectedEffect(index.toInt());
}
if (needRepaint) update(boundingRect());
- if (!m_effectList.isEmpty()) flashClip();
+ else {
+ QRectF r = boundingRect();
+ r.setHeight(20);
+ update(r);
+ }
+ //if (!m_effectList.isEmpty()) flashClip();
}
double ClipItem::speed() const