3 typedef enum _E_Icon_Preference
10 typedef enum _E_Direction
18 typedef enum _E_Transition
21 E_TRANSITION_SINUSOIDAL,
22 E_TRANSITION_ACCELERATE,
23 E_TRANSITION_DECELERATE
26 typedef enum _E_Stacking
33 typedef enum _E_Focus_Policy
40 typedef enum _E_Focus_Setting
45 E_FOCUS_NEW_DIALOG_IF_OWNER_FOCUSED,
46 #ifdef _F_FOCUS_WINDOW_IF_TOP_STACK_
47 E_FOCUS_NEW_WINDOW_IF_TOP_STACK
51 typedef enum _E_Maximize
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
65 typedef enum _E_Fullscreen
69 /* Change screen resoultion and resize window */
73 typedef enum _E_Window_Placement
75 E_WINDOW_PLACEMENT_SMART,
76 E_WINDOW_PLACEMENT_ANTIGADGET,
77 E_WINDOW_PLACEMENT_CURSOR,
78 E_WINDOW_PLACEMENT_MANUAL
81 typedef enum _E_Border_Hook_Point
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;
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;
130 #define E_BORDER_TYPE (int) 0xE0b01002
134 E_Object e_obj_inherit;
140 } current, last_down[3], last_up[3];
170 Ecore_Evas *bg_ecore_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;
180 Ecore_X_Window shell_win;
186 unsigned char changed : 1;
187 unsigned char user_selected : 1;
191 unsigned char shaped : 1;
192 unsigned char argb : 1;
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;
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;
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;
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;
250 unsigned char hints : 1;
257 unsigned int desktop;
262 unsigned int user_time;
277 unsigned char ping : 1;
279 unsigned char request : 1;
281 Ecore_X_Sync_Alarm alarm;
282 Ecore_X_Sync_Counter counter;
287 /* NetWM Window state */
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;
301 /* NetWM Window allowed actions */
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;
315 Ecore_X_Window_Type type;
316 Ecore_X_Window_Type *extra_types;
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;
332 unsigned char desktop : 1;
337 unsigned char state : 1;
344 unsigned char centered : 1;
348 unsigned char state : 1;
354 unsigned char soft_menu : 1;
355 unsigned char soft_menus : 1;
358 unsigned char soft_menu : 1;
359 unsigned char soft_menus : 1;
364 unsigned char state : 1;
365 unsigned char vkbd : 1;
367 Ecore_X_Virtual_Keyboard_State state;
368 unsigned char vkbd : 1;
377 unsigned char conformant : 1;
379 unsigned char conformant : 1;
385 unsigned char state : 1;
388 unsigned int major : 1;
389 unsigned int minor : 1;
391 unsigned char quickpanel : 1;
392 unsigned char zone : 1;
394 Ecore_X_Illume_Quickpanel_State state;
397 unsigned int major : 1;
398 unsigned int minor : 1;
400 unsigned char quickpanel : 1;
407 unsigned char drag : 1;
408 unsigned char locked : 1;
410 unsigned char drag : 1;
411 unsigned char locked : 1;
415 Ecore_X_Window_Attributes initial_attributes;
418 E_Container_Shape *shape;
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;
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*/
477 unsigned int internal : 1;
478 unsigned int internal_no_remember : 1;
479 unsigned int stolen : 1;
481 Ecore_Evas *internal_ecore_evas;
485 unsigned char changed : 1;
487 unsigned char icon_preference;
488 unsigned char ignore_first_unmap;
489 unsigned char resize_mode;
495 E_Maximize maximized;
499 unsigned char valid : 1;
511 Ecore_Animator *anim;
519 Eina_List *stick_desks;
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;
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;
543 unsigned char start : 1;
548 E_Action *cur_mouse_action;
549 Ecore_Timer *raise_timer;
550 Ecore_Poller *ping_poller;
551 Ecore_Timer *kill_timer;
553 Ecore_X_Rectangle *shape_rects;
554 E_Remember *remember;
562 Eina_List *transients;
564 Efreet_Desktop *desktop;
567 unsigned char comp_hidden : 1;
569 unsigned char post_move : 1;
570 unsigned char post_resize : 1;
571 unsigned char post_show : 1;
572 Ecore_Idle_Enterer *post_job;
577 struct _E_Border_Pending_Move_Resize
580 unsigned char move : 1;
581 unsigned char resize : 1;
582 unsigned char without_border : 1;
586 struct _E_Border_Hook
588 E_Border_Hook_Point hookpoint;
589 void (*func) (void *data, void *bd);
591 unsigned char delete_me : 1;
594 struct _E_Event_Border_Simple
599 struct _E_Event_Border_Zone_Set
605 struct _E_Event_Border_Desk_Set
611 struct _E_Event_Border_Stack
613 E_Border *border, *stack;
617 EINTERN int e_border_init(void);
618 EINTERN int e_border_shutdown(void);
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);
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);
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);
668 EAPI void e_border_idler_before(void);
670 EAPI Eina_List *e_border_client_list(void);
672 EAPI void e_border_act_move_keyboard(E_Border *bd);
673 EAPI void e_border_act_resize_keyboard(E_Border *bd);
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);
683 EAPI Evas_Object *e_border_icon_add(E_Border *bd, Evas *evas);
685 EAPI void e_border_button_bindings_ungrab_all(void);
686 EAPI void e_border_button_bindings_grab_all(void);
688 EAPI Eina_List *e_border_focus_stack_get(void);
689 EAPI Eina_List *e_border_lost_windows_get(E_Zone *zone);
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);
697 EAPI const char *e_border_name_get(const E_Border *bd);
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);
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);
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);
714 EAPI void e_border_comp_hidden_set(E_Border *bd, Eina_Bool hidden);
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;