X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/61b3549028093e724f118dfccdd266f6dcb04dc5..75d9e502238df95fa53c0030b1fac0d4f43e4025:/wxPython/wx/lib/buttonpanel.py?ds=inline diff --git a/wxPython/wx/lib/buttonpanel.py b/wxPython/wx/lib/buttonpanel.py index 05d9b3be58..703474a94b 100644 --- a/wxPython/wx/lib/buttonpanel.py +++ b/wxPython/wx/lib/buttonpanel.py @@ -620,7 +620,7 @@ class BPArt: if isVertical: dc.DrawLine(rect.x, coord, rect.x + rect.width, coord) else: - dc.DrawLine(coord, rect.y, coord, rect.y + rect.width) + dc.DrawLine(coord, rect.y, coord, rect.y + rect.height) rf += rstep gf += gstep @@ -1113,7 +1113,7 @@ class ButtonInfo(Control): if alignment == self._textAlignment: return - self._alignment = alignment + self._textAlignment = alignment def GetToggled(self): @@ -1256,6 +1256,7 @@ class ButtonPanel(wx.PyPanel): self._useHelp = True self._freezeCount = 0 self._currentButton = -1 + self._haveTip = False self._art = BPArt(style) @@ -1583,7 +1584,7 @@ class ButtonPanel(wx.PyPanel): def OnPaint(self, event): """ Handles the wx.EVT_PAINT event for ButtonPanel. """ - + dc = wx.BufferedPaintDC(self) rect = self.GetClientRect() @@ -1743,7 +1744,7 @@ class ButtonPanel(wx.PyPanel): def OnMouseMove(self, event): """ Handles the wx.EVT_MOTION event for ButtonPanel. """ - + # Check to see if we are hovering a button tabId, flags = self.HitTest(event.GetPosition()) @@ -1764,7 +1765,8 @@ class ButtonPanel(wx.PyPanel): self.RepaintOldSelection() if btn.GetRect().Contains(event.GetPosition()): - btn.SetStatus("Hover") + if btn.GetStatus() != "Pressed": + btn.SetStatus("Hover") else: btn.SetStatus("Normal") @@ -1807,21 +1809,21 @@ class ButtonPanel(wx.PyPanel): btn.SetFocus(False) if hit.GetStatus() == "Pressed": - # Fire a button click event - btnEvent = wx.CommandEvent(wx.wxEVT_COMMAND_BUTTON_CLICKED, hit.GetId()) - self.GetEventHandler().ProcessEvent(btnEvent) - hit.SetToggled(not hit.GetToggled()) # Update the button status to be hovered hit.SetStatus("Hover") hit.SetFocus() self._currentButton = tabId + + # Fire a button click event + btnEvent = wx.CommandEvent(wx.wxEVT_COMMAND_BUTTON_CLICKED, hit.GetId()) + self.GetEventHandler().ProcessEvent(btnEvent) def OnMouseLeave(self, event): """ Handles the wx.EVT_LEAVE_WINDOW event for ButtonPanel. """ - + # Reset all buttons statuses for btn in self._vButtons: if not btn.IsEnabled(): @@ -1857,10 +1859,11 @@ class ButtonPanel(wx.PyPanel): if not self.GetUseHelp(): return - + shortHelp = hit.GetShortHelp() if shortHelp: self.SetToolTipString(shortHelp) + self._haveTip = True longHelp = hit.GetLongHelp() if not longHelp: @@ -1886,7 +1889,9 @@ class ButtonPanel(wx.PyPanel): if not self.GetUseHelp(): return - self.SetToolTipString("") + if self._haveTip: + self.SetToolTipString("") + self._haveTip = False if self._statusTimer and self._statusTimer.IsRunning(): topLevel = wx.GetTopLevelParent(self)