From 413f00a4755b2e07707cdb857a88f7a1ade91630 Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Mon, 22 Apr 2019 00:18:46 +0300 Subject: [PATCH] Select just item being dragged when drag starts --- gui/builtinViews/fittingView.py | 39 +++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/gui/builtinViews/fittingView.py b/gui/builtinViews/fittingView.py index 8bc35ba5e..9447997bd 100644 --- a/gui/builtinViews/fittingView.py +++ b/gui/builtinViews/fittingView.py @@ -237,17 +237,38 @@ class FittingView(d.Display): return self.activeFitID def startDrag(self, event): - row = event.GetIndex() + srcRow = event.GetIndex() - if row != -1 and row not in self.blanks and isinstance(self.mods[row], Module) and not self.mods[row].isEmpty: - data = wx.TextDataObject() - dataStr = "fitting:" + str(self.mods[row].modPosition) - data.SetText(dataStr) + if srcRow == -1: + return + if srcRow in self.blanks: + return + try: + mod = self.mods[srcRow] + except IndexError: + return + if not isinstance(self.mods[srcRow], Module): + return + if mod.isEmpty: + return + fit = Fit.getInstance().getFit(self.activeFitID) + if mod not in fit.modules: + return - dropSource = wx.DropSource(self) - dropSource.SetData(data) - DragDropHelper.data = dataStr - dropSource.DoDragDrop() + row = self.GetFirstSelected() + while row != -1: + self.Select(row, False) + row = self.GetNextSelected(row) + self.Select(srcRow, True) + + data = wx.TextDataObject() + dataStr = "fitting:" + str(fit.modules.index(mod)) + data.SetText(dataStr) + + dropSource = wx.DropSource(self) + dropSource.SetData(data) + DragDropHelper.data = dataStr + dropSource.DoDragDrop() def getSelectedMods(self): sel = []