aboutsummaryrefslogtreecommitdiffstats
path: root/Lib/defconQt/fontView.py
diff options
context:
space:
mode:
authorAdrien Tétar2015-06-12 22:20:49 +0200
committerAdrien Tétar2015-06-12 22:20:49 +0200
commit9faef52dee40d3f39e7e85c9ca1db97022ffb066 (patch)
treea4590f1b1df48db8b6539b34435eb3b13b53c62e /Lib/defconQt/fontView.py
parentcd296f4613191f474a700e8330ec29c2a0917189 (diff)
downloadtrufont-9faef52dee40d3f39e7e85c9ca1db97022ffb066.tar.bz2
Shufflings, more correctness for selection code (but needs refactoring b/w press/release), more glyphView functionality
Diffstat (limited to 'Lib/defconQt/fontView.py')
-rw-r--r--Lib/defconQt/fontView.py43
1 files changed, 25 insertions, 18 deletions
diff --git a/Lib/defconQt/fontView.py b/Lib/defconQt/fontView.py
index d35c0ab..b15ba66 100644
--- a/Lib/defconQt/fontView.py
+++ b/Lib/defconQt/fontView.py
@@ -243,18 +243,20 @@ class CharacterWidget(QWidget):
key = (event.y() // self.squareSize) * self.columns + event.x() // self.squareSize
if key > len(self.glyphs)-1: return
modifiers = event.modifiers()
- if modifiers & Qt.ShiftModifier and len(self._selection)==1:
+ if modifiers & Qt.ShiftModifier and len(self._selection) == 1:
self.lastKey = self._selection.pop()
self.moveKey = key
- elif key in self._selection:
+ elif modifiers & Qt.ControlModifier:
+ self.lastKey = key
+ self.moveKey = self.lastKey
+ elif key in self._selection and not modifiers & Qt.ShiftModifier:
self._maybeDragPosition = event.pos()
event.accept()
return
else:
+ self._selection = set()
self.lastKey = key
self.moveKey = self.lastKey
- if not modifiers & Qt.ControlModifier:
- self._selection = set()
self.computeCharacterSelected()
event.accept()
@@ -268,14 +270,14 @@ class CharacterWidget(QWidget):
if ((event.pos() - self._maybeDragPosition).manhattanLength() \
< QApplication.startDragDistance()): return
# TODO: needs ordering or not?
- # TODO: see about dropping join tuples
- glyphList = " ".join((self.glyphs[key].name for key in self._selection))
+ glyphList = " ".join(self.glyphs[key].name for key in self._selection)
drag = QDrag(self)
mimeData = QMimeData()
mimeData.setData("text/plain", glyphList)
drag.setMimeData(mimeData)
dropAction = drag.exec_()
+ self._maybeDragPosition = None
event.accept()
return
key = (event.y() // self.squareSize) * self.columns + min(event.x() // self.squareSize, self.columns-1)
@@ -291,20 +293,25 @@ class CharacterWidget(QWidget):
def mouseReleaseEvent(self, event):
if event.button() == Qt.LeftButton:
self._maybeDragPosition = None
- lastKey = self.lastKey if self.lastKey < len(self.glyphs) else len(self.glyphs)-1
- moveKey = self.moveKey if self.moveKey < len(self.glyphs) else len(self.glyphs)-1
- if event.modifiers() & Qt.ControlModifier:
- if moveKey > lastKey:
- self._selection ^= set(range(lastKey, moveKey+1))
- else:
- self._selection ^= set(range(moveKey, lastKey+1))
+ if self.lastKey == -1:
+ if self._maybeDragPosition is None:
+ self._selection = {(event.y() // self.squareSize) * self.columns + event.x() // self.squareSize}
+ self.computeCharacterSelected()
else:
- if moveKey > lastKey:
- self._selection = set(range(lastKey, moveKey+1))
+ lastKey = self.lastKey if self.lastKey < len(self.glyphs) else len(self.glyphs)-1
+ moveKey = self.moveKey if self.moveKey < len(self.glyphs) else len(self.glyphs)-1
+ if event.modifiers() & Qt.ControlModifier:
+ if moveKey > lastKey:
+ self._selection ^= set(range(lastKey, moveKey+1))
+ else:
+ self._selection ^= set(range(moveKey, lastKey+1))
else:
- self._selection = set(range(moveKey, lastKey+1))
- self.lastKey = -1
- self.moveKey = -1
+ if moveKey > lastKey:
+ self._selection = set(range(lastKey, moveKey+1))
+ else:
+ self._selection = set(range(moveKey, lastKey+1))
+ self.lastKey = -1
+ self.moveKey = -1
event.accept()
self.update()
else: