]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/button.cpp
*** empty log message ***
[wxWidgets.git] / src / msw / button.cpp
index fbfef488f8053e27b7fc3ff0ab355dceb3fb0e6c..849eef8dbd92429553446406c131b46d65b32dce 100644 (file)
 IMPLEMENT_DYNAMIC_CLASS(wxButton, wxControl)
 #endif
 
-#define BUTTON_HEIGHT_FACTOR (EDIT_CONTROL_FACTOR * 1.1)
+#define BUTTON_HEIGHT_FROM_CHAR_HEIGHT(cy) (11*EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy)/10)
 
 // Buttons
 
-bool wxButton::MSWCommand(const WXUINT param, const WXWORD id)
+bool wxButton::MSWCommand(WXUINT param, WXWORD id)
 {
-  if (param == BN_CLICKED)
+  if (param == BN_CLICKED || (param == 1)) // 1 for accelerator
   {
     wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, id);
     event.SetEventObject(this);
@@ -46,9 +46,9 @@ bool wxButton::MSWCommand(const WXUINT param, const WXWORD id)
   else return FALSE;
 }
 
-bool wxButton::Create(wxWindow *parent, const wxWindowID id, const wxString& label,
+bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label,
            const wxPoint& pos,
-           const wxSize& size, const long style,
+           const wxSize& size, long style,
            const wxValidator& validator,
            const wxString& name)
 {
@@ -95,7 +95,7 @@ bool wxButton::Create(wxWindow *parent, const wxWindowID id, const wxString& lab
   return TRUE;
 }
 
-void wxButton::SetSize(const int x, const int y, const int width, const int height, const int sizeFlags)
+void wxButton::SetSize(int x, int y, int width, int height, int sizeFlags)
 {
   int currentX, currentY;
   GetPosition(&currentX, &currentY);
@@ -106,13 +106,15 @@ void wxButton::SetSize(const int x, const int y, const int width, const int heig
   if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
     y1 = currentY;
 
+  AdjustForParentClientOrigin(x1, y1, sizeFlags);
+
   int actualWidth = width;
   int actualHeight = height;
   int ww, hh;
   GetSize(&ww, &hh);
 
-  float current_width;
-  float cyf;
+  int current_width;
+  int cyf;
   char buf[300];
   GetWindowText((HWND) GetHWND(), buf, 300);
   GetTextExtent(buf, &current_width, &cyf,NULL,NULL,GetFont());
@@ -133,23 +135,10 @@ void wxButton::SetSize(const int x, const int y, const int width, const int heig
     actualHeight = hh;
   else if (height == -1)
   {
-    actualHeight = (int)(cyf*BUTTON_HEIGHT_FACTOR) ;
+    actualHeight = BUTTON_HEIGHT_FROM_CHAR_HEIGHT(cyf);
   }
 
   MoveWindow((HWND) GetHWND(), x1, y1, actualWidth, actualHeight, TRUE);
-
-/*
-  if (!((width == -1) && (height == -1)))
-  {
-#if WXWIN_COMPATIBILITY
-    GetEventHandler()->OldOnSize(width, height);
-#else
-    wxSizeEvent event(wxSize(width, height), m_windowId);
-    event.eventObject = this;
-    GetEventHandler()->ProcessEvent(event);
-#endif
-  }
-*/
 }
 
 void wxButton::SetDefault(void)
@@ -160,8 +149,10 @@ void wxButton::SetDefault(void)
 
   if (parent)
   {
-    SendMessage((HWND) parent->GetHWND(), DM_SETDEFID, m_windowId, 0L);
+    SendMessage((HWND)parent->GetHWND(), DM_SETDEFID, m_windowId, 0L);
   }
+
+  SendMessage((HWND)GetHWND(), BM_SETSTYLE, BS_DEFPUSHBUTTON, 1L);
 }
 
 wxString wxButton::GetLabel(void) const
@@ -175,7 +166,7 @@ void wxButton::SetLabel(const wxString& label)
   SetWindowText((HWND) GetHWND(), (const char *) label);
 }
 
-WXHBRUSH wxButton::OnCtlColor(const WXHDC pDC, const WXHWND pWnd, const WXUINT nCtlColor,
+WXHBRUSH wxButton::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor,
                        WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
 {
 /*