diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-10-23 11:03:57 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-10-23 11:03:57 +0400 |
commit | fcb88306b4794e75114038cdc90026ffa3b375fc (patch) | |
tree | 51a640b598fdf1e7bf8ec415454d162fe8ebcc23 | |
parent | a0529a8ae82836f41dddc3b7de22b58e1dcc11b8 (diff) |
rna access to event.unicode so scripts can get unicode text input.
-rw-r--r-- | source/blender/makesrna/intern/rna_wm.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index 594b0abb93d..dc9f003ab1a 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -471,6 +471,36 @@ static int rna_Event_ascii_length(PointerRNA *ptr) return (event->ascii)? 1 : 0; } +static void rna_Event_unicode_get(PointerRNA *ptr, char *value) +{ + /* utf8 buf isnt \0 terminated */ + wmEvent *event= (wmEvent*)ptr->data; + size_t len= 0; + + if (event->utf8_buf[0]) { + BLI_str_utf8_as_unicode_and_size(event->utf8_buf, &len); + if (len > 0) { + memcpy(value, event->utf8_buf, len); + } + } + + value[len]= '\0'; +} + +static int rna_Event_unicode_length(PointerRNA *ptr) +{ + + wmEvent *event= (wmEvent*)ptr->data; + if (event->utf8_buf[0]) { + size_t len= 0; + BLI_str_utf8_as_unicode_and_size(event->utf8_buf, &len); + return (int)len; + } + else { + return 0; + } +} + static void rna_Window_screen_set(PointerRNA *ptr, PointerRNA value) { wmWindow *win= (wmWindow*)ptr->data; @@ -1358,6 +1388,11 @@ static void rna_def_event(BlenderRNA *brna) RNA_def_property_ui_text(prop, "ASCII", "Single ASCII character for this event"); + prop= RNA_def_property(srna, "unicode", PROP_STRING, PROP_NONE); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_string_funcs(prop, "rna_Event_unicode_get", "rna_Event_unicode_length", NULL); + RNA_def_property_ui_text(prop, "Unicode", "Single unicode character for this event"); + /* enums */ prop= RNA_def_property(srna, "value", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "val"); |