Skip to content

Commit 16c67da

Browse files
authored
Support TextCapitalization (#344)
* Contribute #195 * Add a constant string for textCapitalization Signed-off-by: Boram Bae <[email protected]>
1 parent 1fe47b4 commit 16c67da

File tree

4 files changed

+31
-0
lines changed

4 files changed

+31
-0
lines changed

shell/platform/tizen/channels/text_input_channel.cc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ constexpr char kUpdateEditingStateMethod[] =
2424
"TextInputClient.updateEditingState";
2525
constexpr char kPerformActionMethod[] = "TextInputClient.performAction";
2626
constexpr char kSetPlatformViewClient[] = "TextInput.setPlatformViewClient";
27+
constexpr char kTextCapitalization[] = "textCapitalization";
2728
constexpr char kTextInputAction[] = "inputAction";
2829
constexpr char kTextInputType[] = "inputType";
2930
constexpr char kTextInputTypeName[] = "name";
@@ -168,6 +169,15 @@ void TextInputChannel::HandleMethodCall(
168169
input_action_ = input_action_iter->value.GetString();
169170
}
170171

172+
text_capitalization_ = "";
173+
auto text_capitalization_iter =
174+
client_config.FindMember(kTextCapitalization);
175+
if (text_capitalization_iter != client_config.MemberEnd() &&
176+
text_capitalization_iter->value.IsString()) {
177+
text_capitalization_ = text_capitalization_iter->value.GetString();
178+
input_method_context_->SetAutocapitalType(text_capitalization_);
179+
}
180+
171181
input_type_ = "";
172182
auto input_type_info_iter = client_config.FindMember(kTextInputType);
173183
if (input_type_info_iter != client_config.MemberEnd() &&

shell/platform/tizen/channels/text_input_channel.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ class TextInputChannel {
7575
// Keyboard type of the client. See available options:
7676
// https://api.flutter.dev/flutter/services/TextInputType-class.html
7777
std::string input_type_;
78+
79+
// Automatic text capitalization type. See available options:
80+
// https://api.flutter.dev/flutter/services/TextCapitalization.html
81+
std::string text_capitalization_ = "";
7882
};
7983

8084
} // namespace flutter

shell/platform/tizen/tizen_input_method_context.cc

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,21 @@ void TizenInputMethodContext::SetInputPanelLayoutVariation(bool is_signed,
256256
ecore_imf_context_input_panel_layout_variation_set(imf_context_, variation);
257257
}
258258

259+
void TizenInputMethodContext::SetAutocapitalType(const std::string& type) {
260+
Ecore_IMF_Autocapital_Type autocapital_type = ECORE_IMF_AUTOCAPITAL_TYPE_NONE;
261+
262+
if (type == "TextCapitalization.characters") {
263+
autocapital_type = ECORE_IMF_AUTOCAPITAL_TYPE_ALLCHARACTER;
264+
} else if (type == "TextCapitalization.words") {
265+
autocapital_type = ECORE_IMF_AUTOCAPITAL_TYPE_WORD;
266+
} else if (type == "TextCapitalization.sentences") {
267+
autocapital_type = ECORE_IMF_AUTOCAPITAL_TYPE_SENTENCE;
268+
} else if (type == "TextCapitalization.none") {
269+
autocapital_type = ECORE_IMF_AUTOCAPITAL_TYPE_NONE;
270+
}
271+
ecore_imf_context_autocapital_type_set(imf_context_, autocapital_type);
272+
}
273+
259274
void TizenInputMethodContext::RegisterEventCallbacks() {
260275
FT_ASSERT(imf_context_);
261276

shell/platform/tizen/tizen_input_method_context.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ class TizenInputMethodContext {
4949

5050
void SetInputPanelLayoutVariation(bool is_signed, bool is_decimal);
5151

52+
void SetAutocapitalType(const std::string& type);
53+
5254
void SetOnCommit(OnCommit callback) { on_commit_ = callback; }
5355

5456
void SetOnPreeditChanged(OnPreeditChanged callback) {

0 commit comments

Comments
 (0)