Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2011-10-25 00:19:04 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2011-10-25 00:19:04 +0400
commit55ab66b45582f4973a0ba13b2573c8d5f6990652 (patch)
tree86c24f0f6c0d8dd654f9c3532b9a20391177943f /source/blender/makesrna
parentf673fc92930836a4df2a3f3552e3a106ea966a02 (diff)
parentf1cea89d99f0c80bdccd2ba1359142b5ff14cdb9 (diff)
Cycles: svn merge -r41205:41225 ^/trunk/blender
Diffstat (limited to 'source/blender/makesrna')
-rw-r--r--source/blender/makesrna/intern/rna_wm.c37
1 files changed, 35 insertions, 2 deletions
diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c
index 676fe1e092d..942c0d39c37 100644
--- a/source/blender/makesrna/intern/rna_wm.c
+++ b/source/blender/makesrna/intern/rna_wm.c
@@ -460,17 +460,45 @@ static PointerRNA rna_OperatorMacro_properties_get(PointerRNA *ptr)
static void rna_Event_ascii_get(PointerRNA *ptr, char *value)
{
- wmEvent *event= (wmEvent*)ptr->id.data;
+ wmEvent *event= (wmEvent*)ptr->data;
value[0]= event->ascii;
value[1]= '\0';
}
static int rna_Event_ascii_length(PointerRNA *ptr)
{
- wmEvent *event= (wmEvent*)ptr->id.data;
+ wmEvent *event= (wmEvent*)ptr->data;
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]) {
+ return BLI_str_utf8_size(event->utf8_buf); /* invalid value is checked on assignment so we dont need to account for this */
+ }
+ else {
+ return 0;
+ }
+}
+
static void rna_Window_screen_set(PointerRNA *ptr, PointerRNA value)
{
wmWindow *win= (wmWindow*)ptr->data;
@@ -1358,6 +1386,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");