3 typedef enum _E_Icon_Preference
10 typedef enum _E_Direction
18 typedef enum _E_Transition
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
31 typedef enum _E_Stacking
38 typedef enum _E_Focus_Policy
45 typedef enum _E_Focus_Setting
50 E_FOCUS_NEW_DIALOG_IF_OWNER_FOCUSED,
51 #ifdef _F_FOCUS_WINDOW_IF_TOP_STACK_
52 E_FOCUS_NEW_WINDOW_IF_TOP_STACK
56 typedef enum _E_Maximize
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
70 typedef enum _E_Fullscreen
74 /* Change screen resoultion and resize window */
78 typedef enum _E_Window_Placement
80 E_WINDOW_PLACEMENT_SMART,
81 E_WINDOW_PLACEMENT_ANTIGADGET,
82 E_WINDOW_PLACEMENT_CURSOR,
83 E_WINDOW_PLACEMENT_MANUAL
86 typedef enum _E_Border_Hook_Point
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;
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;
135 #define E_BORDER_TYPE (int) 0xE0b01002
139 E_Object e_obj_inherit;
145 } current, last_down[3], last_up[3];
175 Ecore_Evas *bg_ecore_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;
186 Ecore_X_Window shell_win;
192 unsigned char changed : 1;
193 unsigned char user_selected : 1;
197 unsigned char shaped : 1;
198 unsigned char argb : 1;
205 const char *icon_name;
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;
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;
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;
256 unsigned char hints : 1;
263 unsigned int desktop;
265 const char *icon_name;
268 unsigned int user_time;
283 unsigned char ping : 1;
285 unsigned char request : 1;
287 Ecore_X_Sync_Alarm alarm;
288 Ecore_X_Sync_Counter counter;
293 /* NetWM Window state */
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;
307 /* NetWM Window allowed actions */
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;
321 Ecore_X_Window_Type type;
322 Ecore_X_Window_Type *extra_types;
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;
338 unsigned char desktop : 1;
343 unsigned char state : 1;
353 unsigned char updated : 1;
355 Ecore_X_Window video_parent;
356 E_Border *video_parent_border;
357 Eina_List *video_child;
361 unsigned char centered : 1;
362 unsigned char video : 1;
363 unsigned char profile_list : 1;
367 unsigned char state : 1;
368 unsigned char video_parent : 1;
369 unsigned char video_position : 1;
370 unsigned char profile_list : 1;
376 unsigned char soft_menu : 1;
377 unsigned char soft_menus : 1;
380 unsigned char soft_menu : 1;
381 unsigned char soft_menus : 1;
386 unsigned char state : 1;
387 unsigned char vkbd : 1;
389 Ecore_X_Virtual_Keyboard_State state;
390 unsigned char vkbd : 1;
399 unsigned char conformant : 1;
401 unsigned char conformant : 1;
407 unsigned char state : 1;
410 unsigned int major : 1;
411 unsigned int minor : 1;
413 unsigned char quickpanel : 1;
414 unsigned char zone : 1;
416 Ecore_X_Illume_Quickpanel_State state;
419 unsigned int major : 1;
420 unsigned int minor : 1;
422 unsigned char quickpanel : 1;
429 unsigned char drag : 1;
430 unsigned char locked : 1;
432 unsigned char drag : 1;
433 unsigned char locked : 1;
438 unsigned int need_change : 1;
442 unsigned char down : 1;
443 unsigned char locked : 1;
444 unsigned char resize : 1;
445 int x, y, dx, dy, sx, sy;
452 Ecore_X_Window_Attributes initial_attributes;
455 E_Container_Shape *shape;
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;
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*/
514 unsigned int internal : 1;
515 unsigned int internal_no_remember : 1;
516 unsigned int stolen : 1;
518 Ecore_Evas *internal_ecore_evas;
522 unsigned char changed : 1;
524 unsigned char icon_preference;
525 unsigned char ignore_first_unmap;
526 unsigned char resize_mode;
532 E_Maximize maximized;
536 unsigned char valid : 1;
548 Ecore_Animator *anim;
556 Eina_List *stick_desks;
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;
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;
580 unsigned char start : 1;
585 E_Action *cur_mouse_action;
586 Ecore_Timer *raise_timer;
587 Ecore_Poller *ping_poller;
588 Ecore_Timer *kill_timer;
590 Ecore_X_Rectangle *shape_rects;
591 E_Remember *remember;
599 Eina_List *transients;
601 Efreet_Desktop *desktop;
604 unsigned char comp_hidden : 1;
606 unsigned char post_move : 1;
607 unsigned char post_resize : 1;
608 unsigned char post_show : 1;
610 Ecore_Idle_Enterer *post_job;
614 int tmp_input_hidden;
617 struct _E_Border_Pending_Move_Resize
620 unsigned char move : 1;
621 unsigned char resize : 1;
622 unsigned char without_border : 1;
626 struct _E_Border_Hook
628 E_Border_Hook_Point hookpoint;
629 void (*func) (void *data, void *bd);
631 unsigned char delete_me : 1;
634 struct _E_Event_Border_Simple
639 struct _E_Event_Border_Zone_Set
645 struct _E_Event_Border_Desk_Set
651 struct _E_Event_Border_Stack
653 E_Border *border, *stack;
657 EINTERN int e_border_init(void);
658 EINTERN int e_border_shutdown(void);
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);
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);
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);
708 EAPI void e_border_idler_before(void);
710 EAPI Eina_List *e_border_client_list(void);
712 EAPI void e_border_act_move_keyboard(E_Border *bd);
713 EAPI void e_border_act_resize_keyboard(E_Border *bd);
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);
723 EAPI Evas_Object *e_border_icon_add(E_Border *bd, Evas *evas);
725 EAPI void e_border_button_bindings_ungrab_all(void);
726 EAPI void e_border_button_bindings_grab_all(void);
728 EAPI Eina_List *e_border_focus_stack_get(void);
729 EAPI Eina_List *e_border_lost_windows_get(E_Zone *zone);
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);
737 EAPI const char *e_border_name_get(const E_Border *bd);
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);
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);
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);
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);
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;