From de5af7cb44d72398d61394f992ee821db0bfc177 Mon Sep 17 00:00:00 2001 From: En Yi Date: Sat, 6 Jul 2019 18:48:15 +0800 Subject: [PATCH] Allow right-clicking for scribbling --- graphic_components/buttons.py | 6 ++++-- graphic_components/sudoku_graphics.py | 8 +++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/graphic_components/buttons.py b/graphic_components/buttons.py index 1d88a74..66056b0 100644 --- a/graphic_components/buttons.py +++ b/graphic_components/buttons.py @@ -64,6 +64,7 @@ class AnimBox(QGraphicsObject): self.line_order = [self.up, self.right, self.down, self.left] + self.accepted_buttons = Qt.LeftButton self.set_freeze(False) self.length = 0 @@ -85,7 +86,7 @@ class AnimBox(QGraphicsObject): self.setAcceptedMouseButtons(Qt.NoButton) self.setAcceptHoverEvents(False) else: - self.setAcceptedMouseButtons(Qt.LeftButton) + self.setAcceptedMouseButtons(self.accepted_buttons) self.setAcceptHoverEvents(True) def toggle_anim(self, toggling): @@ -216,6 +217,7 @@ class RingButton(AnimBox): super().__init__(x, y, width, height, parent=parent) self.text = text self.transparent = False + self.accepted_buttons = self.accepted_buttons | Qt.RightButton def set_transparent(self, state): """Make the button transparent @@ -252,7 +254,7 @@ class RingButton(AnimBox): """ event.accept() self.toggle_anim(False) - self.buttonClicked.emit(self.text) + self.buttonClicked.emit(self.text, event.button()) class MenuButton(AnimBox): diff --git a/graphic_components/sudoku_graphics.py b/graphic_components/sudoku_graphics.py index 715edd2..50fa6e4 100644 --- a/graphic_components/sudoku_graphics.py +++ b/graphic_components/sudoku_graphics.py @@ -465,7 +465,7 @@ class NumberRing(BaseSudokuItem): """ pass - def send_button_press(self, val): + def send_button_press(self, val, btn): """Emits the keyPressed signal if any of the buttons is pressed, and attempts to close the ring Parameters @@ -473,8 +473,10 @@ class NumberRing(BaseSudokuItem): val : str The digit to be emitted """ - self.keyPressed.emit(val, self.scribbling) - self.close_menu() + scribble = btn == 2 + self.keyPressed.emit(val, scribble) + if not scribble: + self.close_menu() def freeze_buttons(self, freeze): """Freezes the button