#include <QGraphicsView>
#include <QScrollBar>
-AbstractClipItem::AbstractClipItem(const ItemInfo info, const QRectF& rect, double fps): QGraphicsRectItem(rect), m_startFade(0), m_endFade(0), m_track(0), m_fps(fps) {
+AbstractClipItem::AbstractClipItem(const ItemInfo info, const QRectF& rect, double fps): QGraphicsRectItem(rect), m_track(0), m_fps(fps) {
setFlags(QGraphicsItem::ItemClipsToShape | QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
setTrack(info.track);
m_startPos = info.startPos;
}
}
-void AbstractClipItem::setFadeOut(int pos, double scale) {
-
-}
-
-void AbstractClipItem::setFadeIn(int pos, double scale) {
-
-}
-
GenTime AbstractClipItem::duration() const {
return m_cropDuration;
}
return m_fps;
}
-int AbstractClipItem::fadeIn() const {
- return m_startFade;
-}
-
-int AbstractClipItem::fadeOut() const {
- return m_endFade;
-}
-
GenTime AbstractClipItem::maxDuration() const {
return m_maxDuration;
}
virtual GenTime cropStart() const ;
virtual void resizeStart(int posx, double scale);
virtual void resizeEnd(int posx, double scale);
- virtual void setFadeOut(int pos, double scale);
- virtual void setFadeIn(int pos, double scale);
virtual GenTime duration() const;
virtual double fps() const;
- virtual int fadeIn() const;
- virtual int fadeOut() const;
virtual GenTime maxDuration() const;
virtual void setCropStart(GenTime pos);
GenTime m_startPos;
GenTime m_maxDuration;
double m_fps;
- uint m_startFade;
- uint m_endFade;
QPainterPath upperRectPart(QRectF);
QPainterPath lowerRectPart(QRectF);
QRect visibleRect();
#include "kthumb.h"
ClipItem::ClipItem(DocClipBase *clip, ItemInfo info, GenTime cropStart, double scale, double fps)
- : AbstractClipItem(info, QRectF(), fps), m_clip(clip), m_resizeMode(NONE), m_grabPoint(0), m_maxTrack(0), m_hasThumbs(false), startThumbTimer(NULL), endThumbTimer(NULL), m_effectsCounter(1), audioThumbWasDrawn(false), m_opacity(1.0), m_timeLine(0), m_thumbsRequested(0), m_hover(false) {
+ : AbstractClipItem(info, QRectF(), fps), m_clip(clip), m_resizeMode(NONE), m_grabPoint(0), m_maxTrack(0), m_hasThumbs(false), startThumbTimer(NULL), endThumbTimer(NULL), m_effectsCounter(1), audioThumbWasDrawn(false), m_opacity(1.0), m_timeLine(0), m_thumbsRequested(0), m_startFade(0), m_endFade(0), m_hover(false) {
QRectF rect((double) info.startPos.frames(fps) * scale, (double)(info.track * KdenliveSettings::trackheight() + 1), (double)(info.endPos - info.startPos).frames(fps) * scale, (double)(KdenliveSettings::trackheight() - 1));
setRect(rect);
void ClipItem::flashClip() {
if (m_timeLine == 0) {
m_timeLine = new QTimeLine(750, this);
+ m_timeLine->setCurveShape(QTimeLine::EaseInOutCurve);
connect(m_timeLine, SIGNAL(valueChanged(qreal)), this, SLOT(animate(qreal)));
}
m_timeLine->start();
}
void ClipItem::animate(qreal value) {
- m_opacity = value;
+ //m_opacity = value;
update();
}
pen.setStyle(Qt::SolidLine);
- /*
- // draw start / end fades
- QBrush fades;
- if (isSelected()) {
- fades = QBrush(QColor(200, 50, 50, 150));
- } else fades = QBrush(QColor(200, 200, 200, 200));
-
- if (m_startFade != 0) {
- QPainterPath fadeInPath;
- fadeInPath.moveTo(br.x() , br.y());
- fadeInPath.lineTo(br.x() , br.y() + br.height());
- fadeInPath.lineTo(br.x() + m_startFade * scale, br.y());
- fadeInPath.closeSubpath();
- painter->fillPath(fadeInPath, fades);
- if (isSelected()) {
- QLineF l(br.x() + m_startFade * scale, br.y(), br.x(), br.y() + br.height());
- painter->drawLine(l);
- }
- }
- if (m_endFade != 0) {
- QPainterPath fadeOutPath;
- fadeOutPath.moveTo(br.x() + br.width(), br.y());
- fadeOutPath.lineTo(br.x() + br.width(), br.y() + br.height());
- fadeOutPath.lineTo(br.x() + br.width() - m_endFade * scale, br.y());
- fadeOutPath.closeSubpath();
- painter->fillPath(fadeOutPath, fades);
- if (isSelected()) {
- QLineF l(br.x() + br.width() - m_endFade * scale, br.y(), br.x() + br.width(), br.y() + br.height());
- painter->drawLine(l);
- }
- }
- */
- //pen.setStyle(Qt::DashDotDotLine); //Qt::DotLine);
+ // draw start / end fades
+ QBrush fades;
+ if (isSelected()) {
+ fades = QBrush(QColor(200, 50, 50, 150));
+ } else fades = QBrush(QColor(200, 200, 200, 200));
+
+ if (m_startFade != 0) {
+ QPainterPath fadeInPath;
+ fadeInPath.moveTo(br.x() , br.y());
+ fadeInPath.lineTo(br.x() , br.y() + br.height());
+ fadeInPath.lineTo(br.x() + m_startFade * scale, br.y());
+ fadeInPath.closeSubpath();
+ painter->fillPath(fadeInPath, fades);
+ if (isSelected()) {
+ QLineF l(br.x() + m_startFade * scale, br.y(), br.x(), br.y() + br.height());
+ painter->drawLine(l);
+ }
+ }
+ if (m_endFade != 0) {
+ QPainterPath fadeOutPath;
+ fadeOutPath.moveTo(br.x() + br.width(), br.y());
+ fadeOutPath.lineTo(br.x() + br.width(), br.y() + br.height());
+ fadeOutPath.lineTo(br.x() + br.width() - m_endFade * scale, br.y());
+ fadeOutPath.closeSubpath();
+ painter->fillPath(fadeOutPath, fades);
+ if (isSelected()) {
+ QLineF l(br.x() + br.width() - m_endFade * scale, br.y(), br.x() + br.width(), br.y() + br.height());
+ painter->drawLine(l);
+ }
+ }
// Draw effects names
- QString effects = effectNames().join(" / ");
- if (!effects.isEmpty()) {
- QFont font = painter->font();
- QFont smallFont = font;
- smallFont.setPointSize(8);
- painter->setFont(smallFont);
- QRectF txtBounding = painter->boundingRect(br, Qt::AlignLeft | Qt::AlignTop, " " + effects + " ");
+ if (!m_effectNames.isEmpty()) {
+ QRectF txtBounding = painter->boundingRect(br, Qt::AlignLeft | Qt::AlignTop, m_effectNames);
+ txtBounding.setRight(txtBounding.right() + 15);
painter->setPen(Qt::white);
- painter->fillRect(txtBounding, QBrush(QColor(0, 0, 0, 150)));
- painter->drawText(txtBounding, Qt::AlignCenter, effects);
+ QBrush markerBrush(Qt::SolidPattern);
+ if (m_timeLine && m_timeLine->state() == QTimeLine::Running) {
+ qreal value = m_timeLine->currentValue();
+ txtBounding.setWidth(txtBounding.width() * value);
+ markerBrush.setColor(QColor(50 + 200 * (1.0 - value), 50, 50, 100 + 50 * value));
+ } else markerBrush.setColor(QColor(50, 50, 50, 150));
+ QPainterPath path;
+ path.addRoundedRect(txtBounding, 4, 4);
+ painter->fillPath(path, markerBrush);
+ painter->drawText(txtBounding, Qt::AlignCenter, m_effectNames);
painter->setPen(Qt::black);
- painter->setFont(font);
}
/*
//}
}
+uint ClipItem::fadeIn() const {
+ return m_startFade;
+}
+
+uint ClipItem::fadeOut() const {
+ return m_endFade;
+}
void ClipItem::setFadeIn(int pos, double scale) {
kDebug() << "CHange EFFECT AT: " << ix << ", CURR: " << m_effectList.at(ix).attribute("tag") << ", NEW: " << effect.attribute("tag");
m_effectList.insert(ix, effect);
m_effectList.removeAt(ix + 1);
+ m_effectNames = m_effectList.effectNames().join(" / ");
update(boundingRect());
}
kDebug() << "/////// CLIP ADD EFFECT: "<< doc.toString();*/
m_effectList.append(effect);
effectParams["tag"] = effect.attribute("tag");
+ QString effectId = effect.attribute("id");
effectParams["kdenlive_ix"] = effect.attribute("kdenlive_ix");
QString state = effect.attribute("disabled");
if (!state.isEmpty()) effectParams["disabled"] = state;
QDomNodeList params = effect.elementsByTagName("parameter");
+ int fade = 0;
for (int i = 0; i < params.count(); i++) {
QDomElement e = params.item(i).toElement();
if (!e.isNull()) {
- effectParams[e.attribute("name")] = e.attribute("value");
- }
- if (!e.attribute("factor").isEmpty()) {
- effectParams[e.attribute("name")] = QString::number(effectParams[e.attribute("name")].toDouble() / e.attribute("factor").toDouble());
+ if (e.attribute("factor").isEmpty()) {
+ effectParams[e.attribute("name")] = e.attribute("value");
+ // check if it is a fade effect
+ if (effectId == "fadein") {
+ if (e.attribute("name") == "out") fade += e.attribute("value").toInt();
+ else if (e.attribute("name") == "in") fade -= e.attribute("value").toInt();
+ } else if (effectId == "fadeout") {
+ if (e.attribute("name") == "out") fade -= e.attribute("value").toInt();
+ else if (e.attribute("name") == "in") fade += e.attribute("value").toInt();
+ }
+ } else {
+ effectParams[e.attribute("name")] = QString::number(effectParams[e.attribute("name")].toDouble() / e.attribute("factor").toDouble());
+ }
}
}
- if (animate) flashClip();
+ m_effectNames = m_effectList.effectNames().join(" / ");
+ if (fade > 0) m_startFade = fade;
+ else if (fade < 0) m_endFade = -fade;
+ if (animate) {
+ flashClip();
+ }
update(boundingRect());
return effectParams;
}
void ClipItem::deleteEffect(QString index) {
for (int i = 0; i < m_effectList.size(); ++i) {
if (m_effectList.at(i).attribute("kdenlive_ix") == index) {
+ if (m_effectList.at(i).attribute("id") == "fadein") m_startFade = 0;
+ else if (m_effectList.at(i).attribute("id") == "fadeout") m_endFade = 0;
m_effectList.removeAt(i);
break;
}
}
+ m_effectNames = m_effectList.effectNames().join(" / ");
flashClip();
update(boundingRect());
}
void refreshClip();
/** Returns a list of times for this clip's markers */
QList <GenTime> snapMarkers();
+ uint fadeIn() const;
+ uint fadeOut() const;
protected:
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent * event);
int m_producer;
CLIPTYPE m_clipType;
QString m_clipName;
-
+ QString m_effectNames;
+ uint m_startFade;
+ uint m_endFade;
int m_maxTrack;
#include "clipmanager.h"
#include "renderer.h"
#include "markerdialog.h"
+#include "mainwindow.h"
+
//TODO:
// disable animation if user asked it in KDE's global settings
m_dragItem->resizeEnd((int)(snappedPos / m_scale), m_scale);
} else if (m_operationMode == FADEIN) {
int pos = (int)(mapToScene(event->pos()).x() / m_scale);
- m_dragItem->setFadeIn((int)(pos - m_dragItem->startPos().frames(m_document->fps())), m_scale);
+ ((ClipItem*) m_dragItem)->setFadeIn((int)(pos - m_dragItem->startPos().frames(m_document->fps())), m_scale);
} else if (m_operationMode == FADEOUT) {
int pos = (int)(mapToScene(event->pos()).x() / m_scale);
- m_dragItem->setFadeOut((int)(m_dragItem->endPos().frames(m_document->fps()) - pos), m_scale);
+ ((ClipItem*) m_dragItem)->setFadeOut((int)(m_dragItem->endPos().frames(m_document->fps()) - pos), m_scale);
}
if (m_animation) delete m_animation;
}
} else if (opMode == FADEIN) {
if (m_visualTip == NULL) {
- m_visualTip = new QGraphicsEllipseItem(clip->rect().x() + clip->fadeIn() * m_scale - size, clip->rect().y() - 8, size * 2, 16);
+ ClipItem *item = (ClipItem *) clip;
+ m_visualTip = new QGraphicsEllipseItem(item->rect().x() + item->fadeIn() * m_scale - size, item->rect().y() - 8, size * 2, 16);
((QGraphicsEllipseItem*) m_visualTip)->setBrush(m_tipColor);
((QGraphicsEllipseItem*) m_visualTip)->setPen(m_tipPen);
m_visualTip->setZValue(100);
m_visualTip->setPos(0, 0);
double scale = 2.0;
m_animation->setScaleAt(.5, scale, scale);
- m_animation->setPosAt(.5, QPointF(clip->rect().x() - clip->rect().x() * scale - clip->fadeIn() * m_scale, clip->rect().y() - clip->rect().y() * scale));
+ m_animation->setPosAt(.5, QPointF(item->rect().x() - item->rect().x() * scale - item->fadeIn() * m_scale, item->rect().y() - item->rect().y() * scale));
scale = 1.0;
m_animation->setScaleAt(1, scale, scale);
- m_animation->setPosAt(1, QPointF(clip->rect().x() - clip->rect().x() * scale, clip->rect().y() - clip->rect().y() * scale));
+ m_animation->setPosAt(1, QPointF(item->rect().x() - item->rect().x() * scale, item->rect().y() - item->rect().y() * scale));
scene()->addItem(m_visualTip);
m_animationTimer->start();
}
setCursor(Qt::PointingHandCursor);
} else if (opMode == FADEOUT) {
if (m_visualTip == NULL) {
- m_visualTip = new QGraphicsEllipseItem(clip->rect().x() + clip->rect().width() - clip->fadeOut() * m_scale - size, clip->rect().y() - 8, size*2, 16);
+ ClipItem *item = (ClipItem *) clip;
+ m_visualTip = new QGraphicsEllipseItem(item->rect().x() + item->rect().width() - item->fadeOut() * m_scale - size, item->rect().y() - 8, size*2, 16);
((QGraphicsEllipseItem*) m_visualTip)->setBrush(m_tipColor);
((QGraphicsEllipseItem*) m_visualTip)->setPen(m_tipPen);
m_visualTip->setZValue(100);
m_visualTip->setPos(0, 0);
double scale = 2.0;
m_animation->setScaleAt(.5, scale, scale);
- m_animation->setPosAt(.5, QPointF(clip->rect().x() - clip->rect().x() * scale - clip->rect().width() + clip->fadeOut() * m_scale, clip->rect().y() - clip->rect().y() * scale));
+ m_animation->setPosAt(.5, QPointF(item->rect().x() - item->rect().x() * scale - item->rect().width() + item->fadeOut() * m_scale, item->rect().y() - item->rect().y() * scale));
scale = 1.0;
m_animation->setScaleAt(1, scale, scale);
- m_animation->setPosAt(1, QPointF(clip->rect().x() - clip->rect().x() * scale, clip->rect().y() - clip->rect().y() * scale));
+ m_animation->setPosAt(1, QPointF(item->rect().x() - item->rect().x() * scale, item->rect().y() - item->rect().y() * scale));
scene()->addItem(m_visualTip);
m_animationTimer->start();
}
// resize start
if (m_dragItem->type() == AVWIDGET) {
m_document->renderer()->mltResizeClipStart(m_tracksList.count() - m_dragItem->track(), m_dragItem->endPos(), m_dragItem->startPos(), m_dragItemInfo.startPos, m_dragItem->cropStart(), m_dragItem->cropStart() + m_dragItem->endPos() - m_dragItem->startPos());
+ updateClipFade((ClipItem *) m_dragItem);
ResizeClipCommand *command = new ResizeClipCommand(this, m_dragItemInfo, info, false);
m_commandStack->push(command);
} else if (m_dragItem->type() == TRANSITIONWIDGET) {
m_document->renderer()->mltResizeClipEnd(m_tracksList.count() - m_dragItem->track(), m_dragItem->startPos(), m_dragItem->cropStart(), m_dragItem->cropStart() + m_dragItem->endPos() - m_dragItem->startPos());
m_commandStack->push(command);
} else if (m_dragItem->type() == TRANSITIONWIDGET) {
-
MoveTransitionCommand *command = new MoveTransitionCommand(this, m_dragItemInfo, info, false);
m_commandStack->push(command);
Transition *transition = (Transition *) m_dragItem;
m_document->renderer()->mltMoveTransition(transition->transitionTag(), (int)(m_tracksList.count() - m_dragItemInfo.track), (int)(m_tracksList.count() - m_dragItemInfo.track), 0, m_dragItemInfo.startPos, m_dragItemInfo.endPos, info.startPos, info.endPos);
}
//m_document->renderer()->doRefresh();
+ } else if (m_operationMode == FADEIN) {
+ // resize fade in effect
+ ClipItem * item = (ClipItem *) m_dragItem;
+ QStringList clipeffects = item->effectNames();
+ if (clipeffects.contains(i18n("Fade in"))) {
+ QDomElement oldeffect = item->effectAt(clipeffects.indexOf("Fade in"));
+ int start = item->cropStart().frames(m_document->fps());
+ int end = item->fadeIn();
+ if (end == 0) {
+ slotDeleteEffect(item, oldeffect);
+ } else {
+ end += start;
+ QDomElement effect = MainWindow::audioEffects.getEffectByName("Fade in");
+ EffectsList::setParameter(effect, "in", QString::number(start));
+ EffectsList::setParameter(effect, "out", QString::number(end));
+ slotUpdateClipEffect(item, oldeffect, effect);
+ }
+ } else {
+ QDomElement effect = MainWindow::audioEffects.getEffectByName("Fade in");
+ int start = item->cropStart().frames(m_document->fps());
+ int end = item->fadeIn() + start;
+ EffectsList::setParameter(effect, "in", QString::number(start));
+ EffectsList::setParameter(effect, "out", QString::number(end));
+ slotAddEffect(effect, m_dragItem->startPos(), m_dragItem->track());
+ }
+ } else if (m_operationMode == FADEOUT) {
+ // resize fade in effect
+ ClipItem * item = (ClipItem *) m_dragItem;
+ QStringList clipeffects = item->effectNames();
+ if (clipeffects.contains(i18n("Fade out"))) {
+ QDomElement oldeffect = item->effectAt(clipeffects.indexOf("Fade out"));
+ int end = (item->duration() + item->cropStart()).frames(m_document->fps());
+ int start = item->fadeOut();
+ if (start == 0) {
+ slotDeleteEffect(item, oldeffect);
+ } else {
+ start = end - start;
+ QDomElement effect = MainWindow::audioEffects.getEffectByName("Fade out");
+ EffectsList::setParameter(effect, "in", QString::number(start));
+ EffectsList::setParameter(effect, "out", QString::number(end));
+ slotUpdateClipEffect(item, oldeffect, effect);
+ }
+ } else {
+ QDomElement effect = MainWindow::audioEffects.getEffectByName("Fade out");
+ int end = (item->duration() + item->cropStart()).frames(m_document->fps());
+ int start = end - item->fadeOut();
+ EffectsList::setParameter(effect, "in", QString::number(start));
+ EffectsList::setParameter(effect, "out", QString::number(end));
+ slotAddEffect(effect, m_dragItem->startPos(), m_dragItem->track());
+ }
}
+
emit transitionItemSelected((m_dragItem && m_dragItem->type() == TRANSITIONWIDGET) ? (Transition*) m_dragItem : NULL);
m_document->setModified(true);
m_operationMode = NONE;
kDebug() << "---------------- ERROR, CANNOT find clip to move at...";// << rect.x();
return;
}
+ if (item->isSelected()) emit clipItemSelected(NULL);
item->baseClip()->removeReference();
m_document->updateClip(item->baseClip()->getId());
delete item;
if (resizeClipStart) {
m_document->renderer()->mltResizeClipStart(m_tracksList.count() - item->track(), item->endPos(), end.startPos, item->startPos(), item->cropStart() + end.startPos - start.startPos, item->cropStart() + end.startPos - start.startPos + item->endPos() - end.startPos);
item->resizeStart((int) end.startPos.frames(m_document->fps()), m_scale);
+ updateClipFade(item);
} else {
m_document->renderer()->mltResizeClipEnd(m_tracksList.count() - item->track(), item->startPos(), item->cropStart(), item->cropStart() + end.startPos - item->startPos());
item->resizeEnd((int) end.startPos.frames(m_document->fps()), m_scale);
+ updateClipFade(item, true);
}
m_document->renderer()->doRefresh();
}
+void CustomTrackView::updateClipFade(ClipItem * item, bool updateFadeOut) {
+ if (!updateFadeOut) {
+ int end = item->fadeIn();
+ if (end != 0) {
+ // there is a fade in effect
+ QStringList clipeffects = item->effectNames();
+ QDomElement oldeffect = item->effectAt(clipeffects.indexOf("Fade in"));
+ int start = item->cropStart().frames(m_document->fps());
+ end += start;
+ EffectsList::setParameter(oldeffect, "in", QString::number(start));
+ EffectsList::setParameter(oldeffect, "out", QString::number(end));
+ QMap <QString, QString> effectParams = item->getEffectArgs(oldeffect);
+ m_document->renderer()->mltEditEffect(m_tracksList.count() - item->track(), item->startPos(), effectParams);
+ }
+ } else {
+ int start = item->fadeOut();
+ if (start != 0) {
+ // there is a fade in effect
+ QStringList clipeffects = item->effectNames();
+ QDomElement oldeffect = item->effectAt(clipeffects.indexOf("Fade out"));
+ int end = (item->duration() - item->cropStart()).frames(m_document->fps());
+ start = end - start;
+ EffectsList::setParameter(oldeffect, "in", QString::number(start));
+ EffectsList::setParameter(oldeffect, "out", QString::number(end));
+ QMap <QString, QString> effectParams = item->getEffectArgs(oldeffect);
+ m_document->renderer()->mltEditEffect(m_tracksList.count() - item->track(), item->startPos(), effectParams);
+ }
+ }
+}
+
double CustomTrackView::getSnapPointForPos(double pos) {
for (int i = 0; i < m_snapPoints.size(); ++i) {
if (abs((int)(pos - m_snapPoints.at(i).frames(m_document->fps()) * m_scale)) < 10) {
QCursor m_razorCursor;
/** Get the index of the video track that is just below current track */
int getPreviousVideoTrack(int track);
-
+ void updateClipFade(ClipItem * item, bool updateFadeOut = false);
signals:
void cursorMoved(int, int);
return info;
}
+// static
+void EffectsList::setParameter(QDomElement effect, QString name, QString value) {
+ QDomNodeList params = effect.elementsByTagName("parameter");
+ for (int i = 0; i < params.count(); i++) {
+ QDomElement e = params.item(i).toElement();
+ if (e.attribute("name") == name) {
+ e.setAttribute("value", value);
+ break;
+ }
+ }
+}
+
QStringList effectNames();
QString getInfo(QString effectName);
QMap <QString, QString> effect(const QString & name);
+
+ static void setParameter(QDomElement effect, QString name, QString value);
};
#endif
void EffectsListView::showInfoPanel() {
if (ui.infopanel->isVisible()) {
- ui.infopanel->hide();
+ ui.infopanel->setVisible(false);
ui.buttonInfo->setDown(false);
} else {
- ui.infopanel->show();
+ ui.infopanel->setVisible(true);
ui.buttonInfo->setDown(true);
}
}
//TODO constant, list, bool, complex , color, geometry, position
- if (type == "double" || type == "constant") {
+ if (type == "double") {
createSliderItem(paramName, value.toInt(), pa.attribute("min").toInt(), pa.attribute("max").toInt());
delete toFillin;
toFillin = NULL;
QDomNode na = pa.firstChildElement("name");
QString type = pa.attributes().namedItem("type").nodeValue();
QString setValue;
- if (type == "double" || type == "constant") {
+ if (type == "double") {
QSlider* slider = ((Ui::Constval_UI*)valueItems[na.toElement().text()])->horizontalSlider;
setValue = QString::number(slider->value());
} else if (type == "list") {
}
int diff = 1;
if (m_selectedItem->type() == 8) {
- QGraphicsTextItem *t = static_cast<QGraphicsTextItem *>(m_selectedItem);
- if (t->textInteractionFlags() & Qt::TextEditorInteraction) {
- QGraphicsScene::keyPressEvent(keyEvent);
- return;
- }
+ QGraphicsTextItem *t = static_cast<QGraphicsTextItem *>(m_selectedItem);
+ if (t->textInteractionFlags() & Qt::TextEditorInteraction) {
+ QGraphicsScene::keyPressEvent(keyEvent);
+ return;
+ }
}
if (keyEvent->modifiers() & Qt::ControlModifier) diff = 10;
switch (keyEvent->key()) {
break;
case Qt::Key_Delete:
case Qt::Key_Backspace:
- delete m_selectedItem;
- m_selectedItem = NULL;
- emit selectionChanged();
+ delete m_selectedItem;
+ m_selectedItem = NULL;
+ emit selectionChanged();
break;
default:
QGraphicsScene::keyPressEvent(keyEvent);
connect(headerView, SIGNAL(customContextMenuRequested(const QPoint&)),
this, SLOT(configureColumns(const QPoint&)));
- connect(this, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), this, SLOT(slotFocusOut(QTreeWidgetItem *, QTreeWidgetItem *)));
+ //connect(this, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), this, SLOT(slotFocusOut(QTreeWidgetItem *, QTreeWidgetItem *)));
if (!KdenliveSettings::showdescriptioncolumn()) hideColumn(2);
if (!KdenliveSettings::showratingcolumn()) hideColumn(3);
connect(ui.listWidget, SIGNAL(currentRowChanged(int)), this, SLOT(slotTransitionChanged()));
connect(this, SIGNAL(transferParamDesc(const QDomElement&, int , int)), effectEdit , SLOT(transferParamDesc(const QDomElement&, int , int)));
connect(effectEdit, SIGNAL(parameterChanged(const QDomElement&, const QDomElement&)), this , SLOT(slotUpdateEffectParams(const QDomElement&, const QDomElement&)));
+ ui.splitter->setStretchFactor(0, 1);
+ ui.splitter->setStretchFactor(1, 10);
}
<rect>
<x>0</x>
<y>0</y>
- <width>323</width>
- <height>217</height>
+ <width>291</width>
+ <height>189</height>
</rect>
</property>
<property name="windowTitle" >
<widget class="QListWidget" name="listWidget" />
<widget class="QFrame" name="frame" >
<property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
+ <sizepolicy vsizetype="Preferred" hsizetype="Expanding" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>