diff --git a/juce_amalgamated.cpp b/juce_amalgamated.cpp index 8ff868851e..3abe63b995 100644 --- a/juce_amalgamated.cpp +++ b/juce_amalgamated.cpp @@ -299,7 +299,7 @@ reduce code size. */ #ifndef JUCE_USE_CDREADER - #define JUCE_USE_CDREADER 1 + #define JUCE_USE_CDREADER 0 #endif /** JUCE_USE_CAMERA: Enables web-cam support using the CameraDevice class (Mac and Windows). @@ -265390,11 +265390,11 @@ END_JUCE_NAMESPACE #define JuceUIView MakeObjCClassName(JuceUIView) -@interface JuceUIView : UIView +@interface JuceUIView : UIView { @public UIViewComponentPeer* owner; - UITextField *hiddenTextField; + UITextView* hiddenTextView; } - (JuceUIView*) initWithOwner: (UIViewComponentPeer*) owner withFrame: (CGRect) frame; @@ -265413,9 +265413,7 @@ END_JUCE_NAMESPACE - (void) asyncRepaint: (id) rect; -- (BOOL) textField: (UITextField*) textField shouldChangeCharactersInRange: (NSRange) range replacementString: (NSString*) string; -- (BOOL) textFieldShouldClear: (UITextField*) textField; -- (BOOL) textFieldShouldReturn: (UITextField*) textField; +- (BOOL) textView: (UITextView*) textView shouldChangeTextInRange: (NSRange) range replacementText: (NSString*) text; @end #define JuceUIWindow MakeObjCClassName(JuceUIWindow) @@ -265480,9 +265478,7 @@ public: void grabFocus(); void textInputRequired (const Point& position); - virtual BOOL textFieldReplaceCharacters (const Range& range, const String& text); - virtual BOOL textFieldShouldClear(); - virtual BOOL textFieldShouldReturn(); + virtual BOOL textViewReplaceCharacters (const Range& range, const String& text); void updateHiddenTextContent (TextInputTarget* target); void globalFocusChanged (Component*); @@ -265517,20 +265513,20 @@ END_JUCE_NAMESPACE [super initWithFrame: frame]; owner = owner_; - hiddenTextField = [[UITextField alloc] initWithFrame: CGRectMake (0, 0, 0, 0)]; - [self addSubview: hiddenTextField]; - hiddenTextField.delegate = self; + hiddenTextView = [[UITextView alloc] initWithFrame: CGRectMake (0, 0, 0, 0)]; + [self addSubview: hiddenTextView]; + hiddenTextView.delegate = self; - hiddenTextField.autocapitalizationType = UITextAutocapitalizationTypeNone; - hiddenTextField.autocorrectionType = UITextAutocorrectionTypeNo; + hiddenTextView.autocapitalizationType = UITextAutocapitalizationTypeNone; + hiddenTextView.autocorrectionType = UITextAutocorrectionTypeNo; return self; } - (void) dealloc { - [hiddenTextField removeFromSuperview]; - [hiddenTextField release]; + [hiddenTextView removeFromSuperview]; + [hiddenTextView release]; [super dealloc]; } @@ -265613,20 +265609,10 @@ JUCE_NAMESPACE::Point juce_lastMousePos; [self setNeedsDisplayInRect: *r]; } -- (BOOL) textField: (UITextField*) textField shouldChangeCharactersInRange: (NSRange) range replacementString: (NSString*) text -{ - return owner->textFieldReplaceCharacters (Range (range.location, range.location + range.length), - nsStringToJuce (text)); -} - -- (BOOL) textFieldShouldClear: (UITextField*) textField +- (BOOL) textView: (UITextView*) textView shouldChangeTextInRange: (NSRange) range replacementText: (NSString*) text { - return owner->textFieldShouldClear(); -} - -- (BOOL) textFieldShouldReturn: (UITextField*) textField -{ - return owner->textFieldShouldReturn(); + return owner->textViewReplaceCharacters (Range (range.location, range.location + range.length), + nsStringToJuce (text)); } @end @@ -266061,10 +266047,11 @@ void UIViewComponentPeer::textInputRequired (const Point&) void UIViewComponentPeer::updateHiddenTextContent (TextInputTarget* target) { - view->hiddenTextField.text = juceStringToNS (target->getTextInRange (Range (0, target->getHighlightedRegion().getStart()))); + view->hiddenTextView.text = juceStringToNS (target->getTextInRange (Range (0, target->getHighlightedRegion().getStart()))); + view->hiddenTextView.selectedRange = NSMakeRange (target->getHighlightedRegion().getStart(), 0); } -BOOL UIViewComponentPeer::textFieldReplaceCharacters (const Range& range, const String& text) +BOOL UIViewComponentPeer::textViewReplaceCharacters (const Range& range, const String& text) { TextInputTarget* const target = findCurrentTextInputTarget(); @@ -266083,33 +266070,6 @@ BOOL UIViewComponentPeer::textFieldReplaceCharacters (const Range& range, c return NO; } -BOOL UIViewComponentPeer::textFieldShouldClear() -{ - TextInputTarget* const target = findCurrentTextInputTarget(); - - if (target != 0) - { - target->setHighlightedRegion (Range (0, std::numeric_limits::max())); - target->insertTextAtCaret (String::empty); - updateHiddenTextContent (target); - } - - return YES; -} - -BOOL UIViewComponentPeer::textFieldShouldReturn() -{ - TextInputTarget* const target = findCurrentTextInputTarget(); - - if (target != 0) - { - target->insertTextAtCaret ("\n"); - updateHiddenTextContent (target); - } - - return YES; -} - void UIViewComponentPeer::globalFocusChanged (Component*) { TextInputTarget* const target = findCurrentTextInputTarget(); @@ -266119,14 +266079,14 @@ void UIViewComponentPeer::globalFocusChanged (Component*) Component* comp = dynamic_cast (target); Point pos (comp->relativePositionToOtherComponent (component, Point())); - view->hiddenTextField.frame = CGRectMake (pos.getX(), pos.getY(), 0, 0); + view->hiddenTextView.frame = CGRectMake (pos.getX(), pos.getY(), 0, 0); updateHiddenTextContent (target); - [view->hiddenTextField becomeFirstResponder]; + [view->hiddenTextView becomeFirstResponder]; } else { - [view->hiddenTextField resignFirstResponder]; + [view->hiddenTextView resignFirstResponder]; } } diff --git a/juce_amalgamated.h b/juce_amalgamated.h index 79390bc73d..ed9a02967b 100644 --- a/juce_amalgamated.h +++ b/juce_amalgamated.h @@ -64,7 +64,7 @@ */ #define JUCE_MAJOR_VERSION 1 #define JUCE_MINOR_VERSION 52 -#define JUCE_BUILDNUMBER 45 +#define JUCE_BUILDNUMBER 46 /** Current Juce version number. @@ -338,7 +338,7 @@ reduce code size. */ #ifndef JUCE_USE_CDREADER - #define JUCE_USE_CDREADER 1 + #define JUCE_USE_CDREADER 0 #endif /** JUCE_USE_CAMERA: Enables web-cam support using the CameraDevice class (Mac and Windows). diff --git a/src/core/juce_StandardHeader.h b/src/core/juce_StandardHeader.h index 9ad4633f22..307d7cdd7c 100644 --- a/src/core/juce_StandardHeader.h +++ b/src/core/juce_StandardHeader.h @@ -33,7 +33,7 @@ */ #define JUCE_MAJOR_VERSION 1 #define JUCE_MINOR_VERSION 52 -#define JUCE_BUILDNUMBER 45 +#define JUCE_BUILDNUMBER 46 /** Current Juce version number. diff --git a/src/native/mac/juce_iphone_UIViewComponentPeer.mm b/src/native/mac/juce_iphone_UIViewComponentPeer.mm index 5ad396e9b4..55239f1df1 100644 --- a/src/native/mac/juce_iphone_UIViewComponentPeer.mm +++ b/src/native/mac/juce_iphone_UIViewComponentPeer.mm @@ -34,11 +34,11 @@ END_JUCE_NAMESPACE #define JuceUIView MakeObjCClassName(JuceUIView) -@interface JuceUIView : UIView +@interface JuceUIView : UIView { @public UIViewComponentPeer* owner; - UITextField *hiddenTextField; + UITextView* hiddenTextView; } - (JuceUIView*) initWithOwner: (UIViewComponentPeer*) owner withFrame: (CGRect) frame; @@ -57,9 +57,7 @@ END_JUCE_NAMESPACE - (void) asyncRepaint: (id) rect; -- (BOOL) textField: (UITextField*) textField shouldChangeCharactersInRange: (NSRange) range replacementString: (NSString*) string; -- (BOOL) textFieldShouldClear: (UITextField*) textField; -- (BOOL) textFieldShouldReturn: (UITextField*) textField; +- (BOOL) textView: (UITextView*) textView shouldChangeTextInRange: (NSRange) range replacementText: (NSString*) text; @end @@ -129,9 +127,7 @@ public: void grabFocus(); void textInputRequired (const Point& position); - virtual BOOL textFieldReplaceCharacters (const Range& range, const String& text); - virtual BOOL textFieldShouldClear(); - virtual BOOL textFieldShouldReturn(); + virtual BOOL textViewReplaceCharacters (const Range& range, const String& text); void updateHiddenTextContent (TextInputTarget* target); void globalFocusChanged (Component*); @@ -169,20 +165,20 @@ END_JUCE_NAMESPACE [super initWithFrame: frame]; owner = owner_; - hiddenTextField = [[UITextField alloc] initWithFrame: CGRectMake (0, 0, 0, 0)]; - [self addSubview: hiddenTextField]; - hiddenTextField.delegate = self; + hiddenTextView = [[UITextView alloc] initWithFrame: CGRectMake (0, 0, 0, 0)]; + [self addSubview: hiddenTextView]; + hiddenTextView.delegate = self; - hiddenTextField.autocapitalizationType = UITextAutocapitalizationTypeNone; - hiddenTextField.autocorrectionType = UITextAutocorrectionTypeNo; + hiddenTextView.autocapitalizationType = UITextAutocapitalizationTypeNone; + hiddenTextView.autocorrectionType = UITextAutocorrectionTypeNo; return self; } - (void) dealloc { - [hiddenTextField removeFromSuperview]; - [hiddenTextField release]; + [hiddenTextView removeFromSuperview]; + [hiddenTextView release]; [super dealloc]; } @@ -269,20 +265,10 @@ JUCE_NAMESPACE::Point juce_lastMousePos; [self setNeedsDisplayInRect: *r]; } -- (BOOL) textField: (UITextField*) textField shouldChangeCharactersInRange: (NSRange) range replacementString: (NSString*) text +- (BOOL) textView: (UITextView*) textView shouldChangeTextInRange: (NSRange) range replacementText: (NSString*) text { - return owner->textFieldReplaceCharacters (Range (range.location, range.location + range.length), - nsStringToJuce (text)); -} - -- (BOOL) textFieldShouldClear: (UITextField*) textField -{ - return owner->textFieldShouldClear(); -} - -- (BOOL) textFieldShouldReturn: (UITextField*) textField -{ - return owner->textFieldShouldReturn(); + return owner->textViewReplaceCharacters (Range (range.location, range.location + range.length), + nsStringToJuce (text)); } @end @@ -724,10 +710,11 @@ void UIViewComponentPeer::textInputRequired (const Point&) void UIViewComponentPeer::updateHiddenTextContent (TextInputTarget* target) { - view->hiddenTextField.text = juceStringToNS (target->getTextInRange (Range (0, target->getHighlightedRegion().getStart()))); + view->hiddenTextView.text = juceStringToNS (target->getTextInRange (Range (0, target->getHighlightedRegion().getStart()))); + view->hiddenTextView.selectedRange = NSMakeRange (target->getHighlightedRegion().getStart(), 0); } -BOOL UIViewComponentPeer::textFieldReplaceCharacters (const Range& range, const String& text) +BOOL UIViewComponentPeer::textViewReplaceCharacters (const Range& range, const String& text) { TextInputTarget* const target = findCurrentTextInputTarget(); @@ -746,33 +733,6 @@ BOOL UIViewComponentPeer::textFieldReplaceCharacters (const Range& range, c return NO; } -BOOL UIViewComponentPeer::textFieldShouldClear() -{ - TextInputTarget* const target = findCurrentTextInputTarget(); - - if (target != 0) - { - target->setHighlightedRegion (Range (0, std::numeric_limits::max())); - target->insertTextAtCaret (String::empty); - updateHiddenTextContent (target); - } - - return YES; -} - -BOOL UIViewComponentPeer::textFieldShouldReturn() -{ - TextInputTarget* const target = findCurrentTextInputTarget(); - - if (target != 0) - { - target->insertTextAtCaret ("\n"); - updateHiddenTextContent (target); - } - - return YES; -} - void UIViewComponentPeer::globalFocusChanged (Component*) { TextInputTarget* const target = findCurrentTextInputTarget(); @@ -782,14 +742,14 @@ void UIViewComponentPeer::globalFocusChanged (Component*) Component* comp = dynamic_cast (target); Point pos (comp->relativePositionToOtherComponent (component, Point())); - view->hiddenTextField.frame = CGRectMake (pos.getX(), pos.getY(), 0, 0); + view->hiddenTextView.frame = CGRectMake (pos.getX(), pos.getY(), 0, 0); updateHiddenTextContent (target); - [view->hiddenTextField becomeFirstResponder]; + [view->hiddenTextView becomeFirstResponder]; } else { - [view->hiddenTextField resignFirstResponder]; + [view->hiddenTextView resignFirstResponder]; } }