/* * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 */ #ifdef E_TYPEDEFS typedef enum _E_Direction { E_DIRECTION_UP, E_DIRECTION_DOWN, E_DIRECTION_LEFT, E_DIRECTION_RIGHT } E_Direction; typedef enum _E_Transition { E_TRANSITION_LINEAR, E_TRANSITION_SINUSOIDAL, E_TRANSITION_ACCELERATE, E_TRANSITION_DECELERATE } E_Transition; typedef enum _E_Stacking { E_STACKING_NONE, E_STACKING_ABOVE, E_STACKING_BELOW } E_Stacking; typedef enum _E_Focus_Policy { E_FOCUS_CLICK, E_FOCUS_MOUSE, E_FOCUS_SLOPPY } E_Focus_Policy; typedef enum _E_Focus_Setting { E_FOCUS_NONE, E_FOCUS_NEW_WINDOW, E_FOCUS_NEW_DIALOG, E_FOCUS_NEW_DIALOG_IF_OWNER_FOCUSED } E_Focus_Setting; typedef enum _E_Maximize { E_MAXIMIZE_NONE = 0x00000000, E_MAXIMIZE_FULLSCREEN = 0x00000001, E_MAXIMIZE_SMART = 0x00000002, E_MAXIMIZE_EXPAND = 0x00000003, E_MAXIMIZE_FILL = 0x00000004, E_MAXIMIZE_TYPE = 0x0000000f, E_MAXIMIZE_VERTICAL = 0x00000010, E_MAXIMIZE_HORIZONTAL = 0x00000020, E_MAXIMIZE_BOTH = 0x00000030, E_MAXIMIZE_DIRECTION = 0x000000f0 } E_Maximize; typedef enum _E_Fullscreen { /* Resize window */ E_FULLSCREEN_RESIZE, /* Change screen resoultion and resize window */ E_FULLSCREEN_ZOOM } E_Fullscreen; typedef enum _E_Window_Placement { E_WINDOW_PLACEMENT_SMART, E_WINDOW_PLACEMENT_ANTIGADGET, E_WINDOW_PLACEMENT_CURSOR, E_WINDOW_PLACEMENT_MANUAL } E_Window_Placement; typedef struct _E_Border E_Border; typedef struct _E_Border_Pending_Move_Resize E_Border_Pending_Move_Resize; typedef struct _E_Event_Border_Resize E_Event_Border_Resize; typedef struct _E_Event_Border_Move E_Event_Border_Move; typedef struct _E_Event_Border_Add E_Event_Border_Add; typedef struct _E_Event_Border_Remove E_Event_Border_Remove; typedef struct _E_Event_Border_Show E_Event_Border_Show; typedef struct _E_Event_Border_Hide E_Event_Border_Hide; typedef struct _E_Event_Border_Iconify E_Event_Border_Iconify; typedef struct _E_Event_Border_Uniconify E_Event_Border_Uniconify; typedef struct _E_Event_Border_Stick E_Event_Border_Stick; typedef struct _E_Event_Border_Unstick E_Event_Border_Unstick; typedef struct _E_Event_Border_Zone_Set E_Event_Border_Zone_Set; typedef struct _E_Event_Border_Desk_Set E_Event_Border_Desk_Set; typedef struct _E_Event_Border_Stack E_Event_Border_Stack; typedef struct _E_Event_Border_Icon_Change E_Event_Border_Icon_Change; typedef struct _E_Event_Border_Focus_In E_Event_Border_Focus_In; typedef struct _E_Event_Border_Focus_Out E_Event_Border_Focus_Out; typedef struct _E_Event_Border_Property E_Event_Border_Property; #else #ifndef E_BORDER_H #define E_BORDER_H #define E_BORDER_TYPE 0xE0b01002 struct _E_Border { E_Object e_obj_inherit; struct { struct { int x, y, w, h; int mx, my; } current, last_down[3], last_up[3]; } mouse; struct { struct { int x, y, w, h; int mx, my; int button; } down; } moveinfo; Ecore_X_Window win; int x, y, w, h; int ref; E_Zone *zone; E_Desk *desk; Evas_List *handlers; struct { int l, r, t, b; } client_inset; Ecore_Evas *bg_ecore_evas; Evas *bg_evas; Ecore_X_Window bg_win; Ecore_X_Window bg_subwin; Evas_Object *bg_object; Evas_Object *icon_object; Ecore_X_Window event_win; const char *internal_icon; struct { Ecore_X_Window shell_win; Ecore_X_Window win; int x, y, w, h; struct { unsigned char changed : 1; unsigned char user_selected : 1; const char *name; } border; unsigned char shaped : 1; unsigned char argb : 1; /* ICCCM */ struct { char *title; char *name; char *class; char *icon_name; char *machine; int min_w, min_h; int max_w, max_h; int base_w, base_h; int step_w, step_h; int start_x, start_y; double min_aspect, max_aspect; Ecore_X_Window_State_Hint initial_state; Ecore_X_Window_State_Hint state; Ecore_X_Pixmap icon_pixmap; Ecore_X_Pixmap icon_mask; Ecore_X_Window icon_window; Ecore_X_Window window_group; Ecore_X_Window transient_for; Ecore_X_Window client_leader; Ecore_X_Gravity gravity; char *window_role; unsigned char take_focus : 1; unsigned char accepts_focus : 1; unsigned char urgent : 1; unsigned char delete_request : 1; unsigned char request_pos : 1; struct { int argc; char **argv; } command; struct { unsigned char title : 1; unsigned char name_class : 1; unsigned char icon_name : 1; unsigned char machine : 1; unsigned char hints : 1; unsigned char size_pos_hints : 1; unsigned char protocol : 1; unsigned char transient_for : 1; unsigned char client_leader : 1; unsigned char window_role : 1; unsigned char state : 1; unsigned char command : 1; } fetch; } icccm; /* MWM */ struct { Ecore_X_MWM_Hint_Func func; Ecore_X_MWM_Hint_Decor decor; Ecore_X_MWM_Hint_Input input; unsigned char exists : 1; unsigned char borderless : 1; struct { unsigned char hints : 1; } fetch; } mwm; /* NetWM */ struct { pid_t pid; unsigned int desktop; char *name; char *icon_name; Ecore_X_Icon *icons; int num_icons; unsigned int user_time; struct { int left; int right; int top; int bottom; int left_start_y; int left_end_y; int right_start_y; int right_end_y; int top_start_x; int top_end_x; int bottom_start_x; int bottom_end_x; } strut; unsigned char ping : 1; struct { unsigned char request : 1; unsigned int wait; Ecore_X_Sync_Alarm alarm; Ecore_X_Sync_Counter counter; unsigned int serial; double send_time; } sync; /* NetWM Window state */ struct { unsigned char modal : 1; unsigned char sticky : 1; unsigned char maximized_v : 1; unsigned char maximized_h : 1; unsigned char shaded : 1; unsigned char skip_taskbar : 1; unsigned char skip_pager : 1; unsigned char hidden : 1; unsigned char fullscreen : 1; E_Stacking stacking; } state; /* NetWM Window allowed actions */ struct { unsigned char move : 1; unsigned char resize : 1; unsigned char minimize : 1; unsigned char shade : 1; unsigned char stick : 1; unsigned char maximized_h : 1; unsigned char maximized_v : 1; unsigned char fullscreen : 1; unsigned char change_desktop : 1; unsigned char close : 1; } action; Ecore_X_Window_Type type; int startup_id; struct { unsigned char name : 1; unsigned char icon_name : 1; unsigned char icon : 1; unsigned char user_time : 1; unsigned char strut : 1; unsigned char type : 1; unsigned char state : 1; /* No, fetch on new_client, shouldn't be changed after map. unsigned char pid : 1; */ /* No, ignore this unsigned char desktop : 1; */ } fetch; struct { unsigned char state : 1; } update; } netwm; /* Extra e stuff */ struct { struct { unsigned char centered : 1; } state; struct { unsigned char state : 1; } fetch; } e; Ecore_X_Window_Attributes initial_attributes; } client; E_Container_Shape *shape; unsigned int visible : 1; unsigned int await_hide_event; unsigned int moving : 1; unsigned int focused : 1; unsigned int new_client : 1; unsigned int re_manage : 1; unsigned int placed : 1; unsigned int shading : 1; unsigned int shaded : 1; unsigned int iconic : 1; unsigned int deskshow : 1; unsigned int sticky : 1; unsigned int shaped : 1; unsigned int need_shape_merge : 1; unsigned int need_shape_export : 1; unsigned int fullscreen : 1; unsigned int need_fullscreen : 1; unsigned int want_fullscreen : 1; unsigned int already_unparented : 1; unsigned int need_reparent : 1; unsigned int button_grabbed : 1; unsigned int delete_requested : 1; unsigned int ping_ok : 1; unsigned int hung : 1; unsigned int take_focus : 1; unsigned int want_focus : 1; unsigned int user_skip_winlist : 1; unsigned int need_maximize : 1; E_Maximize maximized; unsigned int borderless : 1; const char *bordername; unsigned int lock_user_location : 1; /*DONE*/ unsigned int lock_client_location : 1; /*DONE*/ unsigned int lock_user_size : 1; /*DONE*/ unsigned int lock_client_size : 1; /*DONE*/ unsigned int lock_user_stacking : 1; /*DONE*/ unsigned int lock_client_stacking : 1; /*DONE*/ unsigned int lock_user_iconify : 1; /*DONE*/ unsigned int lock_client_iconify : 1; /*DONE*/ unsigned int lock_user_desk : 1; unsigned int lock_client_desk : 1; unsigned int lock_user_sticky : 1; /*DONE*/ unsigned int lock_client_sticky : 1; /*DONE*/ unsigned int lock_user_shade : 1; /*DONE*/ unsigned int lock_client_shade : 1; /*DONE*/ unsigned int lock_user_maximize : 1; /*DONE*/ unsigned int lock_client_maximize : 1; /*DONE*/ unsigned int lock_user_fullscreen : 1; /*DONE*/ unsigned int lock_client_fullscreen : 1; /*DONE*/ unsigned int lock_border : 1; /*DONE*/ unsigned int lock_close : 1; /*DONE*/ unsigned int lock_focus_in : 1; /*DONE*/ unsigned int lock_focus_out : 1; /*DONE*/ unsigned int lock_life : 1; /*DONE*/ unsigned int internal : 1; Ecore_Evas *internal_ecore_evas; double ping; unsigned char changed : 1; unsigned char ignore_first_unmap; unsigned char resize_mode; struct { int x, y, w, h; } saved; struct { unsigned char valid : 1; int x, y, w, h; struct { int x, y, w, h; } saved; } pre_res_change; struct { double start; double val; int x, y; E_Direction dir; Ecore_Animator *anim; } shade; Evas_List *stick_desks; E_Menu *border_menu; E_Config_Dialog *border_locks_dialog; E_Config_Dialog *border_remember_dialog; E_Config_Dialog *border_border_dialog; E_Menu *border_stacking_menu; E_Menu *border_maximize_menu; Evas_List *pending_move_resize; struct { unsigned char visible : 1; unsigned char pos : 1; unsigned char size : 1; unsigned char stack : 1; unsigned char prop : 1; unsigned char border : 1; unsigned char reset_gravity : 1; unsigned char shading : 1; unsigned char shaded : 1; unsigned char shape : 1; unsigned char icon : 1; } changes; struct { unsigned char start : 1; int x, y; } drag; unsigned int layer; E_Action *cur_mouse_action; Ecore_Timer *raise_timer; Ecore_Timer *ping_timer; Ecore_Timer *kill_timer; int shape_rects_num; Ecore_X_Rectangle *shape_rects; E_Remember *remember; E_Border *modal; E_Border *leader; Evas_List *group; E_Border *parent; Evas_List *transients; E_App *app; E_Pointer *pointer; }; struct _E_Border_Pending_Move_Resize { int x, y, w, h; unsigned char move : 1; unsigned char resize : 1; }; struct _E_Event_Border_Resize { E_Border *border; }; struct _E_Event_Border_Move { E_Border *border; }; struct _E_Event_Border_Add { E_Border *border; }; struct _E_Event_Border_Remove { E_Border *border; }; struct _E_Event_Border_Show { E_Border *border; }; struct _E_Event_Border_Hide { E_Border *border; }; struct _E_Event_Border_Iconify { E_Border *border; }; struct _E_Event_Border_Uniconify { E_Border *border; }; struct _E_Event_Border_Stick { E_Border *border; }; struct _E_Event_Border_Unstick { E_Border *border; }; struct _E_Event_Border_Zone_Set { E_Border *border; E_Zone *zone; }; struct _E_Event_Border_Desk_Set { E_Border *border; E_Desk *desk; }; struct _E_Event_Border_Stack { E_Border *border, *stack; E_Stacking type; }; struct _E_Event_Border_Icon_Change { E_Border *border; }; struct _E_Event_Border_Focus_In { E_Border *border; }; struct _E_Event_Border_Focus_Out { E_Border *border; }; struct _E_Event_Border_Property { E_Border *border; }; EAPI int e_border_init(void); EAPI int e_border_shutdown(void); EAPI E_Border *e_border_new(E_Container *con, Ecore_X_Window win, int first_map, int internal); EAPI void e_border_free(E_Border *bd); EAPI void e_border_ref(E_Border *bd); EAPI void e_border_unref(E_Border *bd); EAPI void e_border_res_change_geometry_save(E_Border *bd); EAPI void e_border_res_change_geometry_restore(E_Border *bd); EAPI void e_border_zone_set(E_Border *bd, E_Zone *zone); EAPI void e_border_desk_set(E_Border *bd, E_Desk *desk); EAPI void e_border_show(E_Border *bd); EAPI void e_border_hide(E_Border *bd, int manage); EAPI void e_border_move(E_Border *bd, int x, int y); EAPI void e_border_resize(E_Border *bd, int w, int h); EAPI void e_border_move_resize(E_Border *bd, int x, int y, int w, int h); EAPI void e_border_layer_set(E_Border *bd, int layer); EAPI void e_border_raise(E_Border *bd); EAPI void e_border_lower(E_Border *bd); EAPI void e_border_stack_above(E_Border *bd, E_Border *above); EAPI void e_border_stack_below(E_Border *bd, E_Border *below); EAPI void e_border_focus_latest_set(E_Border *bd); EAPI void e_border_focus_set(E_Border *bd, int focus, int set); EAPI void e_border_shade(E_Border *bd, E_Direction dir); EAPI void e_border_unshade(E_Border *bd, E_Direction dir); EAPI void e_border_maximize(E_Border *bd, E_Maximize max); EAPI void e_border_unmaximize(E_Border *bd, E_Maximize max); EAPI void e_border_fullscreen(E_Border *bd, E_Fullscreen policy); EAPI void e_border_unfullscreen(E_Border *bd); EAPI void e_border_iconify(E_Border *bd); EAPI void e_border_uniconify(E_Border *bd); EAPI void e_border_stick(E_Border *bd); EAPI void e_border_unstick(E_Border *bd); EAPI E_Border *e_border_find_by_client_window(Ecore_X_Window win); EAPI E_Border *e_border_find_by_frame_window(Ecore_X_Window win); EAPI E_Border *e_border_find_by_window(Ecore_X_Window win); EAPI E_Border *e_border_find_by_alarm(Ecore_X_Sync_Alarm alarm); EAPI E_Border *e_border_focused_get(void); EAPI void e_border_idler_before(void); EAPI Evas_List *e_border_client_list(void); EAPI void e_border_act_move_begin(E_Border *bd, Ecore_X_Event_Mouse_Button_Down *ev); EAPI void e_border_act_move_end(E_Border *bd, Ecore_X_Event_Mouse_Button_Up *ev); EAPI void e_border_act_resize_begin(E_Border *bd, Ecore_X_Event_Mouse_Button_Down *ev); EAPI void e_border_act_resize_end(E_Border *bd, Ecore_X_Event_Mouse_Button_Up *ev); EAPI void e_border_act_menu_begin(E_Border *bd, Ecore_X_Event_Mouse_Button_Down *ev, int key); EAPI void e_border_act_close_begin(E_Border *bd); EAPI void e_border_act_kill_begin(E_Border *bd); EAPI Evas_Object *e_border_icon_add(E_Border *bd, Evas *evas); EAPI void e_border_button_bindings_ungrab_all(void); EAPI void e_border_button_bindings_grab_all(void); EAPI Evas_List *e_border_focus_stack_get(void); EAPI Evas_List *e_border_lost_windows_get(E_Zone *zone); EAPI void e_border_ping(E_Border *bd); EAPI void e_border_move_cancel(void); EAPI void e_border_resize_cancel(void); EAPI void e_border_frame_recalc(E_Border *bd); EAPI Evas_List *e_border_immortal_windows_get(void); EAPI const char *e_border_name_get(E_Border *bd); EAPI void e_border_signal_move_begin(E_Border *bd, const char *sig, const char *src); EAPI void e_border_signal_move_end(E_Border *bd, const char *sig, const char *src); EAPI int e_border_resizing_get(E_Border *bd); EAPI void e_border_signal_resize_begin(E_Border *bd, const char *dir, const char *sig, const char *src); EAPI void e_border_signal_resize_end(E_Border *bd, const char *dir, const char *sig, const char *src); EAPI void e_border_resize_limit(E_Border *bd, int *w, int *h); extern EAPI int E_EVENT_BORDER_RESIZE; extern EAPI int E_EVENT_BORDER_MOVE; extern EAPI int E_EVENT_BORDER_ADD; extern EAPI int E_EVENT_BORDER_SHOW; extern EAPI int E_EVENT_BORDER_HIDE; extern EAPI int E_EVENT_BORDER_REMOVE; extern EAPI int E_EVENT_BORDER_ICONIFY; extern EAPI int E_EVENT_BORDER_UNICONIFY; extern EAPI int E_EVENT_BORDER_STICK; extern EAPI int E_EVENT_BORDER_UNSTICK; extern EAPI int E_EVENT_BORDER_ZONE_SET; extern EAPI int E_EVENT_BORDER_DESK_SET; extern EAPI int E_EVENT_BORDER_STACK; extern EAPI int E_EVENT_BORDER_ICON_CHANGE; extern EAPI int E_EVENT_BORDER_FOCUS_IN; extern EAPI int E_EVENT_BORDER_FOCUS_OUT; extern EAPI int E_EVENT_BORDER_PROPERTY; #endif #endif