From 854a3e98d0bf7c106fa5f5747b09d4afae7334ac Mon Sep 17 00:00:00 2001 From: jules Date: Mon, 12 Jan 2015 12:33:54 +0000 Subject: [PATCH] Added a new soft-keyboard type TextInputTarget::decimalKeyboard. --- modules/juce_gui_basics/keyboard/juce_TextInputTarget.h | 1 + .../juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp | 8 +------- modules/juce_gui_basics/native/juce_android_Windowing.cpp | 1 + .../native/juce_ios_UIViewComponentPeer.mm | 8 +++++++- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/modules/juce_gui_basics/keyboard/juce_TextInputTarget.h b/modules/juce_gui_basics/keyboard/juce_TextInputTarget.h index 9770f5dc36..19a33b3db6 100644 --- a/modules/juce_gui_basics/keyboard/juce_TextInputTarget.h +++ b/modules/juce_gui_basics/keyboard/juce_TextInputTarget.h @@ -79,6 +79,7 @@ public: { textKeyboard = 0, numericKeyboard, + decimalKeyboard, urlKeyboard, emailAddressKeyboard, phoneNumberKeyboard diff --git a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp index b595d65418..6d307baf28 100644 --- a/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp +++ b/modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp @@ -1455,28 +1455,22 @@ Label* LookAndFeel_V2::createSliderTextBox (Slider& slider) Label* const l = new SliderLabelComp(); l->setJustificationType (Justification::centred); + l->setKeyboardType (TextInputTarget::decimalKeyboard); l->setColour (Label::textColourId, slider.findColour (Slider::textBoxTextColourId)); - l->setColour (Label::backgroundColourId, (slider.getSliderStyle() == Slider::LinearBar || slider.getSliderStyle() == Slider::LinearBarVertical) ? Colours::transparentBlack : slider.findColour (Slider::textBoxBackgroundColourId)); l->setColour (Label::outlineColourId, slider.findColour (Slider::textBoxOutlineColourId)); - l->setColour (TextEditor::textColourId, slider.findColour (Slider::textBoxTextColourId)); - l->setColour (TextEditor::backgroundColourId, slider.findColour (Slider::textBoxBackgroundColourId) .withAlpha ((slider.getSliderStyle() == Slider::LinearBar || slider.getSliderStyle() == Slider::LinearBarVertical) ? 0.7f : 1.0f)); - l->setColour (TextEditor::outlineColourId, slider.findColour (Slider::textBoxOutlineColourId)); - l->setColour (TextEditor::highlightColourId, slider.findColour (Slider::textBoxHighlightColourId)); - l->setKeyboardType (TextInputTarget::numericKeyboard); - return l; } diff --git a/modules/juce_gui_basics/native/juce_android_Windowing.cpp b/modules/juce_gui_basics/native/juce_android_Windowing.cpp index 763403f09d..6946c68eaf 100644 --- a/modules/juce_gui_basics/native/juce_android_Windowing.cpp +++ b/modules/juce_gui_basics/native/juce_android_Windowing.cpp @@ -385,6 +385,7 @@ public: { case TextInputTarget::textKeyboard: return "text"; case TextInputTarget::numericKeyboard: return "number"; + case TextInputTarget::decimalKeyboard: return "numberDecimal"; case TextInputTarget::urlKeyboard: return "textUri"; case TextInputTarget::emailAddressKeyboard: return "textEmailAddress"; case TextInputTarget::phoneNumberKeyboard: return "phone"; diff --git a/modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm b/modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm index b139ccffb4..722ebc6e9c 100644 --- a/modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm +++ b/modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm @@ -862,12 +862,18 @@ void UIViewComponentPeer::textInputRequired (Point, TextInputTarget&) { } +static bool isIOS4_1() noexcept +{ + return [[[UIDevice currentDevice] systemVersion] doubleValue] >= 4.1; +} + static UIKeyboardType getUIKeyboardType (TextInputTarget::VirtualKeyboardType type) noexcept { switch (type) { case TextInputTarget::textKeyboard: return UIKeyboardTypeAlphabet; - case TextInputTarget::numericKeyboard: return UIKeyboardTypeNumbersAndPunctuation; + case TextInputTarget::numericKeyboard: return isIOS4_1() ? UIKeyboardTypeNumberPad : UIKeyboardTypeNumbersAndPunctuation; + case TextInputTarget::decimalKeyboard: return isIOS4_1() ? UIKeyboardTypeDecimalPad : UIKeyboardTypeNumbersAndPunctuation; case TextInputTarget::urlKeyboard: return UIKeyboardTypeURL; case TextInputTarget::emailAddressKeyboard: return UIKeyboardTypeEmailAddress; case TextInputTarget::phoneNumberKeyboard: return UIKeyboardTypePhonePad;