Merge pull request #2140 from Dogild/DatePickerStepperValue

Fixed: CPDatePicker value is wrong when making a click on the stepper
This commit is contained in:
Antoine Mercadal committed 2014-06-24 17:29:26 -07:00
commit 57f6ee7f78
1 file changed
+19 -14
+19 -14
View File
@@ -133,10 +133,10 @@ var CPZeroKeyCode = 48,
return NO;
}
#pragma mark -
#pragma mark Setter Getter methods
/*! Set the value of the control
@param aDateValue
*/
@@ -145,6 +145,10 @@ var CPZeroKeyCode = 48,
var dateValue = [aDateValue copy];
[dateValue _dateWithTimeZone:[_datePicker timeZone]];
[_datePickerElementView setDateValue:dateValue];
// Be sure to update the stepper value. We don't use -setObjectValue to avoid a binding update.
if (_currentTextField)
_stepper._value = [_currentTextField intValue];
}
/*! Set the widget enabled or not
@@ -217,7 +221,7 @@ var CPZeroKeyCode = 48,
if ([_currentTextField dateType] != CPAMPMDateType)
{
// We update the value of the stepper dependind on the textField
[_stepper setObjectValue:parseInt([_currentTextField stringValue])];
[_stepper setObjectValue:[_currentTextField intValue]];
[_stepper setMaxValue:[_currentTextField maxNumber]];
[_stepper setMinValue:[_currentTextField minNumber]];
@@ -245,11 +249,11 @@ var CPZeroKeyCode = 48,
[self _selectTextField:_firstTextField];
[[self window] makeFirstResponder:_datePicker];
// This gonna update the dateValue with the binding
// Update the dateValue with the binding.
if (isUp)
[_stepper setDoubleValue:parseInt([_currentTextField objectValue]) + 1];
[_stepper setDoubleValue:[_currentTextField intValue] + 1];
else
[_stepper setDoubleValue:parseInt([_currentTextField objectValue]) - 1];
[_stepper setDoubleValue:[_currentTextField intValue] - 1];
return;
}
@@ -257,7 +261,7 @@ var CPZeroKeyCode = 48,
if ([_currentTextField dateType] != CPAMPMDateType)
{
// Make sure to get the good value, especially when we reach the maxDate or minDate
[sender setDoubleValue:parseInt([_currentTextField objectValue])];
[sender setDoubleValue:[_currentTextField intValue]];
}
else
{
@@ -284,7 +288,7 @@ var CPZeroKeyCode = 48,
if (key == CPUpArrowFunctionKey)
{
[_currentTextField _invalidTimer];
[_stepper setDoubleValue:parseInt([_currentTextField objectValue])];
[_stepper setDoubleValue:[_currentTextField intValue]];
[_stepper performClickUp:self];
return YES;
}
@@ -292,7 +296,7 @@ var CPZeroKeyCode = 48,
if (key == CPDownArrowFunctionKey)
{
[_currentTextField _invalidTimer];
[_stepper setDoubleValue:parseInt([_currentTextField objectValue])];
[_stepper setDoubleValue:[_currentTextField intValue]];
[_stepper performClickDown:self];
return YES;
}
@@ -593,23 +597,23 @@ var CPZeroKeyCode = 48,
[date _dateWithTimeZone:[_datePicker timeZone]];
if (![_textFieldDay isHidden])
date.setDate([_textFieldDay stringValue]);
date.setDate([_textFieldDay intValue]);
if (![_textFieldMonth isHidden])
date.setMonth(parseInt([_textFieldMonth stringValue]) - 1);
date.setMonth([_textFieldMonth intValue] - 1);
if (![_textFieldYear isHidden])
date.setFullYear([_textFieldYear stringValue]);
date.setFullYear([_textFieldYear intValue]);
if (![_textFieldSecond isHidden])
date.setSeconds([_textFieldSecond stringValue]);
date.setSeconds([_textFieldSecond intValue]);
if (![_textFieldMinute isHidden])
date.setMinutes([_textFieldMinute stringValue]);
date.setMinutes([_textFieldMinute intValue]);
if (![_textFieldHour isHidden])
{
var hour = parseInt([_textFieldHour stringValue]),
var hour = [_textFieldHour intValue],
currentHour = parseInt(date.getHours());
if (hour != currentHour)
@@ -1563,6 +1567,7 @@ var CPMonthDateType = 0,
[self setStringValue:dateValue.getSeconds().toString()];
return;
}
[super setObjectValue:objectValue];
break;