From f7a9144dc0d0e5449b14b1333ac7f1fcc1673a76 Mon Sep 17 00:00:00 2001 From: David Fuhrmann Date: Tue, 30 Apr 2013 23:11:06 +0200 Subject: [PATCH] macosx: add custom numberformatter to goto time field to only allow digits and : This fixes wrong default formatting (with thousand separator) which subsequently failed to parse the value correctly. --- modules/gui/macosx/controls.m | 3 +++ modules/gui/macosx/misc.h | 17 +++++++++++++++++ modules/gui/macosx/misc.m | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+) diff --git a/modules/gui/macosx/controls.m b/modules/gui/macosx/controls.m index cab73ba172..1a1b4a0afc 100644 --- a/modules/gui/macosx/controls.m +++ b/modules/gui/macosx/controls.m @@ -37,6 +37,7 @@ #import "playlist.h" #import "MainMenu.h" #import "CoreInteraction.h" +#import "misc.h" #import #pragma mark - @@ -54,6 +55,8 @@ [o_specificTime_ok_btn setTitle: _NS("OK")]; [o_specificTime_sec_lbl setStringValue: _NS("sec.")]; [o_specificTime_goTo_lbl setStringValue: _NS("Jump to time")]; + + [o_specificTime_enter_fld setFormatter:[[[PositionFormatter alloc] init] autorelease]]; } - (void)dealloc diff --git a/modules/gui/macosx/misc.h b/modules/gui/macosx/misc.h index 6855c05615..4859611f84 100644 --- a/modules/gui/macosx/misc.h +++ b/modules/gui/macosx/misc.h @@ -189,3 +189,20 @@ @interface VLCThreePartDropView : VLCThreePartImageView @end + +/***************************************************************************** + * PositionFormatter interface + * + * Formats a text field to only accept decimals and : + *****************************************************************************/ +@interface PositionFormatter : NSFormatter +{ + NSCharacterSet *o_forbidden_characters; +} +- (NSString*)stringForObjectValue:(id)obj; + +- (BOOL)getObjectValue:(id*)obj forString:(NSString*)string errorDescription:(NSString**)error; + +- (bool)isPartialStringValid:(NSString*)partialString newEditingString:(NSString**)newString errorDescription:(NSString**)error; + +@end diff --git a/modules/gui/macosx/misc.m b/modules/gui/macosx/misc.m index 5fea88dd51..3a9bfde095 100644 --- a/modules/gui/macosx/misc.m +++ b/modules/gui/macosx/misc.m @@ -786,4 +786,39 @@ void _drawFrameInRect(NSRect frameRect) [self setNeedsDisplay:YES]; } +@end + +@implementation PositionFormatter + +- (id)init +{ + self = [super init]; + NSMutableCharacterSet *nonNumbers = [[[NSCharacterSet decimalDigitCharacterSet] invertedSet] mutableCopy]; + [nonNumbers removeCharactersInString:@":"]; + o_forbidden_characters = [nonNumbers copy]; + + return self; +} + +- (NSString*)stringForObjectValue:(id)obj +{ + return obj; +} + +- (BOOL)getObjectValue:(id*)obj forString:(NSString*)string errorDescription:(NSString**)error +{ + *obj = [[string copy] autorelease]; + return YES; +} + +- (bool)isPartialStringValid:(NSString*)partialString newEditingString:(NSString**)newString errorDescription:(NSString**)error +{ + if ([partialString rangeOfCharacterFromSet:o_forbidden_characters options:NSLiteralSearch].location != NSNotFound) { + return NO; + } else { + return YES; + } +} + + @end -- 2.39.2