]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/button.cpp
added WM_SYSCHAR processing
[wxWidgets.git] / src / msw / button.cpp
index 5c30bf807b52df929c0bfecac15f0bb834326850..86f833762c9e4a77ecac30d891699d595b399567 100644 (file)
@@ -95,19 +95,6 @@ bool wxButton::Create(wxWindow *parent,
 
     SetSize(pos.x, pos.y, size.x, size.y);
 
-    // bad hack added by Robert to make buttons at least
-    // 80 pixels wide. There are probably better ways...
-    // TODO. FIXME.
-    wxSize nsize( GetSize() );
-    if ((nsize.x < 80) || (nsize.y < 23))
-    {
-        if ((size.x == -1) && (nsize.x < 80))
-            nsize.x = 80;
-        if ((size.y == -1) && (nsize.y < 23))
-            nsize.y = 23;
-        SetSize( nsize );
-    }
-
     return TRUE;
 }
 
@@ -143,7 +130,11 @@ wxSize wxButton::DoGetBestSize() const
     // the button height is proportional to the height of the font used
     int hBtn = BUTTON_HEIGHT_FROM_CHAR_HEIGHT(hChar);
 
-    return wxSize(wBtn, hBtn);
+    wxSize sz = GetDefaultSize();
+    if (wBtn > sz.x) sz.x = wBtn;
+    if (hBtn > sz.y) sz.y = hBtn;
+
+    return sz;
 }
 
 /* static */
@@ -305,7 +296,7 @@ static void DrawRect(HDC hdc, const RECT& r)
 void wxButton::MakeOwnerDrawn()
 {
     long style = GetWindowLong(GetHwnd(), GWL_STYLE);
-    if ( !(style & BS_OWNERDRAW) )
+    if ( (style & BS_OWNERDRAW) != BS_OWNERDRAW )
     {
         // make it so
         style |= BS_OWNERDRAW;
@@ -475,6 +466,12 @@ bool wxButton::MSWOnDraw(WXDRAWITEMSTRUCT *wxdis)
         DrawFocusRect(hdc, &rectFocus);
     }
 
+    if ( pushed )
+    {
+        // the label is shifted by 1 pixel to create "pushed" effect
+        OffsetRect(&rectBtn, 1, 1);
+    }
+
     DrawButtonText(hdc, &rectBtn, GetLabel(),
                    state & ODS_DISABLED ? GetSysColor(COLOR_GRAYTEXT)
                                         : colFg);