enlightenment/src/bin/e_border.h

454 lines
11 KiB
C
Raw Normal View History

2005-02-07 05:51:09 -08:00
/*
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
*/
#ifdef E_TYPEDEFS
typedef enum _E_Direction
{
2005-02-07 05:51:09 -08:00
E_DIRECTION_UP,
E_DIRECTION_DOWN,
E_DIRECTION_LEFT,
E_DIRECTION_RIGHT
} E_Direction;
typedef enum _E_Transition
{
2005-02-07 05:51:09 -08:00
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
{
2005-05-20 11:46:32 -07:00
E_FOCUS_CLICK,
E_FOCUS_MOUSE,
E_FOCUS_SLOPPY
} E_Focus_Policy;
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;
2005-02-10 07:21:23 -08:00
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_Raise E_Event_Border_Raise;
typedef struct _E_Event_Border_Lower E_Event_Border_Lower;
typedef struct _E_Event_Border_Icon_Change E_Event_Border_Icon_Change;
#else
#ifndef E_BORDER_H
#define E_BORDER_H
#define E_BORDER_TYPE 0xE0b01002
struct _E_Border
{
E_Object e_obj_inherit;
struct {
2005-02-07 05:51:09 -08:00
struct {
int x, y, w, h;
int mx, my;
} current, last_down[3], last_up[3];
} mouse;
2005-02-07 05:51:09 -08:00
struct {
2005-02-07 05:51:09 -08:00
struct {
int x, y, w, h;
int mx, my;
int button;
} down;
} moveinfo;
2005-02-07 05:51:09 -08:00
Ecore_X_Window win;
int x, y, w, h;
int ref;
E_Zone *zone;
E_Desk *desk;
Evas_List *handlers;
2005-02-07 05:51:09 -08:00
struct {
int l, r, t, b;
} client_inset;
2005-02-07 05:51:09 -08:00
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;
struct {
Ecore_X_Window shell_win;
Ecore_X_Window win;
int x, y, w, h;
struct {
unsigned char changed : 1;
char *name;
} border;
unsigned char shaped : 1;
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_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 {
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 window_role : 1;
} fetch;
} icccm;
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;
struct {
pid_t pid;
2005-05-12 06:13:53 -07:00
unsigned int desktop;
char *name;
char *icon_name;
struct {
unsigned int *data;
int width;
int height;
int size;
} icon;
2005-06-03 05:23:34 -07:00
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;
2005-05-16 08:43:15 -07:00
/* NetWM Window state */
struct {
unsigned char modal : 1;
unsigned char sticky : 1;
unsigned char shaded : 1;
unsigned char hidden : 1;
unsigned char maximized_v : 1;
unsigned char maximized_h : 1;
unsigned char skip_taskbar : 1;
unsigned char skip_pager : 1;
unsigned char fullscreen : 1;
E_Stacking stacking;
} state;
Ecore_X_Window_Type type;
struct {
unsigned char name : 1;
unsigned char icon_name : 1;
unsigned char icon : 1;
2005-06-03 05:23:34 -07:00
unsigned char user_time : 1;
unsigned char strut : 1;
unsigned char type : 1;
/* No, fetch on new_client, shouldn't be changed after map.
unsigned char pid : 1;
*/
/* No, ignore this
unsigned char desktop : 1;
*/
/* No, fetch on new_client, shouldn't be changed after map.
unsigned char type : 1;
*/
/* No, don't fetch state, update on client message
unsigned char state : 1;
*/
} fetch;
struct {
unsigned char state : 1;
} update;
} netwm;
Ecore_X_Window_Attributes initial_attributes;
} client;
E_Container_Shape *shape;
unsigned char visible : 1;
unsigned char moving : 1;
unsigned char focused : 1;
unsigned char new_client : 1;
unsigned char re_manage : 1;
unsigned char shading : 1;
unsigned char shaded : 1;
unsigned char maximized : 1;
unsigned char iconic : 1;
unsigned char sticky : 1;
unsigned char shaped : 1;
unsigned char need_shape_merge : 1;
unsigned char need_shape_export : 1;
unsigned char fullscreen : 1;
unsigned char already_unparented : 1;
unsigned char need_reparent : 1;
unsigned char button_grabbed : 1;
unsigned char grab : 1;
unsigned char changed : 1;
unsigned char ignore_first_unmap;
unsigned char resize_mode;
struct {
int x, y, w, h;
} saved;
struct {
double start;
double val;
int x, y;
E_Direction dir;
Ecore_Animator *anim;
} shade;
Evas_List *stick_desks;
E_Menu *border_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 *dangling_ref_check;
};
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;
};
2005-02-10 07:21:23 -08:00
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_Raise
{
E_Border *border, *above;
};
struct _E_Event_Border_Lower
{
E_Border *border, *below;
};
struct _E_Event_Border_Icon_Change
{
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);
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_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_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_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);
EAPI void e_border_unmaximize(E_Border *bd);
EAPI void e_border_fullscreen(E_Border *bd);
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_focused_get(void);
EAPI void e_border_idler_before(void);
EAPI Evas_List *e_border_clients_get();
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);
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;
2005-02-10 07:21:23 -08:00
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_RAISE;
extern EAPI int E_EVENT_BORDER_LOWER;
extern EAPI int E_EVENT_BORDER_ICON_CHANGE;
#endif
#endif