Finally fix difficulty menu display behaviour
parent
7ea8eab07b
commit
2948a38256
|
@ -74,12 +74,10 @@ class DifficultyDisplayer(QGraphicsWidget):
|
||||||
self.setSizePolicy(self.size_policy)
|
self.setSizePolicy(self.size_policy)
|
||||||
|
|
||||||
self.setAcceptedMouseButtons(Qt.LeftButton)
|
self.setAcceptedMouseButtons(Qt.LeftButton)
|
||||||
self.setFocusPolicy(Qt.ClickFocus)
|
|
||||||
|
|
||||||
self.setFlag(QGraphicsItem.ItemIsFocusable, True)
|
|
||||||
|
|
||||||
self.diff_menu.menuClicked.connect(self.selected_difficulty)
|
self.diff_menu.menuClicked.connect(self.selected_difficulty)
|
||||||
self.diff_menu.menuClicked.connect(self.difficultySelected.emit)
|
self.diff_menu.menuClicked.connect(self.difficultySelected.emit)
|
||||||
|
self.diff_menu.loseFocus.connect(self.notFocus.emit)
|
||||||
|
|
||||||
|
|
||||||
def paint(self, painter, style, widget=None):
|
def paint(self, painter, style, widget=None):
|
||||||
|
@ -89,9 +87,8 @@ class DifficultyDisplayer(QGraphicsWidget):
|
||||||
painter.drawRect(self.boundingRect())
|
painter.drawRect(self.boundingRect())
|
||||||
|
|
||||||
def mousePressEvent(self, event):
|
def mousePressEvent(self, event):
|
||||||
print('Beep')
|
|
||||||
if not self.diff_menu.isVisible():
|
if not self.diff_menu.isVisible():
|
||||||
self.setFocus()
|
self.diff_menu.setFocus()
|
||||||
self.diff_menu.setVisible(True)
|
self.diff_menu.setVisible(True)
|
||||||
else:
|
else:
|
||||||
self.diff_menu.setVisible(False)
|
self.diff_menu.setVisible(False)
|
||||||
|
@ -106,11 +103,6 @@ class DifficultyDisplayer(QGraphicsWidget):
|
||||||
self.text = string
|
self.text = string
|
||||||
self.update()
|
self.update()
|
||||||
|
|
||||||
def focusOutEvent(self, event):
|
|
||||||
print('Menu lose focus')
|
|
||||||
self.notFocus.emit()
|
|
||||||
#self.diff_menu.setVisible(False)
|
|
||||||
|
|
||||||
def boundingRect(self):
|
def boundingRect(self):
|
||||||
return QRectF(0, 0, self.width, self.height)
|
return QRectF(0, 0, self.width, self.height)
|
||||||
|
|
||||||
|
@ -118,9 +110,11 @@ class DifficultyDisplayer(QGraphicsWidget):
|
||||||
class DifficultyMenu(QGraphicsWidget):
|
class DifficultyMenu(QGraphicsWidget):
|
||||||
|
|
||||||
menuClicked = pyqtSignal(str)
|
menuClicked = pyqtSignal(str)
|
||||||
|
loseFocus = pyqtSignal()
|
||||||
|
|
||||||
def __init__(self, width, height, parent=None):
|
def __init__(self, width, height, parent=None):
|
||||||
super().__init__(parent=parent)
|
super().__init__(parent=parent)
|
||||||
|
self.setParent(parent)
|
||||||
|
|
||||||
self.diff_buttons = []
|
self.diff_buttons = []
|
||||||
self.btn_height = height
|
self.btn_height = height
|
||||||
|
@ -134,8 +128,18 @@ class DifficultyMenu(QGraphicsWidget):
|
||||||
btn.buttonClicked.connect(self.clicked_on)
|
btn.buttonClicked.connect(self.clicked_on)
|
||||||
self.diff_buttons.append(btn)
|
self.diff_buttons.append(btn)
|
||||||
|
|
||||||
|
self.setFlag(QGraphicsItem.ItemIsFocusable, True)
|
||||||
|
self.setFocusPolicy(Qt.ClickFocus)
|
||||||
|
|
||||||
|
|
||||||
def boundingRect(self):
|
def boundingRect(self):
|
||||||
return QRectF(0, 0, self.width, self.height)
|
return QRectF(0, 0, self.width, self.height)
|
||||||
|
|
||||||
def clicked_on(self, string):
|
def clicked_on(self, string):
|
||||||
|
print('click!!')
|
||||||
self.menuClicked.emit(string)
|
self.menuClicked.emit(string)
|
||||||
|
|
||||||
|
def focusOutEvent(self, event):
|
||||||
|
if not any(btn.isUnderMouse() for btn in self.diff_buttons) and not self.parent().isUnderMouse():
|
||||||
|
self.loseFocus.emit()
|
||||||
|
self.setVisible(False)
|
||||||
|
|
Loading…
Reference in New Issue