diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/bin/edje/edje_cc_handlers.c | 32 | ||||
-rw-r--r-- | src/bin/edje/edje_convert.c | 1 | ||||
-rw-r--r-- | src/bin/edje/edje_convert.h | 1 | ||||
-rw-r--r-- | src/bin/edje/edje_data_convert.c | 1 | ||||
-rw-r--r-- | src/lib/edje/Edje_Edit.h | 19 | ||||
-rw-r--r-- | src/lib/edje/edje_callbacks.c | 42 | ||||
-rw-r--r-- | src/lib/edje/edje_convert.c | 1 | ||||
-rw-r--r-- | src/lib/edje/edje_convert.h | 1 | ||||
-rw-r--r-- | src/lib/edje/edje_data.c | 1 | ||||
-rw-r--r-- | src/lib/edje/edje_edit.c | 23 | ||||
-rw-r--r-- | src/lib/edje/edje_entry.c | 5 | ||||
-rw-r--r-- | src/lib/edje/edje_private.h | 1 |
12 files changed, 115 insertions, 13 deletions
diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c index f6458f867a..7834ffbbee 100644 --- a/src/bin/edje/edje_cc_handlers.c +++ b/src/bin/edje/edje_cc_handlers.c | |||
@@ -253,6 +253,7 @@ static void st_collections_group_parts_part_mouse_events(void); | |||
253 | static void st_collections_group_parts_part_anti_alias(void); | 253 | static void st_collections_group_parts_part_anti_alias(void); |
254 | static void st_collections_group_parts_part_repeat_events(void); | 254 | static void st_collections_group_parts_part_repeat_events(void); |
255 | static void st_collections_group_parts_part_ignore_flags(void); | 255 | static void st_collections_group_parts_part_ignore_flags(void); |
256 | static void st_collections_group_parts_part_mask_flags(void); | ||
256 | static void st_collections_group_parts_part_scale(void); | 257 | static void st_collections_group_parts_part_scale(void); |
257 | static void st_collections_group_parts_part_pointer_mode(void); | 258 | static void st_collections_group_parts_part_pointer_mode(void); |
258 | static void st_collections_group_parts_part_precise_is_inside(void); | 259 | static void st_collections_group_parts_part_precise_is_inside(void); |
@@ -691,6 +692,7 @@ New_Statement_Handler statement_handlers[] = | |||
691 | {"collections.group.parts.part.anti_alias", st_collections_group_parts_part_anti_alias}, | 692 | {"collections.group.parts.part.anti_alias", st_collections_group_parts_part_anti_alias}, |
692 | {"collections.group.parts.part.repeat_events", st_collections_group_parts_part_repeat_events}, | 693 | {"collections.group.parts.part.repeat_events", st_collections_group_parts_part_repeat_events}, |
693 | {"collections.group.parts.part.ignore_flags", st_collections_group_parts_part_ignore_flags}, | 694 | {"collections.group.parts.part.ignore_flags", st_collections_group_parts_part_ignore_flags}, |
695 | {"collections.group.parts.part.mask_flags", st_collections_group_parts_part_mask_flags}, | ||
694 | {"collections.group.parts.part.scale", st_collections_group_parts_part_scale}, | 696 | {"collections.group.parts.part.scale", st_collections_group_parts_part_scale}, |
695 | {"collections.group.parts.part.pointer_mode", st_collections_group_parts_part_pointer_mode}, | 697 | {"collections.group.parts.part.pointer_mode", st_collections_group_parts_part_pointer_mode}, |
696 | {"collections.group.parts.part.precise_is_inside", st_collections_group_parts_part_precise_is_inside}, | 698 | {"collections.group.parts.part.precise_is_inside", st_collections_group_parts_part_precise_is_inside}, |
@@ -983,6 +985,7 @@ New_Statement_Handler statement_handlers[] = | |||
983 | before -> insert_before | 985 | before -> insert_before |
984 | after -> insert_after | 986 | after -> insert_after |
985 | ignore -> ignore_flags | 987 | ignore -> ignore_flags |
988 | mask -> mask_flags | ||
986 | pointer -> pointer_mode | 989 | pointer -> pointer_mode |
987 | alt_font -> use_alternate_font_metrics | 990 | alt_font -> use_alternate_font_metrics |
988 | clip -> clip_to | 991 | clip -> clip_to |
@@ -1006,6 +1009,7 @@ New_Statement_Handler statement_handlers_short[] = | |||
1006 | {"collections.group.parts.part.before", st_collections_group_parts_part_insert_before}, | 1009 | {"collections.group.parts.part.before", st_collections_group_parts_part_insert_before}, |
1007 | {"collections.group.parts.part.after", st_collections_group_parts_part_insert_after}, | 1010 | {"collections.group.parts.part.after", st_collections_group_parts_part_insert_after}, |
1008 | {"collections.group.parts.part.ignore", st_collections_group_parts_part_ignore_flags}, | 1011 | {"collections.group.parts.part.ignore", st_collections_group_parts_part_ignore_flags}, |
1012 | {"collections.group.parts.part.mask", st_collections_group_parts_part_mask_flags}, | ||
1009 | {"collections.group.parts.part.pointer", st_collections_group_parts_part_pointer_mode}, | 1013 | {"collections.group.parts.part.pointer", st_collections_group_parts_part_pointer_mode}, |
1010 | {"collections.group.parts.part.alt_font", st_collections_group_parts_part_use_alternate_font_metrics}, | 1014 | {"collections.group.parts.part.alt_font", st_collections_group_parts_part_use_alternate_font_metrics}, |
1011 | {"collections.group.parts.part.clip", st_collections_group_parts_part_clip_to_id}, | 1015 | {"collections.group.parts.part.clip", st_collections_group_parts_part_clip_to_id}, |
@@ -3433,6 +3437,7 @@ _part_copy(Edje_Part *ep, Edje_Part *ep2) | |||
3433 | ep->anti_alias = ep2->anti_alias; | 3437 | ep->anti_alias = ep2->anti_alias; |
3434 | ep->repeat_events = ep2->repeat_events; | 3438 | ep->repeat_events = ep2->repeat_events; |
3435 | ep->ignore_flags = ep2->ignore_flags; | 3439 | ep->ignore_flags = ep2->ignore_flags; |
3440 | ep->mask_flags = ep2->mask_flags; | ||
3436 | ep->scale = ep2->scale; | 3441 | ep->scale = ep2->scale; |
3437 | ep->pointer_mode = ep2->pointer_mode; | 3442 | ep->pointer_mode = ep2->pointer_mode; |
3438 | ep->precise_is_inside = ep2->precise_is_inside; | 3443 | ep->precise_is_inside = ep2->precise_is_inside; |
@@ -4422,6 +4427,7 @@ st_collections_group_parts_alias(void) | |||
4422 | mouse_events: 1; | 4427 | mouse_events: 1; |
4423 | repeat_events: 0; | 4428 | repeat_events: 0; |
4424 | ignore_flags: NONE; | 4429 | ignore_flags: NONE; |
4430 | mask_flags: NONE; | ||
4425 | clip_to: "anotherpart"; | 4431 | clip_to: "anotherpart"; |
4426 | source: "groupname"; | 4432 | source: "groupname"; |
4427 | pointer_mode: AUTOGRAB; | 4433 | pointer_mode: AUTOGRAB; |
@@ -4473,6 +4479,7 @@ edje_cc_handlers_part_make(int id) | |||
4473 | ep->anti_alias = 1; | 4479 | ep->anti_alias = 1; |
4474 | ep->repeat_events = 0; | 4480 | ep->repeat_events = 0; |
4475 | ep->ignore_flags = EVAS_EVENT_FLAG_NONE; | 4481 | ep->ignore_flags = EVAS_EVENT_FLAG_NONE; |
4482 | ep->mask_flags = EVAS_EVENT_FLAG_NONE; | ||
4476 | ep->scale = 0; | 4483 | ep->scale = 0; |
4477 | ep->pointer_mode = EVAS_OBJECT_POINTER_MODE_AUTOGRAB; | 4484 | ep->pointer_mode = EVAS_OBJECT_POINTER_MODE_AUTOGRAB; |
4478 | ep->precise_is_inside = 0; | 4485 | ep->precise_is_inside = 0; |
@@ -5264,6 +5271,31 @@ st_collections_group_parts_part_ignore_flags(void) | |||
5264 | /** | 5271 | /** |
5265 | @page edcref | 5272 | @page edcref |
5266 | @property | 5273 | @property |
5274 | mask_flags | ||
5275 | @parameters | ||
5276 | [FLAG] ... | ||
5277 | @effect | ||
5278 | Masks event flags with the given value, so event propagating from this part | ||
5279 | will go with masked flags. Other library, like Elementary, can determine | ||
5280 | whether it handles this event. Possible flags: | ||
5281 | @li NONE (default value, no event will be masked) | ||
5282 | @li ON_HOLD | ||
5283 | @endproperty | ||
5284 | */ | ||
5285 | static void | ||
5286 | st_collections_group_parts_part_mask_flags(void) | ||
5287 | { | ||
5288 | check_min_arg_count(1); | ||
5289 | |||
5290 | current_part->mask_flags = parse_flags(0, | ||
5291 | "NONE", EVAS_EVENT_FLAG_NONE, | ||
5292 | "ON_HOLD", EVAS_EVENT_FLAG_ON_HOLD, | ||
5293 | NULL); | ||
5294 | } | ||
5295 | |||
5296 | /** | ||
5297 | @page edcref | ||
5298 | @property | ||
5267 | scale | 5299 | scale |
5268 | @parameters | 5300 | @parameters |
5269 | [1 or 0] | 5301 | [1 or 0] |
diff --git a/src/bin/edje/edje_convert.c b/src/bin/edje/edje_convert.c index fc98722a7b..25afe10dfa 100644 --- a/src/bin/edje/edje_convert.c +++ b/src/bin/edje/edje_convert.c | |||
@@ -351,6 +351,7 @@ _edje_collection_convert(Eet_File *ef, Edje_Part_Collection_Directory_Entry *ce, | |||
351 | replacement->mouse_events = part->mouse_events; | 351 | replacement->mouse_events = part->mouse_events; |
352 | replacement->repeat_events = part->repeat_events; | 352 | replacement->repeat_events = part->repeat_events; |
353 | replacement->ignore_flags = part->ignore_flags; | 353 | replacement->ignore_flags = part->ignore_flags; |
354 | replacement->mask_flags = part->mask_flags; | ||
354 | replacement->scale = part->scale; | 355 | replacement->scale = part->scale; |
355 | replacement->precise_is_inside = part->precise_is_inside; | 356 | replacement->precise_is_inside = part->precise_is_inside; |
356 | replacement->use_alternate_font_metrics = part->use_alternate_font_metrics; | 357 | replacement->use_alternate_font_metrics = part->use_alternate_font_metrics; |
diff --git a/src/bin/edje/edje_convert.h b/src/bin/edje/edje_convert.h index 0bbb38eb42..fe2bff182d 100644 --- a/src/bin/edje/edje_convert.h +++ b/src/bin/edje/edje_convert.h | |||
@@ -102,6 +102,7 @@ struct _Old_Edje_Part | |||
102 | unsigned char mouse_events; /* it will affect/respond to mouse events */ | 102 | unsigned char mouse_events; /* it will affect/respond to mouse events */ |
103 | unsigned char repeat_events; /* it will repeat events to objects below */ | 103 | unsigned char repeat_events; /* it will repeat events to objects below */ |
104 | Evas_Event_Flags ignore_flags; | 104 | Evas_Event_Flags ignore_flags; |
105 | Evas_Event_Flags mask_flags; | ||
105 | unsigned char scale; /* should certain properties scale with edje scale factor? */ | 106 | unsigned char scale; /* should certain properties scale with edje scale factor? */ |
106 | unsigned char precise_is_inside; | 107 | unsigned char precise_is_inside; |
107 | unsigned char use_alternate_font_metrics; | 108 | unsigned char use_alternate_font_metrics; |
diff --git a/src/bin/edje/edje_data_convert.c b/src/bin/edje/edje_data_convert.c index ac7d52d5b3..bea6eeb7e5 100644 --- a/src/bin/edje/edje_data_convert.c +++ b/src/bin/edje/edje_data_convert.c | |||
@@ -399,6 +399,7 @@ _edje_edd_old_init(void) | |||
399 | EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "anti_alias", anti_alias, EET_T_UCHAR); | 399 | EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "anti_alias", anti_alias, EET_T_UCHAR); |
400 | EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "repeat_events", repeat_events, EET_T_UCHAR); | 400 | EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "repeat_events", repeat_events, EET_T_UCHAR); |
401 | EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "ignore_flags", ignore_flags, EET_T_INT); | 401 | EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "ignore_flags", ignore_flags, EET_T_INT); |
402 | EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "mask_flags", mask_flags, EET_T_INT); | ||
402 | EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "scale", scale, EET_T_UCHAR); | 403 | EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "scale", scale, EET_T_UCHAR); |
403 | EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "pointer_mode", pointer_mode, EET_T_UCHAR); | 404 | EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "pointer_mode", pointer_mode, EET_T_UCHAR); |
404 | EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "precise_is_inside", precise_is_inside, EET_T_UCHAR); | 405 | EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "precise_is_inside", precise_is_inside, EET_T_UCHAR); |
diff --git a/src/lib/edje/Edje_Edit.h b/src/lib/edje/Edje_Edit.h index 1fda09351e..0e0bb321f5 100644 --- a/src/lib/edje/Edje_Edit.h +++ b/src/lib/edje/Edje_Edit.h | |||
@@ -1592,6 +1592,25 @@ EAPI Evas_Event_Flags edje_edit_part_ignore_flags_get(Evas_Object *obj, const ch | |||
1592 | */ | 1592 | */ |
1593 | EAPI Eina_Bool edje_edit_part_ignore_flags_set(Evas_Object *obj, const char *part, Evas_Event_Flags ignore_flags); | 1593 | EAPI Eina_Bool edje_edit_part_ignore_flags_set(Evas_Object *obj, const char *part, Evas_Event_Flags ignore_flags); |
1594 | 1594 | ||
1595 | /** Get mask_flags for part. | ||
1596 | * | ||
1597 | * @param obj Object being edited. | ||
1598 | * @param part Part to get which event_flags are being masked. | ||
1599 | * | ||
1600 | * @return The Event flags set to the part. | ||
1601 | */ | ||
1602 | EAPI Evas_Event_Flags edje_edit_part_mask_flags_get(Evas_Object *obj, const char *part); | ||
1603 | |||
1604 | /** Set mask_flags for part. | ||
1605 | * | ||
1606 | * @param obj Object being edited. | ||
1607 | * @param part Part to set which event flags will be masked. | ||
1608 | * @param mask_flags The Event flags to be masked by the part. | ||
1609 | * | ||
1610 | * @return @c EINA_TRUE in case of success, @c EINA_FALSE otherwise. | ||
1611 | */ | ||
1612 | EAPI Eina_Bool edje_edit_part_mask_flags_set(Evas_Object *obj, const char *part, Evas_Event_Flags mask_flags); | ||
1613 | |||
1595 | /** Get pointer_mode of a part. | 1614 | /** Get pointer_mode of a part. |
1596 | * | 1615 | * |
1597 | * @param obj Object being edited. | 1616 | * @param obj Object being edited. |
diff --git a/src/lib/edje/edje_callbacks.c b/src/lib/edje/edje_callbacks.c index f24b7c42d1..39a6255d1a 100644 --- a/src/lib/edje/edje_callbacks.c +++ b/src/lib/edje/edje_callbacks.c | |||
@@ -61,10 +61,13 @@ _edje_mouse_in_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc E | |||
61 | ev = event_info; | 61 | ev = event_info; |
62 | ed = data; | 62 | ed = data; |
63 | rp = evas_object_data_get(obj, "real_part"); | 63 | rp = evas_object_data_get(obj, "real_part"); |
64 | if ((!rp) || | 64 | if (rp) |
65 | ((ev->event_flags) && | 65 | { |
66 | (rp->part->ignore_flags & ev->event_flags))) return EO_CALLBACK_CONTINUE; | 66 | if (!(ev->event_flags) || !(rp->part->ignore_flags & ev->event_flags)) |
67 | _edje_emit(ed, "mouse,in", rp->part->name); | 67 | _edje_emit(ed, "mouse,in", rp->part->name); |
68 | |||
69 | ev->event_flags |= rp->part->mask_flags; | ||
70 | } | ||
68 | 71 | ||
69 | return EO_CALLBACK_CONTINUE; | 72 | return EO_CALLBACK_CONTINUE; |
70 | } | 73 | } |
@@ -79,10 +82,13 @@ _edje_mouse_out_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc | |||
79 | ev = event_info; | 82 | ev = event_info; |
80 | ed = data; | 83 | ed = data; |
81 | rp = evas_object_data_get(obj, "real_part"); | 84 | rp = evas_object_data_get(obj, "real_part"); |
82 | if ((!rp) || | 85 | if (rp) |
83 | ((ev->event_flags) && | 86 | { |
84 | (rp->part->ignore_flags & ev->event_flags))) return EO_CALLBACK_CONTINUE; | 87 | if (!(ev->event_flags) || !(rp->part->ignore_flags & ev->event_flags)) |
85 | _edje_emit(ed, "mouse,out", rp->part->name); | 88 | _edje_emit(ed, "mouse,out", rp->part->name); |
89 | |||
90 | ev->event_flags |= rp->part->mask_flags; | ||
91 | } | ||
86 | 92 | ||
87 | return EO_CALLBACK_CONTINUE; | 93 | return EO_CALLBACK_CONTINUE; |
88 | } | 94 | } |
@@ -153,6 +159,8 @@ _edje_mouse_down_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc | |||
153 | _edje_util_thaw(ed); | 159 | _edje_util_thaw(ed); |
154 | _edje_unref(ed); | 160 | _edje_unref(ed); |
155 | 161 | ||
162 | ev->event_flags |= rp->part->mask_flags; | ||
163 | |||
156 | return EO_CALLBACK_CONTINUE; | 164 | return EO_CALLBACK_CONTINUE; |
157 | } | 165 | } |
158 | 166 | ||
@@ -226,6 +234,8 @@ _edje_mouse_up_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc E | |||
226 | _edje_util_thaw(ed); | 234 | _edje_util_thaw(ed); |
227 | _edje_unref(ed); | 235 | _edje_unref(ed); |
228 | 236 | ||
237 | ev->event_flags |= rp->part->mask_flags; | ||
238 | |||
229 | return EO_CALLBACK_CONTINUE; | 239 | return EO_CALLBACK_CONTINUE; |
230 | } | 240 | } |
231 | 241 | ||
@@ -323,6 +333,8 @@ _edje_mouse_move_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc | |||
323 | _edje_unref(ed); | 333 | _edje_unref(ed); |
324 | _edje_util_thaw(ed); | 334 | _edje_util_thaw(ed); |
325 | 335 | ||
336 | ev->event_flags |= rp->part->mask_flags; | ||
337 | |||
326 | return EO_CALLBACK_CONTINUE; | 338 | return EO_CALLBACK_CONTINUE; |
327 | } | 339 | } |
328 | 340 | ||
@@ -337,12 +349,16 @@ _edje_mouse_wheel_signal_cb(void *data, Eo *obj, const Eo_Event_Description *des | |||
337 | ev = event_info; | 349 | ev = event_info; |
338 | ed = data; | 350 | ed = data; |
339 | rp = evas_object_data_get(obj, "real_part"); | 351 | rp = evas_object_data_get(obj, "real_part"); |
340 | if ((!rp) || | 352 | if (rp) |
341 | ((ev->event_flags) && | 353 | { |
342 | (!(rp->part->ignore_flags & ev->event_flags)))) return EO_CALLBACK_CONTINUE; | 354 | if (!(ev->event_flags) || !(rp->part->ignore_flags & ev->event_flags)) |
355 | { | ||
356 | snprintf(buf, sizeof(buf), "mouse,wheel,%i,%i", ev->direction, (ev->z < 0) ? (-1) : (1)); | ||
357 | _edje_emit(ed, buf, rp->part->name); | ||
358 | } | ||
343 | 359 | ||
344 | snprintf(buf, sizeof(buf), "mouse,wheel,%i,%i", ev->direction, (ev->z < 0) ? (-1) : (1)); | 360 | ev->event_flags |= rp->part->mask_flags; |
345 | _edje_emit(ed, buf, rp->part->name); | 361 | } |
346 | 362 | ||
347 | return EO_CALLBACK_CONTINUE; | 363 | return EO_CALLBACK_CONTINUE; |
348 | } | 364 | } |
diff --git a/src/lib/edje/edje_convert.c b/src/lib/edje/edje_convert.c index da2a74563a..43160043c4 100644 --- a/src/lib/edje/edje_convert.c +++ b/src/lib/edje/edje_convert.c | |||
@@ -392,6 +392,7 @@ case EDJE_PART_TYPE_##Tp: \ | |||
392 | replacement->mouse_events = part->mouse_events; | 392 | replacement->mouse_events = part->mouse_events; |
393 | replacement->repeat_events = part->repeat_events; | 393 | replacement->repeat_events = part->repeat_events; |
394 | replacement->ignore_flags = part->ignore_flags; | 394 | replacement->ignore_flags = part->ignore_flags; |
395 | replacement->mask_flags = part->mask_flags; | ||
395 | replacement->scale = part->scale; | 396 | replacement->scale = part->scale; |
396 | replacement->precise_is_inside = part->precise_is_inside; | 397 | replacement->precise_is_inside = part->precise_is_inside; |
397 | replacement->use_alternate_font_metrics = part->use_alternate_font_metrics; | 398 | replacement->use_alternate_font_metrics = part->use_alternate_font_metrics; |
diff --git a/src/lib/edje/edje_convert.h b/src/lib/edje/edje_convert.h index 951d0c6f24..e387e265d4 100644 --- a/src/lib/edje/edje_convert.h +++ b/src/lib/edje/edje_convert.h | |||
@@ -127,6 +127,7 @@ struct _Old_Edje_Part | |||
127 | unsigned char mouse_events; /**< it will affect/respond to mouse events */ | 127 | unsigned char mouse_events; /**< it will affect/respond to mouse events */ |
128 | unsigned char repeat_events; /**< it will repeat events to objects below */ | 128 | unsigned char repeat_events; /**< it will repeat events to objects below */ |
129 | Evas_Event_Flags ignore_flags; /**< ignore flags */ | 129 | Evas_Event_Flags ignore_flags; /**< ignore flags */ |
130 | Evas_Event_Flags mask_flags; /**< mask flags */ | ||
130 | unsigned char scale; /**< should certain properties scale with edje scale factor? */ | 131 | unsigned char scale; /**< should certain properties scale with edje scale factor? */ |
131 | unsigned char precise_is_inside; /**< whether is precisely inside */ | 132 | unsigned char precise_is_inside; /**< whether is precisely inside */ |
132 | unsigned char use_alternate_font_metrics; /**< use alternate font metrics */ | 133 | unsigned char use_alternate_font_metrics; /**< use alternate font metrics */ |
diff --git a/src/lib/edje/edje_data.c b/src/lib/edje/edje_data.c index d6a08f7a05..55f06ba65c 100644 --- a/src/lib/edje/edje_data.c +++ b/src/lib/edje/edje_data.c | |||
@@ -1222,6 +1222,7 @@ _edje_edd_init(void) | |||
1222 | EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "anti_alias", anti_alias, EET_T_UCHAR); | 1222 | EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "anti_alias", anti_alias, EET_T_UCHAR); |
1223 | EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "repeat_events", repeat_events, EET_T_UCHAR); | 1223 | EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "repeat_events", repeat_events, EET_T_UCHAR); |
1224 | EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "ignore_flags", ignore_flags, EET_T_INT); | 1224 | EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "ignore_flags", ignore_flags, EET_T_INT); |
1225 | EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "mask_flags", mask_flags, EET_T_INT); | ||
1225 | EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "scale", scale, EET_T_UCHAR); | 1226 | EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "scale", scale, EET_T_UCHAR); |
1226 | EET_DATA_DESCRIPTOR_ADD_SUB_NESTED(_edje_edd_edje_part, Edje_Part, "scale_3d", scale_3d, _edje_edd_edje_part_description_3d_vec); | 1227 | EET_DATA_DESCRIPTOR_ADD_SUB_NESTED(_edje_edd_edje_part, Edje_Part, "scale_3d", scale_3d, _edje_edd_edje_part_description_3d_vec); |
1227 | EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "precise_is_inside", precise_is_inside, EET_T_UCHAR); | 1228 | EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "precise_is_inside", precise_is_inside, EET_T_UCHAR); |
diff --git a/src/lib/edje/edje_edit.c b/src/lib/edje/edje_edit.c index 4e6b94f98d..fb5b54690d 100644 --- a/src/lib/edje/edje_edit.c +++ b/src/lib/edje/edje_edit.c | |||
@@ -3094,6 +3094,7 @@ _edje_edit_real_part_add(Evas_Object *obj, const char *name, Edje_Part_Type type | |||
3094 | ep->repeat_events = 0; | 3094 | ep->repeat_events = 0; |
3095 | ep->anti_alias = 1; | 3095 | ep->anti_alias = 1; |
3096 | ep->ignore_flags = EVAS_EVENT_FLAG_NONE; | 3096 | ep->ignore_flags = EVAS_EVENT_FLAG_NONE; |
3097 | ep->mask_flags = EVAS_EVENT_FLAG_NONE; | ||
3097 | ep->pointer_mode = EVAS_OBJECT_POINTER_MODE_AUTOGRAB; | 3098 | ep->pointer_mode = EVAS_OBJECT_POINTER_MODE_AUTOGRAB; |
3098 | ep->precise_is_inside = 0; | 3099 | ep->precise_is_inside = 0; |
3099 | ep->use_alternate_font_metrics = 0; | 3100 | ep->use_alternate_font_metrics = 0; |
@@ -3366,6 +3367,7 @@ edje_edit_part_copy(Evas_Object *obj, const char *part, const char *new_copy) | |||
3366 | _PARAM_PART_COPY(mouse_events) | 3367 | _PARAM_PART_COPY(mouse_events) |
3367 | _PARAM_PART_COPY(repeat_events) | 3368 | _PARAM_PART_COPY(repeat_events) |
3368 | _PARAM_PART_COPY(ignore_flags) | 3369 | _PARAM_PART_COPY(ignore_flags) |
3370 | _PARAM_PART_COPY(mask_flags) | ||
3369 | _PARAM_PART_COPY(pointer_mode) | 3371 | _PARAM_PART_COPY(pointer_mode) |
3370 | _PARAM_PART_COPY(precise_is_inside) | 3372 | _PARAM_PART_COPY(precise_is_inside) |
3371 | _PARAM_PART_COPY(use_alternate_font_metrics) | 3373 | _PARAM_PART_COPY(use_alternate_font_metrics) |
@@ -3878,6 +3880,25 @@ edje_edit_part_ignore_flags_set(Evas_Object *obj, const char *part, Evas_Event_F | |||
3878 | return EINA_TRUE; | 3880 | return EINA_TRUE; |
3879 | } | 3881 | } |
3880 | 3882 | ||
3883 | EAPI Evas_Event_Flags | ||
3884 | edje_edit_part_mask_flags_get(Evas_Object *obj, const char *part) | ||
3885 | { | ||
3886 | GET_RP_OR_RETURN(0); | ||
3887 | |||
3888 | return rp->part->mask_flags; | ||
3889 | } | ||
3890 | |||
3891 | EAPI Eina_Bool | ||
3892 | edje_edit_part_mask_flags_set(Evas_Object *obj, const char *part, Evas_Event_Flags mask_flags) | ||
3893 | { | ||
3894 | GET_RP_OR_RETURN(EINA_FALSE); | ||
3895 | |||
3896 | if (!rp->object) return EINA_FALSE; | ||
3897 | |||
3898 | rp->part->mask_flags = mask_flags; | ||
3899 | return EINA_TRUE; | ||
3900 | } | ||
3901 | |||
3881 | EAPI Evas_Object_Pointer_Mode | 3902 | EAPI Evas_Object_Pointer_Mode |
3882 | edje_edit_part_pointer_mode_get(Evas_Object *obj, const char *part) | 3903 | edje_edit_part_pointer_mode_get(Evas_Object *obj, const char *part) |
3883 | { | 3904 | { |
@@ -11354,6 +11375,8 @@ _edje_generate_source_of_part(Evas_Object *obj, Edje_Part *ep, Eina_Strbuf *buf) | |||
11354 | 11375 | ||
11355 | if (rp->part->ignore_flags) | 11376 | if (rp->part->ignore_flags) |
11356 | BUF_APPENDF(I4 "ignore_flags: \"ON_HOLD\";\n"); | 11377 | BUF_APPENDF(I4 "ignore_flags: \"ON_HOLD\";\n"); |
11378 | if (rp->part->mask_flags) | ||
11379 | BUF_APPENDF(I4 "mask_flags: \"ON_HOLD\";\n"); | ||
11357 | if (rp->part->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB) | 11380 | if (rp->part->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB) |
11358 | BUF_APPEND(I4 "pointer_mode: NOGRAB;\n"); | 11381 | BUF_APPEND(I4 "pointer_mode: NOGRAB;\n"); |
11359 | if (rp->part->precise_is_inside) | 11382 | if (rp->part->precise_is_inside) |
diff --git a/src/lib/edje/edje_entry.c b/src/lib/edje/edje_entry.c index 42945585bf..4a57d566b0 100644 --- a/src/lib/edje/edje_entry.c +++ b/src/lib/edje/edje_entry.c | |||
@@ -746,6 +746,7 @@ _edje_anchor_mouse_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EIN | |||
746 | snprintf(buf, len, "anchor,mouse,down,%i,%s", ev->button, n); | 746 | snprintf(buf, len, "anchor,mouse,down,%i,%s", ev->button, n); |
747 | _edje_emit(ed, buf, rp->part->name); | 747 | _edje_emit(ed, buf, rp->part->name); |
748 | } | 748 | } |
749 | ev->event_flags |= rp->part->mask_flags; | ||
749 | } | 750 | } |
750 | 751 | ||
751 | static void | 752 | static void |
@@ -783,6 +784,7 @@ _edje_anchor_mouse_up_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_ | |||
783 | snprintf(buf, len, "anchor,mouse,clicked,%i,%s", ev->button, n); | 784 | snprintf(buf, len, "anchor,mouse,clicked,%i,%s", ev->button, n); |
784 | _edje_emit(ed, buf, rp->part->name); | 785 | _edje_emit(ed, buf, rp->part->name); |
785 | } | 786 | } |
787 | ev->event_flags |= rp->part->mask_flags; | ||
786 | } | 788 | } |
787 | 789 | ||
788 | static void | 790 | static void |
@@ -814,6 +816,7 @@ _edje_anchor_mouse_move_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EIN | |||
814 | snprintf(buf, len, "anchor,mouse,move,%s", n); | 816 | snprintf(buf, len, "anchor,mouse,move,%s", n); |
815 | _edje_emit(ed, buf, rp->part->name); | 817 | _edje_emit(ed, buf, rp->part->name); |
816 | } | 818 | } |
819 | ev->event_flags |= rp->part->mask_flags; | ||
817 | } | 820 | } |
818 | 821 | ||
819 | static void | 822 | static void |
@@ -841,6 +844,7 @@ _edje_anchor_mouse_in_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_ | |||
841 | snprintf(buf, len, "anchor,mouse,in,%s", n); | 844 | snprintf(buf, len, "anchor,mouse,in,%s", n); |
842 | _edje_emit(ed, buf, rp->part->name); | 845 | _edje_emit(ed, buf, rp->part->name); |
843 | } | 846 | } |
847 | ev->event_flags |= rp->part->mask_flags; | ||
844 | } | 848 | } |
845 | 849 | ||
846 | static void | 850 | static void |
@@ -868,6 +872,7 @@ _edje_anchor_mouse_out_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA | |||
868 | snprintf(buf, len, "anchor,mouse,out,%s", n); | 872 | snprintf(buf, len, "anchor,mouse,out,%s", n); |
869 | _edje_emit(ed, buf, rp->part->name); | 873 | _edje_emit(ed, buf, rp->part->name); |
870 | } | 874 | } |
875 | ev->event_flags |= rp->part->mask_flags; | ||
871 | } | 876 | } |
872 | 877 | ||
873 | static void | 878 | static void |
diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h index 2b1ec6b43a..824d2c436e 100644 --- a/src/lib/edje/edje_private.h +++ b/src/lib/edje/edje_private.h | |||
@@ -1130,6 +1130,7 @@ struct _Edje_Part | |||
1130 | unsigned char repeat_events; /* it will repeat events to objects below */ | 1130 | unsigned char repeat_events; /* it will repeat events to objects below */ |
1131 | unsigned char anti_alias; | 1131 | unsigned char anti_alias; |
1132 | Evas_Event_Flags ignore_flags; | 1132 | Evas_Event_Flags ignore_flags; |
1133 | Evas_Event_Flags mask_flags; | ||
1133 | unsigned char scale; /* should certain properties scale with edje scale factor? */ | 1134 | unsigned char scale; /* should certain properties scale with edje scale factor? */ |
1134 | Edje_3D_Vec scale_3d; | 1135 | Edje_3D_Vec scale_3d; |
1135 | unsigned char precise_is_inside; | 1136 | unsigned char precise_is_inside; |