574882346e3a509d00fc6ec69a5960cf3826745c
[framework/uifw/e17.git] / src / bin / e_border.h
1 #ifdef E_TYPEDEFS
2
3 typedef enum _E_Icon_Preference
4 {
5    E_ICON_PREF_E_DEFAULT,
6    E_ICON_PREF_NETWM,
7    E_ICON_PREF_USER
8 } E_Icon_Preference;
9
10 typedef enum _E_Direction
11 {
12    E_DIRECTION_UP,
13    E_DIRECTION_DOWN,
14    E_DIRECTION_LEFT,
15    E_DIRECTION_RIGHT
16 } E_Direction;
17
18 typedef enum _E_Transition
19 {
20    E_TRANSITION_LINEAR,
21    E_TRANSITION_SINUSOIDAL,
22    E_TRANSITION_ACCELERATE,
23    E_TRANSITION_DECELERATE
24 } E_Transition;
25
26 typedef enum _E_Stacking
27 {
28    E_STACKING_NONE,
29    E_STACKING_ABOVE,
30    E_STACKING_BELOW
31 } E_Stacking;
32
33 typedef enum _E_Focus_Policy
34 {
35    E_FOCUS_CLICK,
36    E_FOCUS_MOUSE,
37    E_FOCUS_SLOPPY
38 } E_Focus_Policy;
39
40 typedef enum _E_Focus_Setting
41 {
42    E_FOCUS_NONE,
43    E_FOCUS_NEW_WINDOW,
44    E_FOCUS_NEW_DIALOG,
45    E_FOCUS_NEW_DIALOG_IF_OWNER_FOCUSED,
46 #ifdef _F_FOCUS_WINDOW_IF_TOP_STACK_
47    E_FOCUS_NEW_WINDOW_IF_TOP_STACK
48 #endif   
49 } E_Focus_Setting;
50
51 typedef enum _E_Maximize
52 {
53    E_MAXIMIZE_NONE       = 0x00000000,
54    E_MAXIMIZE_FULLSCREEN = 0x00000001,
55    E_MAXIMIZE_SMART      = 0x00000002,
56    E_MAXIMIZE_EXPAND     = 0x00000003,
57    E_MAXIMIZE_FILL       = 0x00000004,
58    E_MAXIMIZE_TYPE       = 0x0000000f,
59    E_MAXIMIZE_VERTICAL   = 0x00000010,
60    E_MAXIMIZE_HORIZONTAL = 0x00000020,
61    E_MAXIMIZE_BOTH       = 0x00000030,
62    E_MAXIMIZE_DIRECTION  = 0x000000f0
63 } E_Maximize;
64
65 typedef enum _E_Fullscreen
66 {
67    /* Resize window */
68    E_FULLSCREEN_RESIZE,
69    /* Change screen resoultion and resize window */
70    E_FULLSCREEN_ZOOM
71 } E_Fullscreen;
72
73 typedef enum _E_Window_Placement
74 {
75    E_WINDOW_PLACEMENT_SMART,
76    E_WINDOW_PLACEMENT_ANTIGADGET,
77    E_WINDOW_PLACEMENT_CURSOR,
78    E_WINDOW_PLACEMENT_MANUAL
79 } E_Window_Placement;
80
81 typedef enum _E_Border_Hook_Point
82 {
83    E_BORDER_HOOK_EVAL_PRE_FETCH,
84    E_BORDER_HOOK_EVAL_PRE_POST_FETCH,
85    E_BORDER_HOOK_EVAL_POST_FETCH,
86    E_BORDER_HOOK_EVAL_PRE_BORDER_ASSIGN,
87    E_BORDER_HOOK_EVAL_POST_BORDER_ASSIGN,
88    E_BORDER_HOOK_EVAL_PRE_NEW_BORDER,
89    E_BORDER_HOOK_EVAL_POST_NEW_BORDER,
90    E_BORDER_HOOK_EVAL_END,
91    E_BORDER_HOOK_CONTAINER_LAYOUT,
92    E_BORDER_HOOK_NEW_BORDER,
93    E_BORDER_HOOK_SET_DESK,
94    E_BORDER_HOOK_MOVE_BEGIN,
95    E_BORDER_HOOK_MOVE_UPDATE,
96    E_BORDER_HOOK_MOVE_END,
97    E_BORDER_HOOK_RESIZE_BEGIN,
98    E_BORDER_HOOK_RESIZE_UPDATE,
99    E_BORDER_HOOK_RESIZE_END
100 } E_Border_Hook_Point;
101
102 typedef struct _E_Border                     E_Border;
103 typedef struct _E_Border_Pending_Move_Resize E_Border_Pending_Move_Resize;
104 typedef struct _E_Border_Hook                E_Border_Hook;
105 typedef struct _E_Event_Border_Simple        E_Event_Border_Resize;
106 typedef struct _E_Event_Border_Simple        E_Event_Border_Move;
107 typedef struct _E_Event_Border_Simple        E_Event_Border_Add;
108 typedef struct _E_Event_Border_Simple        E_Event_Border_Remove;
109 typedef struct _E_Event_Border_Simple        E_Event_Border_Show;
110 typedef struct _E_Event_Border_Simple        E_Event_Border_Hide;
111 typedef struct _E_Event_Border_Simple        E_Event_Border_Iconify;
112 typedef struct _E_Event_Border_Simple        E_Event_Border_Uniconify;
113 typedef struct _E_Event_Border_Simple        E_Event_Border_Stick;
114 typedef struct _E_Event_Border_Simple        E_Event_Border_Unstick;
115 typedef struct _E_Event_Border_Zone_Set      E_Event_Border_Zone_Set;
116 typedef struct _E_Event_Border_Desk_Set      E_Event_Border_Desk_Set;
117 typedef struct _E_Event_Border_Stack         E_Event_Border_Stack;
118 typedef struct _E_Event_Border_Simple        E_Event_Border_Icon_Change;
119 typedef struct _E_Event_Border_Simple        E_Event_Border_Urgent_Change;
120 typedef struct _E_Event_Border_Simple          E_Event_Border_Focus_In;
121 typedef struct _E_Event_Border_Simple        E_Event_Border_Focus_Out;
122 typedef struct _E_Event_Border_Simple        E_Event_Border_Property;
123 typedef struct _E_Event_Border_Simple        E_Event_Border_Fullscreen;
124 typedef struct _E_Event_Border_Simple        E_Event_Border_Unfullscreen;
125
126 #else
127 #ifndef E_BORDER_H
128 #define E_BORDER_H
129
130 #define E_BORDER_TYPE (int) 0xE0b01002
131
132 struct _E_Border
133 {
134    E_Object             e_obj_inherit;
135
136    struct {
137       struct {
138          int x, y, w, h;
139          int mx, my;
140       } current, last_down[3], last_up[3];
141    } mouse;
142    
143    struct {
144       struct {
145          int x, y, w, h;
146          int mx, my;
147          int button;
148       } down;
149    } moveinfo;
150
151    Ecore_X_Window  win;
152    int             x, y, w, h;
153    int             ref;
154    E_Zone         *zone;
155    E_Desk         *desk;
156    Eina_List      *handlers;
157
158    struct {
159       int          x, y;
160       struct {
161          int       x, y;
162          double    t;
163       } start;
164    } fx;
165    
166    struct {
167       int          l, r, t, b;
168    } client_inset;
169
170    Ecore_Evas     *bg_ecore_evas;
171    Evas           *bg_evas;
172    Ecore_X_Window  bg_win;
173    Evas_Object    *bg_object;
174    Evas_Object    *icon_object;
175    Ecore_X_Window  event_win;
176    const char     *internal_icon;
177    const char     *internal_icon_key;
178
179    struct {
180       Ecore_X_Window shell_win;
181       Ecore_X_Window win;
182       
183       int x, y, w, h;
184       
185       struct {
186          unsigned char changed : 1;
187          unsigned char user_selected : 1;
188          const char *name;
189       } border;
190       
191       unsigned char shaped : 1;
192       unsigned char argb : 1;
193       
194       /* ICCCM */
195       struct {
196          char *title;
197          char *name;
198          char *class;
199          char *icon_name;
200          char *machine;
201          int min_w, min_h;
202          int max_w, max_h;
203          int base_w, base_h;
204          int step_w, step_h;
205          int start_x, start_y;
206          double min_aspect, max_aspect;
207          Ecore_X_Window_State_Hint initial_state;
208          Ecore_X_Window_State_Hint state;
209          Ecore_X_Pixmap icon_pixmap;
210          Ecore_X_Pixmap icon_mask;
211          Ecore_X_Window icon_window;
212          Ecore_X_Window window_group;
213          Ecore_X_Window transient_for;
214          Ecore_X_Window client_leader;
215          Ecore_X_Gravity gravity;
216          char *window_role;
217          unsigned char take_focus : 1;
218          unsigned char accepts_focus : 1;
219          unsigned char urgent : 1;
220          unsigned char delete_request : 1;
221          unsigned char request_pos : 1;
222          struct {
223             int argc;
224             char **argv;
225          } command;
226          struct {
227             unsigned char title : 1;
228             unsigned char name_class : 1;
229             unsigned char icon_name : 1;
230             unsigned char machine : 1;
231             unsigned char hints : 1;
232             unsigned char size_pos_hints : 1;
233             unsigned char protocol : 1;
234             unsigned char transient_for : 1;
235             unsigned char client_leader : 1;
236             unsigned char window_role : 1;
237             unsigned char state : 1;
238             unsigned char command : 1;
239          } fetch;
240       } icccm;
241
242       /* MWM */
243       struct {
244          Ecore_X_MWM_Hint_Func func;
245          Ecore_X_MWM_Hint_Decor decor;
246          Ecore_X_MWM_Hint_Input input;
247          unsigned char exists : 1;
248          unsigned char borderless : 1;
249          struct {
250             unsigned char hints : 1;
251          } fetch;
252       } mwm;
253
254      /* NetWM */
255       struct {
256          pid_t         pid;
257          unsigned int  desktop;
258          char         *name;
259          char         *icon_name;
260          Ecore_X_Icon *icons;
261          int           num_icons;
262          unsigned int  user_time;
263          struct {
264             int left;
265             int right;
266             int top;
267             int bottom;
268             int left_start_y;
269             int left_end_y;
270             int right_start_y;
271             int right_end_y;
272             int top_start_x;
273             int top_end_x;
274             int bottom_start_x;
275             int bottom_end_x;
276          } strut;
277          unsigned char ping : 1;
278          struct {
279             unsigned char        request : 1;
280             unsigned int         wait;
281             Ecore_X_Sync_Alarm   alarm;
282             Ecore_X_Sync_Counter counter;
283             unsigned int         serial;
284             double               send_time;
285          } sync;
286
287          /* NetWM Window state */
288          struct {
289             unsigned char modal : 1;
290             unsigned char sticky : 1;
291             unsigned char maximized_v : 1;
292             unsigned char maximized_h : 1;
293             unsigned char shaded : 1;
294             unsigned char skip_taskbar : 1;
295             unsigned char skip_pager : 1;
296             unsigned char hidden : 1;
297             unsigned char fullscreen : 1;
298             E_Stacking    stacking;
299          } state;
300
301          /* NetWM Window allowed actions */
302          struct {
303             unsigned char move : 1;
304             unsigned char resize : 1;
305             unsigned char minimize : 1;
306             unsigned char shade : 1;
307             unsigned char stick : 1;
308             unsigned char maximized_h : 1;
309             unsigned char maximized_v : 1;
310             unsigned char fullscreen : 1;
311             unsigned char change_desktop : 1;
312             unsigned char close : 1;
313          } action;
314          
315          Ecore_X_Window_Type type;
316          Ecore_X_Window_Type *extra_types;
317          int extra_types_num;
318          int startup_id;
319
320          struct {
321             unsigned char name : 1;
322             unsigned char icon_name : 1;
323             unsigned char icon : 1;
324             unsigned char user_time : 1;
325             unsigned char strut : 1;
326             unsigned char type : 1;
327             unsigned char state : 1;
328             /* No, fetch on new_client, shouldn't be changed after map.
329             unsigned char pid : 1;
330             */
331             /* No, ignore this
332             unsigned char desktop : 1;
333             */
334          } fetch;
335
336          struct {
337             unsigned char state : 1;
338          } update;
339       } netwm;
340
341       /* Extra e stuff */
342       struct {
343          struct {
344             unsigned char centered : 1;
345          } state;
346
347          struct {
348             unsigned char state : 1;
349          } fetch;
350       } e;
351       
352       struct {
353          struct {
354             unsigned char soft_menu : 1;
355             unsigned char soft_menus : 1;
356          } fetch;
357          
358          unsigned char soft_menu : 1;
359          unsigned char soft_menus : 1;
360       } qtopia;
361       
362       struct {
363          struct {
364             unsigned char state : 1;
365             unsigned char vkbd : 1;
366          } fetch;
367          Ecore_X_Virtual_Keyboard_State state;
368          unsigned char vkbd : 1;
369       } vkbd;
370
371       struct 
372         {
373            struct 
374              {
375                 struct 
376                   {
377                      unsigned char conformant : 1;
378                   } fetch;
379                 unsigned char conformant : 1;
380              } conformant;
381            struct 
382              {
383                 struct 
384                   {
385                      unsigned char state : 1;
386                      struct 
387                        {
388                           unsigned int major : 1;
389                           unsigned int minor : 1;
390                        } priority;
391                      unsigned char quickpanel : 1;
392                      unsigned char zone : 1;
393                   } fetch;
394                 Ecore_X_Illume_Quickpanel_State state;
395                 struct 
396                   {
397                      unsigned int major : 1;
398                      unsigned int minor : 1;
399                   } priority;
400                 unsigned char quickpanel : 1;
401                 int zone;
402              } quickpanel;
403            struct 
404              {
405                 struct 
406                   {
407                      unsigned char drag : 1;
408                      unsigned char locked : 1;
409                   } fetch;
410                 unsigned char drag : 1;
411                 unsigned char locked : 1;
412              } drag;
413         } illume;
414
415       Ecore_X_Window_Attributes initial_attributes;
416    } client;
417    
418    E_Container_Shape *shape;
419    
420    unsigned int    visible : 1;
421    unsigned int    await_hide_event;
422    unsigned int    moving : 1;
423    unsigned int    focused : 1;
424    unsigned int    new_client : 1;
425    unsigned int    re_manage : 1;
426    unsigned int    placed : 1;
427    unsigned int    shading : 1;
428    unsigned int    shaded : 1;
429    unsigned int    iconic : 1;
430    unsigned int    deskshow : 1;
431    unsigned int    sticky : 1;
432    unsigned int    shaped : 1;
433    unsigned int    shaped_input : 1;
434    unsigned int    need_shape_merge : 1;
435    unsigned int    need_shape_export : 1;
436    unsigned int    fullscreen : 1;
437    unsigned int    need_fullscreen : 1;
438    unsigned int    already_unparented : 1;
439    unsigned int    need_reparent : 1;
440    unsigned int    button_grabbed : 1;
441    unsigned int    delete_requested : 1;
442    unsigned int    ping_ok : 1;
443    unsigned int    hung : 1;
444    unsigned int    take_focus : 1;
445    unsigned int    want_focus : 1;
446    unsigned int    user_skip_winlist : 1;
447    unsigned int    need_maximize : 1;
448    E_Maximize      maximized;
449    unsigned int    borderless : 1;
450    unsigned char   offer_resistance : 1;
451    const char     *bordername;
452
453    unsigned int    lock_user_location : 1; /*DONE*/
454    unsigned int    lock_client_location : 1; /*DONE*/
455    unsigned int    lock_user_size : 1; /*DONE*/
456    unsigned int    lock_client_size : 1; /*DONE*/
457    unsigned int    lock_user_stacking : 1; /*DONE*/
458    unsigned int    lock_client_stacking : 1; /*DONE*/
459    unsigned int    lock_user_iconify : 1; /*DONE*/
460    unsigned int    lock_client_iconify : 1; /*DONE*/
461    unsigned int    lock_user_desk : 1;
462    unsigned int    lock_client_desk : 1;
463    unsigned int    lock_user_sticky : 1; /*DONE*/
464    unsigned int    lock_client_sticky : 1; /*DONE*/
465    unsigned int    lock_user_shade : 1; /*DONE*/
466    unsigned int    lock_client_shade : 1; /*DONE*/
467    unsigned int    lock_user_maximize : 1; /*DONE*/
468    unsigned int    lock_client_maximize : 1; /*DONE*/
469    unsigned int    lock_user_fullscreen : 1; /*DONE*/
470    unsigned int    lock_client_fullscreen : 1; /*DONE*/
471    unsigned int    lock_border : 1; /*DONE*/
472    unsigned int    lock_close : 1; /*DONE*/
473    unsigned int    lock_focus_in : 1; /*DONE*/
474    unsigned int    lock_focus_out : 1; /*DONE*/
475    unsigned int    lock_life : 1; /*DONE*/
476
477    unsigned int    internal : 1;
478    unsigned int    internal_no_remember : 1;
479    unsigned int    stolen : 1;
480    
481    Ecore_Evas     *internal_ecore_evas;
482    
483    double          ping;
484  
485    unsigned char   changed : 1;
486   
487    unsigned char   icon_preference; 
488    unsigned char   ignore_first_unmap;
489    unsigned char   resize_mode;
490    
491    struct {
492       int x, y, w, h;
493       unsigned int layer;
494       int zone;
495           E_Maximize maximized;
496    } saved;
497
498    struct {
499       unsigned char valid : 1;
500       int x, y, w, h;
501       struct {
502                 int x, y, w, h;
503       } saved;
504    } pre_res_change;
505    
506    struct {
507       double start;
508       double val;
509       int x, y;
510       E_Direction dir;
511       Ecore_Animator *anim;
512    } shade;
513    
514    struct {
515       int x, y;
516       int modified;
517    } shelf_fix;
518
519    Eina_List *stick_desks;
520    E_Menu *border_menu;
521    E_Config_Dialog *border_locks_dialog;
522    E_Config_Dialog *border_remember_dialog;
523    E_Config_Dialog *border_border_dialog;
524    E_Dialog *border_prop_dialog;
525    Eina_List *pending_move_resize;
526    
527    struct {
528       unsigned char visible : 1;
529       unsigned char pos : 1;
530       unsigned char size : 1;
531       unsigned char stack : 1;
532       unsigned char prop : 1;
533       unsigned char border : 1;
534       unsigned char reset_gravity : 1;
535       unsigned char shading : 1;
536       unsigned char shaded : 1;
537       unsigned char shape : 1;
538       unsigned char shape_input : 1;
539       unsigned char icon : 1;
540    } changes;
541
542    struct {
543       unsigned char start : 1;
544       int x, y;
545    } drag;
546
547    unsigned int layer;
548    E_Action *cur_mouse_action;
549    Ecore_Timer *raise_timer;
550    Ecore_Poller *ping_poller;
551    Ecore_Timer *kill_timer;
552    int shape_rects_num;
553    Ecore_X_Rectangle *shape_rects;
554    E_Remember *remember;
555
556    E_Border *modal;
557
558    E_Border  *leader;
559    Eina_List *group;
560
561    E_Border  *parent;
562    Eina_List *transients;
563
564    Efreet_Desktop *desktop;
565    E_Pointer *pointer;
566
567    unsigned char comp_hidden   : 1;
568    
569    unsigned char post_move   : 1;
570    unsigned char post_resize : 1;
571    unsigned char post_show : 1;
572    Ecore_Idle_Enterer *post_job;
573
574    Eina_Bool argb;
575 };
576
577 struct _E_Border_Pending_Move_Resize 
578 {
579    int x, y, w, h;
580    unsigned char move : 1;
581    unsigned char resize : 1;
582    unsigned char without_border : 1;
583    unsigned int  serial;
584 };
585
586 struct _E_Border_Hook
587 {
588    E_Border_Hook_Point   hookpoint;
589    void                (*func) (void *data, void *bd);
590    void                 *data;
591    unsigned char         delete_me : 1;
592 };
593
594 struct _E_Event_Border_Simple
595 {
596    E_Border *border;
597 };
598
599 struct _E_Event_Border_Zone_Set
600 {
601    E_Border *border;
602    E_Zone   *zone;
603 };
604
605 struct _E_Event_Border_Desk_Set
606 {
607    E_Border *border;
608    E_Desk   *desk;
609 };
610
611 struct _E_Event_Border_Stack
612 {
613    E_Border *border, *stack;
614    E_Stacking type;
615 };
616
617 EINTERN int       e_border_init(void);
618 EINTERN int       e_border_shutdown(void);
619
620 EAPI E_Border *e_border_new(E_Container *con, Ecore_X_Window win, int first_map, int internal);
621 EAPI void      e_border_free(E_Border *bd);
622 EAPI void      e_border_ref(E_Border *bd);
623 EAPI void      e_border_unref(E_Border *bd);
624 EAPI void      e_border_res_change_geometry_save(E_Border *bd);
625 EAPI void      e_border_res_change_geometry_restore(E_Border *bd);
626     
627 EAPI void      e_border_zone_set(E_Border *bd, E_Zone *zone);
628 EAPI void      e_border_desk_set(E_Border *bd, E_Desk *desk);
629 EAPI void      e_border_show(E_Border *bd);
630 EAPI void      e_border_hide(E_Border *bd, int manage);
631 EAPI void      e_border_move(E_Border *bd, int x, int y);
632 EAPI void      e_border_move_without_border(E_Border *bd, int x, int y);
633 EAPI void      e_border_center(E_Border *bd);
634 EAPI void      e_border_center_pos_get(E_Border *bd, int *x, int *y);
635 EAPI void      e_border_fx_offset(E_Border *bd, int x, int y);
636 EAPI void      e_border_resize(E_Border *bd, int w, int h);
637 EAPI void      e_border_resize_without_border(E_Border *bd, int w, int h);
638 EAPI void      e_border_move_resize(E_Border *bd, int x, int y, int w, int h);
639 EAPI void      e_border_move_resize_without_border(E_Border *bd, int x, int y, int w, int h);
640 EAPI void      e_border_layer_set(E_Border *bd, int layer);
641 EAPI void      e_border_raise(E_Border *bd);
642 EAPI void      e_border_lower(E_Border *bd);
643 EAPI void      e_border_stack_above(E_Border *bd, E_Border *above);
644 EAPI void      e_border_stack_below(E_Border *bd, E_Border *below);
645 EAPI void      e_border_focus_latest_set(E_Border *bd);
646 EAPI void      e_border_raise_latest_set(E_Border *bd);
647 EAPI void      e_border_focus_set_with_pointer(E_Border *bd);
648 EAPI void      e_border_focus_set(E_Border *bd, int focus, int set);
649 EAPI void      e_border_shade(E_Border *bd, E_Direction dir);
650 EAPI void      e_border_unshade(E_Border *bd, E_Direction dir);
651 EAPI void      e_border_maximize(E_Border *bd, E_Maximize max);
652 EAPI void      e_border_unmaximize(E_Border *bd, E_Maximize max);
653 EAPI void      e_border_fullscreen(E_Border *bd, E_Fullscreen policy);
654 EAPI void      e_border_unfullscreen(E_Border *bd);
655 EAPI void      e_border_iconify(E_Border *bd);
656 EAPI void      e_border_uniconify(E_Border *bd);
657 EAPI void      e_border_stick(E_Border *bd);
658 EAPI void      e_border_unstick(E_Border *bd);
659 EAPI void      e_border_pinned_set(E_Border *bd, int set);
660
661 EAPI E_Border *e_border_find_by_client_window(Ecore_X_Window win);
662 EAPI E_Border *e_border_find_all_by_client_window(Ecore_X_Window win);
663 EAPI E_Border *e_border_find_by_frame_window(Ecore_X_Window win);
664 EAPI E_Border *e_border_find_by_window(Ecore_X_Window win);
665 EAPI E_Border *e_border_find_by_alarm(Ecore_X_Sync_Alarm alarm);
666 EAPI E_Border *e_border_focused_get(void);
667
668 EAPI void      e_border_idler_before(void);
669
670 EAPI Eina_List *e_border_client_list(void);
671
672 EAPI void e_border_act_move_keyboard(E_Border *bd);
673 EAPI void e_border_act_resize_keyboard(E_Border *bd);
674
675 EAPI void e_border_act_move_begin(E_Border *bd, Ecore_Event_Mouse_Button *ev);
676 EAPI void e_border_act_move_end(E_Border *bd, Ecore_Event_Mouse_Button *ev);
677 EAPI void e_border_act_resize_begin(E_Border *bd, Ecore_Event_Mouse_Button *ev);
678 EAPI void e_border_act_resize_end(E_Border *bd, Ecore_Event_Mouse_Button *ev);
679 EAPI void e_border_act_menu_begin(E_Border *bd, Ecore_Event_Mouse_Button *ev, int key);
680 EAPI void e_border_act_close_begin(E_Border *bd);
681 EAPI void e_border_act_kill_begin(E_Border *bd);
682
683 EAPI Evas_Object *e_border_icon_add(E_Border *bd, Evas *evas);
684
685 EAPI void e_border_button_bindings_ungrab_all(void);
686 EAPI void e_border_button_bindings_grab_all(void);
687
688 EAPI Eina_List *e_border_focus_stack_get(void);
689 EAPI Eina_List *e_border_lost_windows_get(E_Zone *zone);
690
691 EAPI void e_border_ping(E_Border *bd);
692 EAPI void e_border_move_cancel(void);
693 EAPI void e_border_resize_cancel(void);
694 EAPI void e_border_frame_recalc(E_Border *bd);
695 EAPI Eina_List *e_border_immortal_windows_get(void);
696
697 EAPI const char *e_border_name_get(const E_Border *bd);
698
699 EAPI void e_border_signal_move_begin(E_Border *bd, const char *sig, const char *src);
700 EAPI void e_border_signal_move_end(E_Border *bd, const char *sig, const char *src);
701 EAPI int  e_border_resizing_get(E_Border *bd);
702 EAPI void e_border_signal_resize_begin(E_Border *bd, const char *dir, const char *sig, const char *src);
703 EAPI void e_border_signal_resize_end(E_Border *bd, const char *dir, const char *sig, const char *src);
704 EAPI void e_border_resize_limit(E_Border *bd, int *w, int *h);
705
706 EAPI E_Border_Hook *e_border_hook_add(E_Border_Hook_Point hookpoint, void (*func) (void *data, void *bd), void *data);
707 EAPI void e_border_hook_del(E_Border_Hook *bh);
708 EAPI void e_border_focus_track_freeze(void);
709 EAPI void e_border_focus_track_thaw(void);
710
711 EAPI E_Border *e_border_under_pointer_get(E_Desk *desk, E_Border *exclude);
712 EAPI int e_border_pointer_warp_to_center(E_Border *bd);
713
714 EAPI void e_border_comp_hidden_set(E_Border *bd, Eina_Bool hidden);
715
716 extern EAPI int E_EVENT_BORDER_RESIZE;
717 extern EAPI int E_EVENT_BORDER_MOVE;
718 extern EAPI int E_EVENT_BORDER_ADD;
719 extern EAPI int E_EVENT_BORDER_SHOW;
720 extern EAPI int E_EVENT_BORDER_HIDE;
721 extern EAPI int E_EVENT_BORDER_REMOVE;
722 extern EAPI int E_EVENT_BORDER_ICONIFY;
723 extern EAPI int E_EVENT_BORDER_UNICONIFY;
724 extern EAPI int E_EVENT_BORDER_STICK;
725 extern EAPI int E_EVENT_BORDER_UNSTICK;
726 extern EAPI int E_EVENT_BORDER_ZONE_SET;
727 extern EAPI int E_EVENT_BORDER_DESK_SET;
728 extern EAPI int E_EVENT_BORDER_STACK;
729 extern EAPI int E_EVENT_BORDER_ICON_CHANGE;
730 extern EAPI int E_EVENT_BORDER_URGENT_CHANGE;
731 extern EAPI int E_EVENT_BORDER_FOCUS_IN;
732 extern EAPI int E_EVENT_BORDER_FOCUS_OUT;
733 extern EAPI int E_EVENT_BORDER_PROPERTY;
734 extern EAPI int E_EVENT_BORDER_FULLSCREEN;
735 extern EAPI int E_EVENT_BORDER_UNFULLSCREEN;
736
737 #endif
738 #endif