]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/wx/lib/buttonpanel.py
Merge recent wxPython changes from 2.8 branch to HEAD
[wxWidgets.git] / wxPython / wx / lib / buttonpanel.py
index a31eb087186f79df04f2066da25809049e0dbaa5..d47b9c948248cfc4860785e53f27ab60ea88f279 100644 (file)
@@ -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
@@ -974,8 +974,11 @@ class ButtonInfo(Control):
         self._shortHelp = shortHelp
         self._longHelp = longHelp
 
-        disabledbmp = GrayOut(bmp)
-
+        if bmp:
+            disabledbmp = GrayOut(bmp)
+        else:
+            disabledbmp = wx.NullBitmap
+            
         self._bitmaps = {"Normal": bmp, "Toggled": None, "Disabled": disabledbmp,
                          "Hover": None, "Pressed": None}        
 
@@ -1584,7 +1587,7 @@ class ButtonPanel(wx.PyPanel):
 
     def OnPaint(self, event):
         """ Handles the wx.EVT_PAINT event for ButtonPanel. """
-        
+
         dc = wx.BufferedPaintDC(self) 
         rect = self.GetClientRect()
 
@@ -1744,7 +1747,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())
 
@@ -1765,7 +1768,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")
 
@@ -1808,21 +1812,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():