]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/datectlg.cpp
Don't always maximize top-level windows on Smartphone
[wxWidgets.git] / src / generic / datectlg.cpp
index 6fcc0b63ebe5f6cbce3013a93ac84a5f431d462e..90258753aef87de659aa3ddb21e97a0989406a69 100644 (file)
@@ -78,9 +78,9 @@ enum
     #define TXTCTRL_FLAGS     wxNO_BORDER
     #define BTN_FLAGS         wxNO_BORDER
     #define CALBORDER         0
-    #define RIGHTBUTTONBORDER 3
+    #define RIGHTBUTTONBORDER 4
     #define TOPBUTTONBORDER   0
-    #define BUTTONBORDER      3
+    #define BUTTONBORDER      4
     #define TXTPOSY           1
 #else
     #define TXTCTRL_FLAGS     0
@@ -155,10 +155,6 @@ bool wxDropdownButton::Create(wxWindow *parent,
                                  pos, wxDefaultSize, BTN_FLAGS, validator) )
         return false;
 
-#if (BTNFLAGS & wxBU_AUTODRAW ) == 0
-    m_windowStyle |= wxBU_AUTODRAW;
-#endif
-
     const wxSize sz = GetSize();
     int w = chkBmp.GetWidth(),
         h = chkBmp.GetHeight();
@@ -188,16 +184,47 @@ void wxDropdownButton::DoMoveWindow(int x, int y, int w, int h)
         if (h < 0)
             h = GetSize().y;
 
-        int bw = w - m_marginX - m_borderX;
-        int bh = h - m_marginY - m_borderY;
+        int borderX = m_marginX + m_borderX; 
+        int borderY = m_marginY + m_borderY;
+        int bw = w - borderX;
+        int bh = h - borderY;
         if (bh < 11) bh=11;
         if (bw < 9)  bw=9;
 
         wxBitmap bmp(bw, bh);
         dc.SelectObject(bmp);
 
-        wxRendererNative::Get().DrawComboBoxDropButton(this, dc, wxRect(0,0,bw, bh));
+        wxRendererNative& renderer = wxRendererNative::Get();
+
+#ifdef __WXGTK__
+        wxRect r(-(borderX/2),-(borderY/2),w,h);
+        wxColour magic(255,0,255);
+        dc.SetBrush( wxBrush( magic ) );
+        dc.SetPen( *wxTRANSPARENT_PEN );
+        dc.DrawRectangle(0,0,bw,bh);
+        renderer.DrawDropArrow(this, dc, r);
+        wxMask *mask = new wxMask( bmp, magic );
+        bmp.SetMask( mask );
+#else
+        wxRect r(0,0,bw,bh);
+        renderer.DrawComboBoxDropButton(this, dc, r);
+#endif
         SetBitmapLabel(bmp);
+
+        wxBitmap bmpSel(bw, bh);
+        dc.SelectObject(bmpSel);
+
+#ifdef __WXGTK__
+        dc.SetBrush( wxBrush( magic ) );
+        dc.SetPen( *wxTRANSPARENT_PEN );
+        dc.DrawRectangle(0,0,bw,bh);
+        renderer.DrawDropArrow(this, dc, r, wxCONTROL_PRESSED);
+        mask = new wxMask( bmpSel, magic );
+        bmpSel.SetMask( mask );
+#else
+        renderer.DrawComboBoxDropButton(this, dc, r, wxCONTROL_PRESSED);
+#endif
+        SetBitmapSelected(bmpSel);
     }
 
     wxBitmapButton::DoMoveWindow(x, y, w, h);
@@ -341,7 +368,7 @@ bool wxDatePickerCtrlGeneric::Create(wxWindow *parent,
             wxFocusEventHandler(wxDatePickerCtrlGeneric::OnSetFocus));
 
     wxClientDC dc(yearControl);
-    dc.SetFont(m_font);
+    dc.SetFont(yearControl->GetFont());
     wxCoord width, dummy;
     dc.GetTextExtent(wxT("2000"), &width, &dummy);
     width += ConvertDialogToPixels(wxSize(20, 0)).x;
@@ -468,8 +495,8 @@ bool wxDatePickerCtrlGeneric::Enable(bool enable)
 
     if ( !enable )
     {
-        if ( m_cal )
-            m_cal->Hide();
+        if ( m_popup )
+            m_popup->Hide();
     }
 
     if ( m_btn )
@@ -543,10 +570,11 @@ bool wxDatePickerCtrlGeneric::SetFormat(const wxChar *fmt)
                 allowedChars.Add(wxString(*p++, 1));
         }
 
+#if wxUSE_VALIDATORS
         wxTextValidator tv(wxFILTER_INCLUDE_CHAR_LIST);
         tv.SetIncludes(allowedChars);
-
         m_txt->SetValidator(tv);
+#endif
 
         if (m_currentDate.IsValid())
             m_txt->SetValue(m_currentDate.Format(m_format));