From 9bedba0bf3065617f3498d3ef8430f50b6b29edb Mon Sep 17 00:00:00 2001 From: John Roberts Date: Sat, 18 Jul 2015 15:15:51 +0200 Subject: [PATCH] Don't show wxDatePickerCtrl as being disabled when it isn't in wxOSX. Use setDrawsBackground: to fix the background colour and adjust the text colour whenever the control is enabled or disabled. See #16807. --- src/osx/cocoa/datetimectrl.mm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/osx/cocoa/datetimectrl.mm b/src/osx/cocoa/datetimectrl.mm index 4fc0d3eb47..da9a3834ce 100644 --- a/src/osx/cocoa/datetimectrl.mm +++ b/src/osx/cocoa/datetimectrl.mm @@ -128,6 +128,26 @@ public: } } + virtual void Enable(bool enable = true) + { + wxNSDatePicker* const nsdatePicker = View(); + + [nsdatePicker setEnabled: enable]; + + if ( enable ) + { + wxWindow* const wxpeer = GetWXPeer(); + if ( wxpeer ) + [nsdatePicker setTextColor: wxpeer->GetForegroundColour().OSXGetNSColor()]; + else + [nsdatePicker setTextColor: [NSColor controlTextColor]]; + } + else + { + [nsdatePicker setTextColor: [NSColor disabledControlTextColor]]; + } + } + private: wxNSDatePicker* View() const { @@ -170,6 +190,9 @@ wxDateTimeWidgetImpl::CreateDateTimePicker(wxDateTimePickerCtrl* wxpeer, [v setDatePickerStyle: NSTextFieldAndStepperDatePickerStyle]; + // Avoid a disabled looking transparent background for the text cells. + [v setDrawsBackground: YES]; + if ( dt.IsValid() ) { [v setDateValue: NSDateFromWX(dt)];