diff --git a/src/Gui/DlgWorkbenchesImp.cpp b/src/Gui/DlgWorkbenchesImp.cpp index 7a04d12bb..a20a57d6a 100644 --- a/src/Gui/DlgWorkbenchesImp.cpp +++ b/src/Gui/DlgWorkbenchesImp.cpp @@ -51,10 +51,14 @@ DlgWorkbenchesImp::DlgWorkbenchesImp(QWidget* parent) this->setupUi(this); set_lw_properties(lw_enabled_workbenches); set_lw_properties(lw_disabled_workbenches); - const QString lw_disabled_name = QString::fromLatin1("disabled workbenches"); - lw_disabled_workbenches->setAccessibleName(lw_disabled_name); + lw_disabled_workbenches->setProperty("OnlyAcceptFrom", + QStringList() << lw_enabled_workbenches->objectName()); lw_disabled_workbenches->setSortingEnabled(true); + lw_enabled_workbenches->setProperty("OnlyAcceptFrom", + QStringList() << lw_enabled_workbenches->objectName() + << lw_disabled_workbenches->objectName()); + QStringList enabled_wbs_list = load_enabled_workbenches(); QStringList disabled_wbs_list = load_disabled_workbenches(); QStringList workbenches = Application::Instance->workbenches(); diff --git a/src/Gui/QListWidgetCustom.cpp b/src/Gui/QListWidgetCustom.cpp index fc7cb1546..704e3e2a9 100644 --- a/src/Gui/QListWidgetCustom.cpp +++ b/src/Gui/QListWidgetCustom.cpp @@ -39,16 +39,18 @@ QListWidgetCustom::~QListWidgetCustom() { } -/* Overriden dragMoveEvent prevents dragging items that originated +/* Overridden dragMoveEvent prevents dragging items that originated * from the same list for "disabled workbenches". Dragging from outside * is still allowed. Also it blocks dragging from another instance of FreeCAD */ void QListWidgetCustom::dragMoveEvent(QDragMoveEvent *e) { if (e->source() != 0) { - const QString disabled_wbs = QString::fromLatin1("disabled workbenches"); - if (e->source()->accessibleName() == disabled_wbs) { - if (e->source() == this) { + QVariant prop = this->property("OnlyAcceptFrom"); + if (prop.isValid()) { + QStringList filter = prop.toStringList(); + QString sender = e->source()->objectName(); + if (!filter.contains(sender)) { e->ignore(); } else { e->accept();