X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/964f23b70eb72fe6f35b6cfe0b5642408239b4d6..dde4740fe1dddbb2738a0afd054f493cb0dd67d1:/src/generic/datectlg.cpp?ds=sidebyside diff --git a/src/generic/datectlg.cpp b/src/generic/datectlg.cpp index 6fcc0b63eb..90258753ae 100644 --- a/src/generic/datectlg.cpp +++ b/src/generic/datectlg.cpp @@ -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));