]> git.sesse.net Git - kdenlive/blobdiff - src/projectlistview.cpp
Allow to preserve aspect ratio in render dialog resize option:
[kdenlive] / src / projectlistview.cpp
index c4b8d4f5ab3b44e90944b5488dcf76139130af98..02e00f68dde0a9348f30bc85240f5466da004247 100644 (file)
@@ -42,7 +42,8 @@ ProjectListView::ProjectListView(QWidget *parent) :
     setAlternatingRowColors(true);
     setDragEnabled(true);
     setAcceptDrops(true);
-
+    setFrameShape(QFrame::NoFrame);
+    setRootIsDecorated(false);
 
     setColumnCount(3);
     QStringList headers;
@@ -113,6 +114,15 @@ void ProjectListView::contextMenuEvent(QContextMenuEvent * event)
     emit requestMenu(event->globalPos(), itemAt(event->pos()));
 }
 
+// virtual
+void ProjectListView::keyPressEvent(QKeyEvent * event)
+{
+    if (event->key() == Qt::Key_Return) {
+        QTreeWidgetItem *it = currentItem();
+        if (it) it->setExpanded(!it->isExpanded());
+    } else QTreeWidget::keyPressEvent(event);
+}
+
 // virtual
 void ProjectListView::mouseDoubleClickEvent(QMouseEvent * event)
 {
@@ -123,7 +133,14 @@ void ProjectListView::mouseDoubleClickEvent(QMouseEvent * event)
     }
     ProjectItem *item;
     if (it->type() == PROJECTFOLDERTYPE) {
-        if ((columnAt(event->pos().x()) == 0)) QTreeWidget::mouseDoubleClickEvent(event);
+        if ((columnAt(event->pos().x()) == 0)) {
+            QPixmap pix = qVariantValue<QPixmap>(it->data(0, Qt::DecorationRole));
+            int offset = pix.width() + indentation();
+            if (event->pos().x() < offset) {
+                it->setExpanded(!it->isExpanded());
+                event->accept();
+            } else QTreeWidget::mouseDoubleClickEvent(event);
+        }
         return;
     }
     if (it->type() == PROJECTSUBCLIPTYPE) {
@@ -138,11 +155,17 @@ void ProjectListView::mouseDoubleClickEvent(QMouseEvent * event)
     if (!(item->flags() & Qt::ItemIsDragEnabled)) return;
 
     int column = columnAt(event->pos().x());
-    if (column == 0 && (item->clipType() == SLIDESHOW || item->clipType() == TEXT || item->clipType() == COLOR)) {
+    if (column == 0 && (item->clipType() == SLIDESHOW || item->clipType() == TEXT || item->clipType() == COLOR || it->childCount() > 0)) {
         QPixmap pix = qVariantValue<QPixmap>(it->data(0, Qt::DecorationRole));
         int offset = pix.width() + indentation();
         if (item->parent()) offset += indentation();
-        if ((pix.isNull() || offset < event->pos().x())) {
+        if (it->childCount() > 0) {
+            if (offset > event->pos().x()) {
+                it->setExpanded(!it->isExpanded());
+                event->accept();
+                return;
+            }
+        } else if (pix.isNull() || offset < event->pos().x()) {
             QTreeWidget::mouseDoubleClickEvent(event);
             return;
         }