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