From 3cae6b0b8261eaa8b798d53bb29e0f547c7579a7 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. Closes #16807. (this is a backport of 9bedba0bf3065617f3498d3ef8430f50b6b29edb from master) --- docs/changes.txt | 1 + src/osx/cocoa/datetimectrl.mm | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index bbe75517be..d6a6dae76f 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -640,6 +640,7 @@ wxOSX: - Fix handling of "Cancel" button in wxSearchCtrl (John Roberts). - Generate correct events for WXK_NUMPAD_ENTER (John Roberts). - Fix handling of WXK_NUMPAD_ENTER in wxTextCtrl (John Roberts). +- Don't show wxDatePickerCtrl as being disabled when it isn't (John Roberts). - Generate wxEVT_TEXT_ENTER for wxTE_PASSWORD controls too (mj_smoker). - Send wxIconizeEvent when a window is iconized/restore (Rob Krakora). - Use correct colour for disabled wxStaticText (sbrowne). diff --git a/src/osx/cocoa/datetimectrl.mm b/src/osx/cocoa/datetimectrl.mm index 575a8a2b48..edee2965a4 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)];