Skip to content

Commit 840d84c

Browse files
authored
Merge pull request #336 from krystofair/krystofair/enh/shift-extends-useriteraction
[ENH] UserInteraction can be extended by shift.
2 parents 005dc69 + ef53d8d commit 840d84c

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

orangecanvas/document/interactions.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ def __init__(self, document, parent=None, deleteOnEnd=True):
116116
self.deleteOnEnd = deleteOnEnd
117117

118118
self.cancelOnEsc = False
119+
self.extendedOnShift = False
119120

120121
self.__finished = False
121122
self.__canceled = False
@@ -1415,6 +1416,9 @@ def mouseReleaseEvent(self, event):
14151416
p1, p2 = map(self.arrow_item.mapFromScene, (p1, p2))
14161417
self.arrow_item.setLine(QLineF(p1, p2))
14171418

1419+
if event.modifiers() & Qt.ShiftModifier:
1420+
self.extendedOnShift = True
1421+
14181422
self.end()
14191423
return True
14201424
else:

orangecanvas/document/schemeedit.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1913,7 +1913,7 @@ def __toggleNewArrowAnnotation(self, checked):
19131913
handler = self.__scene.user_interaction_handler
19141914
if isinstance(handler, interactions.NewArrowAnnotation):
19151915
# Cancel the interaction and restore the state
1916-
handler.ended.disconnect(action.toggle)
1916+
handler.ended.disconnect(self.__toggleNewArrowAction)
19171917
handler.cancel(interactions.UserInteraction.UserCancelReason)
19181918
log.info("Canceled new arrow annotation")
19191919

@@ -1922,10 +1922,18 @@ def __toggleNewArrowAnnotation(self, checked):
19221922
checked_action = self.__arrowColorActionGroup.checkedAction()
19231923
handler.setColor(checked_action.data())
19241924

1925-
handler.ended.connect(action.toggle)
1925+
handler.ended.connect(self.__toggleNewArrowAction)
19261926

19271927
self._setUserInteractionHandler(handler)
19281928

1929+
def __toggleNewArrowAction(self):
1930+
handler = self.sender()
1931+
action = self.__newArrowAnnotationAction
1932+
action.toggle() # end current
1933+
if handler.extendedOnShift:
1934+
handler.extendedOnShift = False # clear shift flag
1935+
action.toggle() # start new
1936+
19291937
def __onFontSizeTriggered(self, action):
19301938
# type: (QAction) -> None
19311939
if not self.__newTextAnnotationAction.isChecked():

0 commit comments

Comments
 (0)