enlightenment/src/bin/e_desk.h

106 lines
3.1 KiB
C
Raw Permalink Normal View History

#ifdef E_TYPEDEFS
typedef struct _E_Desk E_Desk;
typedef struct _E_Event_Desk_Show E_Event_Desk_Show;
typedef struct _E_Event_Desk_Before_Show E_Event_Desk_Before_Show;
typedef struct _E_Event_Desk_After_Show E_Event_Desk_After_Show;
typedef struct _E_Event_Desk_Name_Change E_Event_Desk_Name_Change;
typedef struct _E_Event_Desk_Window_Profile_Change E_Event_Desk_Window_Profile_Change;
typedef void (*E_Desk_Flip_Cb)(void *data, E_Desk *desk, int dx, int dy, Eina_Bool show);
#else
#ifndef E_DESK_H
#define E_DESK_H
#define E_DESK_TYPE (int)0xE0b01005
typedef enum
{
E_DESKFLIP_ANIMATION_MODE_OFF,
E_DESKFLIP_ANIMATION_MODE_PANE,
E_DESKFLIP_ANIMATION_MODE_ZOOM
} E_Deskflip_Animation_Mode;
struct _E_Desk
{
E_Object e_obj_inherit;
E_Zone *zone;
Eina_Stringshare *name;
Eina_Stringshare *window_profile;
int x, y;
unsigned char visible E_BITFIELD;
unsigned int deskshow_toggle E_BITFIELD;
compositor rewrite / charlie-foxtrot situation huge fustercluck commit because there wasn't really a way to separate out the changes. better to just rip it all out at once. * compositor and window management completely rewritten. this was the goal for E19, but it pretty much required everything existing to be scrapped since it wasn't optimized, streamlined, or sensible. now instead of having the compositor strapped to the window manager like an outboard motor, it's housed more like an automobile engine. ** various comp structs have been merged into other places (eg. E_Comp_Zone is now just part of E_Zone where applicable), leading to a large deduplication of attributes ** awful E_Comp_Win is totally dead, having been replaced with e_comp_object smart objects which work just like normal canvas objects ** protocol-specific window management and compositor functionality is now kept exclusively in backend files ** e_pixmap api provides generic client finding and rendering api ** screen/xinerama screens are now provided directly by compositor on startup and re-set on change ** e_comp_render_update finally replaced with eina_tiler ** wayland compositor no longer creates X windows ** compositor e_layout removed entirely * e_container is gone. this was made unnecessary in E18, but I kept it to avoid having too much code churn in one release. its sole purpose was to catch some events and handle window stacking, both of which are now just done by the compositor infra * e_manager is just for screensaver and keybind stuff now, possibly remove later? * e_border is gone along with a lot of its api. e_client has replaced it, and e_client has been rewritten completely; some parts may be similar, but the design now relies upon having a functional compositor ** window configuration/focus functions are all removed. all windows are now managed solely with evas_object_X functions on the "frame" member of a client, just as any other canvas object can be managed. *** do NOT set interceptors on a client's comp_object. seriously. * startup order rewritten: compositor now starts much earlier, other things just use attrs and members of the compositor * ecore_x_pointer_xy_get usage replaced with ecore_evas_pointer_xy_get * e_popup is totally gone, existing usage replaced by e_comp_object_util_add where applicable, otherwise just placed normally on the canvas * deskmirror is (more) broken for now * illume is totally fucked * Ecore_X_Window replaced with Ecore_Window in most cases * edge binding XWindows replaced with regular canvas objects * some E_Win functionality has changed such that delete callbacks are now correctly called in ALL cases. various dialogs have been updated to not crash as a result comp files and descriptions: e_comp.c - overall compositor functions, rendering/update loop, shape cutting e_comp_x.c - X window management and compositor functionality e_comp_wl.c - Wayland surface management and compositor functionality e_comp_canvas.c - general compositor canvas functions and utilities e_comp_object.c - E_Client->frame member for managing clients as Evas_Objects, utility functions for adding objects to the compositor rendering systems additional authors: ivan.briano@intel.com feature: new compositor removal: e_border, e_container, e_popup
2014-01-14 17:19:12 -08:00
Eina_List *fullscreen_clients;
Evas_Object *bg_object;
2012-06-20 23:19:43 -07:00
unsigned int animate_count;
Eina_Inlist *obstacles;
};
struct _E_Event_Desk_Show
{
E_Desk *desk;
};
struct _E_Event_Desk_Before_Show
{
E_Desk *desk;
};
struct _E_Event_Desk_After_Show
{
E_Desk *desk;
};
struct _E_Event_Desk_Name_Change
{
E_Desk *desk;
};
struct _E_Event_Desk_Window_Profile_Change
{
E_Desk *desk;
};
EINTERN int e_desk_init(void);
EINTERN int e_desk_shutdown(void);
E_API E_Desk *e_desk_new(E_Zone *zone, int x, int y);
E_API void e_desk_name_set(E_Desk *desk, const char *name);
E_API void e_desk_name_add(int zone, int desk_x, int desk_y, const char *name);
E_API void e_desk_name_del(int zone, int desk_x, int desk_y);
E_API void e_desk_name_update(void);
E_API void e_desk_show(E_Desk *desk);
E_API void e_desk_deskshow(E_Zone *zone);
E_API E_Client *e_desk_last_focused_focus(E_Desk *desk);
E_API E_Client *e_desk_client_top_visible_get(const E_Desk *desk);
E_API E_Desk *e_desk_current_get(E_Zone *zone);
2016-01-14 12:08:42 -08:00
E_API E_Desk *e_desk_at_xy_get(const E_Zone *zone, int x, int y);
E_API E_Desk *e_desk_at_pos_get(E_Zone *zone, int pos);
E_API void e_desk_xy_get(E_Desk *desk, int *x, int *y);
E_API void e_desk_next(E_Zone *zone);
E_API void e_desk_prev(E_Zone *zone);
E_API void e_desk_row_add(E_Zone *zone);
E_API void e_desk_row_remove(E_Zone *zone);
E_API void e_desk_col_add(E_Zone *zone);
E_API void e_desk_col_remove(E_Zone *zone);
E_API void e_desk_window_profile_set(E_Desk *desk, const char *profile);
E_API void e_desk_window_profile_update(E_Zone *zone);
E_API void e_desk_flip_cb_set(E_Desk_Flip_Cb cb, const void *data);
E_API void e_desk_flip_end(E_Desk *desk);
E_API unsigned int e_desks_count(void);
extern E_API int E_EVENT_DESK_SHOW;
extern E_API int E_EVENT_DESK_BEFORE_SHOW;
extern E_API int E_EVENT_DESK_AFTER_SHOW;
extern E_API int E_EVENT_DESK_DESKSHOW;
extern E_API int E_EVENT_DESK_NAME_CHANGE;
extern E_API int E_EVENT_DESK_WINDOW_PROFILE_CHANGE;
#endif
#endif