Switch to side-by-side view

--- a/GUI/playlist/view/PlaylistView.cpp
+++ b/GUI/playlist/view/PlaylistView.cpp
@@ -38,7 +38,6 @@
 
     setMouseTracking(true);
 
-    _drag_allowed = true;
     _inner_drag_drop = false;
     _parent = parent;
     _qDrag = 0;
@@ -76,44 +75,31 @@
 {
     m_usertimer->start(user_activity_timeout_ms);
 
-    QPoint pos_org = event->pos();
-    QPoint pos = QWidget::mapToGlobal(pos_org);
-
     switch (event->button()) {
 
     case Qt::LeftButton:
-        if (!_drag_allowed) {
-            break;
-        }
-
-        QListView::mousePressEvent(event);
-
-        if ((this->model()->rowCount()) * 33 > event->pos().y()) {
+    {
+        QModelIndex index = this->indexAt(event->pos());
+        if (index.isValid()) {
             _drag_pos = event->pos();
         } else {
-            _drag_pos.setY(-10);
             _drag = false;
         }
-
-        break;
+    }
+    break;
 
     case Qt::RightButton:
         _drag = false;
-
-        QListView::mousePressEvent(event);
-        pos.setY(pos.y());
-        pos.setX(pos.x() + 10);
-
         if (_rc_menu) {
-            _rc_menu->exec(pos);
-        }
-
+            _rc_menu->exec(QWidget::mapToGlobal(event->pos()));
+        }
         break;
 
     default:
         _drag = false;
         break;
     }
+    QListView::mousePressEvent(event);
 }
 
 
@@ -122,20 +108,19 @@
     m_usertimer->start(user_activity_timeout_ms);
 
     QPoint pos = event->pos();
-    int distance =  abs(pos.x() - _drag_pos.x()) +  abs(pos.y() - _drag_pos.y());
-
-    if (_drag && _qDrag && (distance > 10) && _drag_allowed) {
-        _qDrag->exec(Qt::CopyAction);
-    }
-}
-
+    if (_drag && _qDrag) {
+        int distance =  abs(pos.x() - _drag_pos.x()) +  abs(pos.y() - _drag_pos.y());
+        if (distance > 10) {
+            _qDrag->exec(Qt::CopyAction);
+        }
+    }
+}
 
 void PlaylistView::mouseReleaseEvent(QMouseEvent* event)
 {
     m_usertimer->start(user_activity_timeout_ms);
 
     switch (event->button()) {
-
     case Qt::LeftButton:
 
         if (_qDrag) {
@@ -143,22 +128,19 @@
             _qDrag = NULL;
         }
 
-        QListView::mouseReleaseEvent(event);
-        event->accept();
-
         _drag = false;
         break;
 
     default:
         break;
     }
+    QListView::mouseReleaseEvent(event);
 }
 
 
 // get the min index of selected rows
 int PlaylistView::get_min_selected()
 {
-
     QModelIndexList lst = this->selectedIndexes();
     int min_row = 5000000;
 
@@ -314,10 +296,6 @@
 
 void PlaylistView::set_mimedata(MetaDataList& v_md, QString text)
 {
-
-    if (!_drag_allowed) {
-        return;
-    }
     if (_qDrag) {
         delete _qDrag;
     }
@@ -347,12 +325,6 @@
 {
     _qDrag = NULL;
 }
-
-void PlaylistView::set_drag_enabled(bool b)
-{
-    _drag_allowed = b;
-}
-
 
 int PlaylistView::get_num_rows()
 {
@@ -451,7 +423,6 @@
 
 void PlaylistView::row_pressed(const QModelIndex&)
 {
-
     QList<int> selected_rows = calc_selections();
     _inner_drag_drop = true;