瀏覽代碼

Fix item drag-drop in polygon list

Kentaro Wada 4 年之前
父節點
當前提交
64958b5b59
共有 1 個文件被更改,包括 14 次插入5 次删除
  1. 14 5
      labelme/widgets/label_list_widget.py

+ 14 - 5
labelme/widgets/label_list_widget.py

@@ -94,18 +94,27 @@ class LabelListWidgetItem(QtGui.QStandardItem):
         return '{}("{}")'.format(self.__class__.__name__, self.text())
 
 
+class StandardItemModel(QtGui.QStandardItemModel):
+
+    itemDropped = QtCore.Signal()
+
+    def removeRows(self, *args, **kwargs):
+        ret = super().removeRows(*args, **kwargs)
+        self.itemDropped.emit()
+        return ret
+
+
 class LabelListWidget(QtWidgets.QListView):
 
     itemDoubleClicked = QtCore.Signal(LabelListWidgetItem)
     itemSelectionChanged = QtCore.Signal(list, list)
-    itemDropped = QtCore.Signal()
 
     def __init__(self):
         super(LabelListWidget, self).__init__()
         self._selectedItems = []
 
         self.setWindowFlags(Qt.Window)
-        self.setModel(QtGui.QStandardItemModel())
+        self.setModel(StandardItemModel())
         self.model().setItemPrototype(LabelListWidgetItem())
         self.setItemDelegate(HTMLDelegate())
         self.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
@@ -127,9 +136,9 @@ class LabelListWidget(QtWidgets.QListView):
         for i in range(len(self)):
             yield self[i]
 
-    def dropEvent(self, event):
-        super(LabelListWidget, self).dropEvent(event)
-        self.itemDropped.emit()
+    @property
+    def itemDropped(self):
+        return self.model().itemDropped
 
     @property
     def itemChanged(self):