diff --git a/src/Icons/oxygen/folder-documents.png b/src/Icons/oxygen/folder-documents.png
new file mode 100644
index 000000000..cb457a538
Binary files /dev/null and b/src/Icons/oxygen/folder-documents.png differ
diff --git a/src/icons.qrc b/src/icons.qrc
index 98a761a33..0706af43d 100644
--- a/src/icons.qrc
+++ b/src/icons.qrc
@@ -166,6 +166,7 @@
Icons/oxygen/network-server.png
Icons/oxygen/folder.png
Icons/oxygen/urlseed.png
+ Icons/oxygen/folder-documents.png
Icons/oxygen/edit-cut.png
Icons/oxygen/unsubscribe.png
Icons/oxygen/feed-subscribe.png
diff --git a/src/transferlistfilterswidget.h b/src/transferlistfilterswidget.h
index 9bdfdae31..a7478d68e 100644
--- a/src/transferlistfilterswidget.h
+++ b/src/transferlistfilterswidget.h
@@ -47,8 +47,12 @@
class LabelFiltersList: public QListWidget {
Q_OBJECT
+private:
+ QListWidgetItem *itemHover;
+
public:
- LabelFiltersList(QWidget *parent): QListWidget(parent){
+ LabelFiltersList(QWidget *parent): QListWidget(parent) {
+ itemHover = 0;
// Accept drop
setAcceptDrops(true);
}
@@ -57,12 +61,24 @@ signals:
void torrentDropped(int label_row);
protected:
- void dragMoveEvent(QDragMoveEvent* event) {
+ void dragMoveEvent(QDragMoveEvent *event) {
//qDebug("filters, dragmoveevent");
if(itemAt(event->pos()) && row(itemAt(event->pos())) > 0) {
//qDebug("Name: %s", itemAt(event->pos())->text().toLocal8Bit().data());
+ if(itemHover) {
+ if(itemHover != itemAt(event->pos())) {
+ setItemHover(false);
+ itemHover = itemAt(event->pos());
+ setItemHover(true);
+ }
+ } else {
+ itemHover = itemAt(event->pos());
+ setItemHover(true);
+ }
event->acceptProposedAction();
} else {
+ if(itemHover)
+ setItemHover(false);
event->ignore();
}
}
@@ -73,6 +89,29 @@ protected:
emit torrentDropped(row(itemAt(event->pos())));
}
event->ignore();
+ setItemHover(false);
+ // Select current item again
+ currentItem()->setSelected(true);
+ }
+
+ void dragLeaveEvent(QDragLeaveEvent*) {
+ if(itemHover)
+ setItemHover(false);
+ // Select current item again
+ currentItem()->setSelected(true);
+ }
+
+ void setItemHover(bool hover) {
+ Q_ASSERT(itemHover);
+ if(hover) {
+ itemHover->setData(Qt::DecorationRole, QIcon(":/Icons/oxygen/folder-documents.png"));
+ itemHover->setSelected(true);
+ //setCurrentItem(itemHover);
+ } else {
+ itemHover->setData(Qt::DecorationRole, QIcon(":/Icons/oxygen/folder.png"));
+ //itemHover->setSelected(false);
+ itemHover = 0;
+ }
}
};
@@ -144,6 +183,7 @@ public:
newLabel->setData(Qt::DecorationRole, QIcon(":/Icons/oxygen/folder.png"));
}
labelFilters->selectionModel()->select(labelFilters->model()->index(0,0), QItemSelectionModel::Select);
+ labelFilters->setCurrentItem(labelFilters->item(0));
// Label menu
labelFilters->setContextMenuPolicy(Qt::CustomContextMenu);
connect(labelFilters, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showLabelMenu(QPoint)));