1 /**
2  * @addtogroup Elm_Win_Group
3  *
4  * @{
5  */
6 
7 /**
8  * @typedef Elm_Win_Trap
9  *
10  * Trap can be set with elm_win_trap_set() and will intercept the
11  * calls to internal ecore_evas with the same name and parameters. If
12  * there is a trap and it returns @c EINA_TRUE then the call will be
13  * allowed, otherwise it will be ignored.
14  *
15  * @since 1.7
16  */
17 typedef struct _Elm_Win_Trap Elm_Win_Trap;
18 struct _Elm_Win_Trap
19 {
20 #define ELM_WIN_TRAP_VERSION (1UL)
21    unsigned long version;
22    void *(*add)(Evas_Object *o); /**< object was just added. The returned pointer will be handled to every other trap call. */
23    void (*del)(void *data, Evas_Object *o); /**< object will be deleted. */
24    Eina_Bool (*hide)(void *data, Evas_Object *o);
25    Eina_Bool (*show)(void *data, Evas_Object *o);
26    Eina_Bool (*move)(void *data, Evas_Object *o, int x, int y);
27    Eina_Bool (*resize)(void *data, Evas_Object *o, int w, int h);
28    Eina_Bool (*center)(void *data, Evas_Object *o, Eina_Bool h, Eina_Bool v); /* not in ecore_evas, but nice to trap */
29    Eina_Bool (*lower)(void *data, Evas_Object *o);
30    Eina_Bool (*raise)(void *data, Evas_Object *o);
31    Eina_Bool (*activate)(void *data, Evas_Object *o);
32    Eina_Bool (*alpha_set)(void *data, Evas_Object *o, Eina_Bool alpha);
33    Eina_Bool (*aspect_set)(void *data, Evas_Object *o, double aspect);
34    Eina_Bool (*avoid_damage_set)(void *data, Evas_Object *o, Ecore_Evas_Avoid_Damage_Type on);
35    Eina_Bool (*borderless_set)(void *data, Evas_Object *o, Eina_Bool on);
36    Eina_Bool (*demand_attention_set)(void *data, Evas_Object *o, Eina_Bool on);
37    Eina_Bool (*focus_skip_set)(void *data, Evas_Object *o, Eina_Bool skip);
38    Eina_Bool (*fullscreen_set)(void *data, Evas_Object *o, Eina_Bool on);
39    Eina_Bool (*iconified_set)(void *data, Evas_Object *o, Eina_Bool on);
40    Eina_Bool (*layer_set)(void *data, Evas_Object *o, int layer);
41    Eina_Bool (*manual_render_set)(void *data, Evas_Object *o, Eina_Bool manual_render);
42    Eina_Bool (*maximized_set)(void *data, Evas_Object *o, Eina_Bool on);
43    Eina_Bool (*modal_set)(void *data, Evas_Object *o, Eina_Bool on);
44    Eina_Bool (*name_class_set)(void *data, Evas_Object *o, const char *n, const char *c);
45    Eina_Bool (*object_cursor_set)(void *data, Evas_Object *o, Evas_Object *obj, int layer, int hot_x, int hot_y);
46    Eina_Bool (*override_set)(void *data, Evas_Object *o, Eina_Bool on);
47    Eina_Bool (*rotation_set)(void *data, Evas_Object *o, int rot);
48    Eina_Bool (*rotation_with_resize_set)(void *data, Evas_Object *o, int rot);
49    Eina_Bool (*shaped_set)(void *data, Evas_Object *o, Eina_Bool shaped);
50    Eina_Bool (*size_base_set)(void *data, Evas_Object *o, int w, int h);
51    Eina_Bool (*size_step_set)(void *data, Evas_Object *o, int w, int h);
52    Eina_Bool (*size_min_set)(void *data, Evas_Object *o, int w, int h);
53    Eina_Bool (*size_max_set)(void *data, Evas_Object *o, int w, int h);
54    Eina_Bool (*sticky_set)(void *data, Evas_Object *o, Eina_Bool sticky);
55    Eina_Bool (*title_set)(void *data, Evas_Object *o, const char *t);
56    Eina_Bool (*urgent_set)(void *data, Evas_Object *o, Eina_Bool urgent);
57    Eina_Bool (*withdrawn_set)(void *data, Evas_Object *o, Eina_Bool withdrawn);
58 };
59 
60 /**
61  * Sets the trap to be used for internal @c Ecore_Evas management.
62  *
63  * @param trap the trap to be used or @c NULL to remove traps. Pointer
64  *        is not modified or copied, keep it alive.
65  * @return @c EINA_TRUE on success, @c EINA_FALSE if there was a
66  *         problem, such as invalid version number.
67  *
68  * @warning this is an advanced feature that you should avoid using.
69  *
70  * @since 1.7
71  */
72 EAPI Eina_Bool elm_win_trap_set(const Elm_Win_Trap *trap);
73 
74 /**
75  * @}
76  */
77