forked from enlightenment/enlightenment
parent
dfea375b7d
commit
1b6f59e253
|
@ -142,8 +142,8 @@ printf("GRAV TO %i\n", grav); \
|
|||
ecore_x_window_gravity_set(bd->bg_win, grav); \
|
||||
ecore_x_window_gravity_set(bd->client.shell_win, grav); \
|
||||
ecore_x_window_gravity_set(bd->client.win, grav); \
|
||||
ecore_x_window_gravity_set(ecore_evas_software_x11_subwindow_get(bd->bg_ecore_evas), grav); \
|
||||
ecore_x_window_pixel_gravity_set(ecore_evas_software_x11_subwindow_get(bd->bg_ecore_evas), grav);
|
||||
ecore_x_window_gravity_set(bd->bg_subwin, grav); \
|
||||
ecore_x_window_pixel_gravity_set(bd->bg_subwin, grav);
|
||||
|
||||
/* externally accessible functions */
|
||||
int
|
||||
|
@ -222,12 +222,26 @@ e_border_new(E_Container *con, Ecore_X_Window win, int first_map)
|
|||
bd->win = ecore_x_window_override_new(bd->container->win, 0, 0, bd->w, bd->h);
|
||||
ecore_x_window_shape_events_select(bd->win, 1);
|
||||
e_bindings_mouse_grab(E_BINDING_CONTEXT_BORDER, bd->win);
|
||||
bd->bg_ecore_evas = ecore_evas_software_x11_new(NULL, bd->win, 0, 0, bd->w, bd->h);
|
||||
ecore_evas_software_x11_direct_resize_set(bd->bg_ecore_evas, 1);
|
||||
if (e_canvas_engine_decide(e_config->evas_engine_borders) ==
|
||||
E_EVAS_ENGINE_GL_X11)
|
||||
{
|
||||
bd->bg_ecore_evas = ecore_evas_gl_x11_new(NULL, bd->win,
|
||||
0, 0, bd->w, bd->h);
|
||||
ecore_evas_gl_x11_direct_resize_set(bd->bg_ecore_evas, 1);
|
||||
bd->bg_win = ecore_evas_gl_x11_window_get(bd->bg_ecore_evas);
|
||||
bd->bg_subwin = ecore_evas_gl_x11_subwindow_get(bd->bg_ecore_evas);
|
||||
}
|
||||
else
|
||||
{
|
||||
bd->bg_ecore_evas = ecore_evas_software_x11_new(NULL, bd->win,
|
||||
0, 0, bd->w, bd->h);
|
||||
ecore_evas_software_x11_direct_resize_set(bd->bg_ecore_evas, 1);
|
||||
bd->bg_win = ecore_evas_software_x11_window_get(bd->bg_ecore_evas);
|
||||
bd->bg_subwin = ecore_evas_software_x11_subwindow_get(bd->bg_ecore_evas);
|
||||
}
|
||||
e_canvas_add(bd->bg_ecore_evas);
|
||||
bd->event_win = ecore_x_window_input_new(bd->win, 0, 0, bd->w, bd->h);
|
||||
bd->bg_evas = ecore_evas_get(bd->bg_ecore_evas);
|
||||
bd->bg_win = ecore_evas_software_x11_window_get(bd->bg_ecore_evas);
|
||||
ecore_x_window_shape_events_select(bd->bg_win, 1);
|
||||
ecore_evas_name_class_set(bd->bg_ecore_evas, "E", "Frame_Window");
|
||||
ecore_evas_title_set(bd->bg_ecore_evas, "Enlightenment Frame");
|
||||
|
|
|
@ -77,6 +77,7 @@ struct _E_Border
|
|||
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;
|
||||
|
|
|
@ -29,6 +29,22 @@ e_canvas_del(Ecore_Evas *ee)
|
|||
_e_canvases = evas_list_remove(_e_canvases, ee);
|
||||
}
|
||||
|
||||
int
|
||||
e_canvas_engine_decide(int engine)
|
||||
{
|
||||
/* if use default - use it */
|
||||
if (engine == E_EVAS_ENGINE_DEFAULT)
|
||||
engine = e_config->evas_engine_default;
|
||||
/* if engine is gl - do we support it? */
|
||||
if (engine == E_EVAS_ENGINE_GL_X11)
|
||||
{
|
||||
/* if we dont - fall back to software x11 */
|
||||
if (!ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_GL_X11))
|
||||
engine = E_EVAS_ENGINE_SOFTWARE_X11;
|
||||
}
|
||||
return engine;
|
||||
}
|
||||
|
||||
void
|
||||
e_canvas_recache(void)
|
||||
{
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
EAPI void e_canvas_add(Ecore_Evas *ee);
|
||||
EAPI void e_canvas_del(Ecore_Evas *ee);
|
||||
EAPI int e_canvas_engine_decide(int engine);
|
||||
EAPI void e_canvas_recache(void);
|
||||
EAPI void e_canvas_cache_flush(void);
|
||||
EAPI void e_canvas_cache_reload(void);
|
||||
|
|
|
@ -135,6 +135,13 @@ e_config_init(void)
|
|||
e_config->zone_desks_x_count = 4;
|
||||
e_config->zone_desks_y_count = 1;
|
||||
e_config->use_virtual_roots = 0;
|
||||
e_config->evas_engine_default = E_EVAS_ENGINE_SOFTWARE_X11;
|
||||
e_config->evas_engine_container = E_EVAS_ENGINE_DEFAULT;
|
||||
e_config->evas_engine_init = E_EVAS_ENGINE_DEFAULT;
|
||||
e_config->evas_engine_menus = E_EVAS_ENGINE_DEFAULT;
|
||||
e_config->evas_engine_borders = E_EVAS_ENGINE_DEFAULT;
|
||||
e_config->evas_engine_errors = E_EVAS_ENGINE_DEFAULT;
|
||||
e_config->evas_engine_popups = E_EVAS_ENGINE_DEFAULT;
|
||||
e_config->language = strdup("");
|
||||
{
|
||||
E_Config_Module *em;
|
||||
|
|
|
@ -42,6 +42,10 @@ typedef Eet_Data_Descriptor E_Config_DD;
|
|||
#ifndef E_CONFIG_H
|
||||
#define E_CONFIG_H
|
||||
|
||||
#define E_EVAS_ENGINE_DEFAULT 0
|
||||
#define E_EVAS_ENGINE_SOFTWARE_X11 1
|
||||
#define E_EVAS_ENGINE_GL_X11 2
|
||||
|
||||
struct _E_Config
|
||||
{
|
||||
char *desktop_default_background;
|
||||
|
@ -57,6 +61,13 @@ struct _E_Config
|
|||
int zone_desks_x_count;
|
||||
int zone_desks_y_count;
|
||||
int use_virtual_roots;
|
||||
int evas_engine_default;
|
||||
int evas_engine_container;
|
||||
int evas_engine_init;
|
||||
int evas_engine_menus;
|
||||
int evas_engine_borders;
|
||||
int evas_engine_errors;
|
||||
int evas_engine_popups;
|
||||
char *language;
|
||||
Evas_List *modules;
|
||||
Evas_List *font_fallbacks;
|
||||
|
|
|
@ -73,12 +73,23 @@ e_container_new(E_Manager *man)
|
|||
{
|
||||
con->win = con->manager->win;
|
||||
}
|
||||
con->bg_ecore_evas = ecore_evas_software_x11_new(NULL, con->win, 0, 0, con->w, con->h);
|
||||
ecore_evas_override_set(con->bg_ecore_evas, 1);
|
||||
ecore_evas_software_x11_direct_resize_set(con->bg_ecore_evas, 1);
|
||||
if (e_canvas_engine_decide(e_config->evas_engine_container) ==
|
||||
E_EVAS_ENGINE_GL_X11)
|
||||
{
|
||||
con->bg_ecore_evas = ecore_evas_gl_x11_new(NULL, con->win, 0, 0, con->w, con->h);
|
||||
ecore_evas_gl_x11_direct_resize_set(con->bg_ecore_evas, 1);
|
||||
ecore_evas_override_set(con->bg_ecore_evas, 1);
|
||||
con->bg_win = ecore_evas_gl_x11_window_get(con->bg_ecore_evas);
|
||||
}
|
||||
else
|
||||
{
|
||||
con->bg_ecore_evas = ecore_evas_software_x11_new(NULL, con->win, 0, 0, con->w, con->h);
|
||||
ecore_evas_software_x11_direct_resize_set(con->bg_ecore_evas, 1);
|
||||
ecore_evas_override_set(con->bg_ecore_evas, 1);
|
||||
con->bg_win = ecore_evas_software_x11_window_get(con->bg_ecore_evas);
|
||||
}
|
||||
e_canvas_add(con->bg_ecore_evas);
|
||||
con->bg_evas = ecore_evas_get(con->bg_ecore_evas);
|
||||
con->bg_win = ecore_evas_software_x11_window_get(con->bg_ecore_evas);
|
||||
ecore_evas_name_class_set(con->bg_ecore_evas, "E", "Background_Window");
|
||||
ecore_evas_title_set(con->bg_ecore_evas, "Enlightenment Background");
|
||||
ecore_evas_avoid_damage_set(con->bg_ecore_evas, 1);
|
||||
|
|
|
@ -60,15 +60,30 @@ e_error_message_manager_show(E_Manager *man, char *title, char *txt)
|
|||
Evas_List *l, *shapelist = NULL;
|
||||
Evas_Coord maxw, maxh;
|
||||
E_Container *con;
|
||||
Ecore_X_Window win;
|
||||
int x, y;
|
||||
|
||||
error_w = 400;
|
||||
error_h = 200;
|
||||
x = (man->w - error_w) / 2;
|
||||
y = (man->h - error_h) / 2;
|
||||
ee = ecore_evas_software_x11_new(NULL, man->win, x, y, error_w, error_h);
|
||||
ecore_evas_override_set(ee, 1);
|
||||
ecore_evas_software_x11_direct_resize_set(ee, 1);
|
||||
if (e_canvas_engine_decide(e_config->evas_engine_errors) ==
|
||||
E_EVAS_ENGINE_GL_X11)
|
||||
{
|
||||
ee = ecore_evas_gl_x11_new(NULL, man->win, x, y, error_w, error_h);
|
||||
ecore_evas_gl_x11_direct_resize_set(ee, 1);
|
||||
ecore_evas_override_set(ee, 1);
|
||||
win = ecore_evas_gl_x11_window_get(ee);
|
||||
e_container_window_raise(con, win, 999);
|
||||
}
|
||||
else
|
||||
{
|
||||
ee = ecore_evas_software_x11_new(NULL, man->win, x, y, error_w, error_h);
|
||||
ecore_evas_software_x11_direct_resize_set(ee, 1);
|
||||
ecore_evas_override_set(ee, 1);
|
||||
win = ecore_evas_software_x11_window_get(ee);
|
||||
e_container_window_raise(con, win, 999);
|
||||
}
|
||||
e_canvas_add(ee);
|
||||
|
||||
ecore_evas_name_class_set(ee, "E", "Low_Level_Dialog");
|
||||
|
@ -330,13 +345,7 @@ e_error_message_manager_show(E_Manager *man, char *title, char *txt)
|
|||
o = evas_object_rectangle_add(e);
|
||||
evas_object_name_set(o, "allocated");
|
||||
}
|
||||
{
|
||||
Ecore_X_Window win;
|
||||
|
||||
win = ecore_evas_software_x11_window_get(ee);
|
||||
e_container_window_raise(con, win, 999);
|
||||
ecore_evas_show(ee);
|
||||
}
|
||||
ecore_evas_show(ee);
|
||||
}
|
||||
|
||||
/* local subsystem functions */
|
||||
|
|
|
@ -38,12 +38,23 @@ e_init_init(void)
|
|||
root = roots[0];
|
||||
|
||||
ecore_x_window_size_get(root, &w, &h);
|
||||
_e_init_ecore_evas = ecore_evas_software_x11_new(NULL, root, 0, 0, w, h);
|
||||
ecore_evas_override_set(_e_init_ecore_evas, 1);
|
||||
ecore_evas_software_x11_direct_resize_set(_e_init_ecore_evas, 1);
|
||||
if (e_canvas_engine_decide(e_config->evas_engine_init) ==
|
||||
E_EVAS_ENGINE_GL_X11)
|
||||
{
|
||||
_e_init_ecore_evas = ecore_evas_gl_x11_new(NULL, root, 0, 0, w, h);
|
||||
ecore_evas_gl_x11_direct_resize_set(_e_init_ecore_evas, 1);
|
||||
ecore_evas_override_set(_e_init_ecore_evas, 1);
|
||||
_e_init_win = ecore_evas_gl_x11_window_get(_e_init_ecore_evas);
|
||||
}
|
||||
else
|
||||
{
|
||||
_e_init_ecore_evas = ecore_evas_software_x11_new(NULL, root, 0, 0, w, h);
|
||||
ecore_evas_software_x11_direct_resize_set(_e_init_ecore_evas, 1);
|
||||
ecore_evas_override_set(_e_init_ecore_evas, 1);
|
||||
_e_init_win = ecore_evas_software_x11_window_get(_e_init_ecore_evas);
|
||||
}
|
||||
e_canvas_add(_e_init_ecore_evas);
|
||||
_e_init_evas = ecore_evas_get(_e_init_ecore_evas);
|
||||
_e_init_win = ecore_evas_software_x11_window_get(_e_init_ecore_evas);
|
||||
ecore_evas_name_class_set(_e_init_ecore_evas, "E", "Init_Window");
|
||||
ecore_evas_title_set(_e_init_ecore_evas, "Enlightenment Init");
|
||||
e_pointer_ecore_evas_set(_e_init_ecore_evas);
|
||||
|
|
|
@ -190,7 +190,7 @@ main(int argc, char **argv)
|
|||
}
|
||||
_e_main_shutdown_push(e_xinerama_shutdown);
|
||||
|
||||
ecore_x_grab();
|
||||
// ecore_x_grab();
|
||||
|
||||
ecore_x_io_error_handler_set(_e_main_cb_x_fatal, NULL);
|
||||
|
||||
|
@ -378,7 +378,7 @@ main(int argc, char **argv)
|
|||
|
||||
e_managers_keys_grab();
|
||||
|
||||
ecore_x_ungrab();
|
||||
// ecore_x_ungrab();
|
||||
|
||||
e_init_title_set(_("Enlightenment"));
|
||||
e_init_version_set(VERSION);
|
||||
|
@ -491,7 +491,7 @@ _e_main_shutdown(int errorcode)
|
|||
static int
|
||||
_e_main_x_shutdown(void)
|
||||
{
|
||||
ecore_x_ungrab();
|
||||
// ecore_x_ungrab();
|
||||
ecore_x_focus_reset();
|
||||
ecore_x_events_allow_all();
|
||||
|
||||
|
|
|
@ -1021,10 +1021,23 @@ _e_menu_realize(E_Menu *m)
|
|||
|
||||
if (m->realized) return;
|
||||
m->realized = 1;
|
||||
m->ecore_evas = ecore_evas_software_x11_new(NULL, m->zone->container->win,
|
||||
m->cur.x, m->cur.y,
|
||||
m->cur.w, m->cur.h);
|
||||
ecore_evas_software_x11_direct_resize_set(m->ecore_evas, 1);
|
||||
if (e_canvas_engine_decide(e_config->evas_engine_menus) ==
|
||||
E_EVAS_ENGINE_GL_X11)
|
||||
{
|
||||
m->ecore_evas = ecore_evas_gl_x11_new(NULL, m->zone->container->win,
|
||||
m->cur.x, m->cur.y,
|
||||
m->cur.w, m->cur.h);
|
||||
ecore_evas_gl_x11_direct_resize_set(m->ecore_evas, 1);
|
||||
m->evas_win = ecore_evas_gl_x11_window_get(m->ecore_evas);
|
||||
}
|
||||
else
|
||||
{
|
||||
m->ecore_evas = ecore_evas_software_x11_new(NULL, m->zone->container->win,
|
||||
m->cur.x, m->cur.y,
|
||||
m->cur.w, m->cur.h);
|
||||
ecore_evas_software_x11_direct_resize_set(m->ecore_evas, 1);
|
||||
m->evas_win = ecore_evas_software_x11_window_get(m->ecore_evas);
|
||||
}
|
||||
e_canvas_add(m->ecore_evas);
|
||||
m->shape = e_container_shape_add(m->zone->container);
|
||||
e_container_shape_move(m->shape, m->cur.x, m->cur.y);
|
||||
|
@ -1035,7 +1048,6 @@ _e_menu_realize(E_Menu *m)
|
|||
/* move cursor out to avoid event cycles during setup */
|
||||
evas_event_feed_mouse_in(m->evas, NULL);
|
||||
evas_event_feed_mouse_move(m->evas, -1000000, -1000000, NULL);
|
||||
m->evas_win = ecore_evas_software_x11_window_get(m->ecore_evas);
|
||||
ecore_x_window_shape_events_select(m->evas_win, 1);
|
||||
ecore_evas_name_class_set(m->ecore_evas, "E", "_e_menu_window");
|
||||
ecore_evas_title_set(m->ecore_evas, "E Menu");
|
||||
|
|
|
@ -40,18 +40,32 @@ e_popup_new(E_Zone *zone, int x, int y, int w, int h)
|
|||
pop->w = w;
|
||||
pop->h = h;
|
||||
pop->layer = 250;
|
||||
pop->ecore_evas = ecore_evas_software_x11_new(NULL,
|
||||
pop->zone->container->win,
|
||||
pop->zone->x + pop->x,
|
||||
pop->zone->y + pop->y,
|
||||
pop->w, pop->h);
|
||||
ecore_evas_software_x11_direct_resize_set(pop->ecore_evas, 1);
|
||||
if (e_canvas_engine_decide(e_config->evas_engine_popups) ==
|
||||
E_EVAS_ENGINE_GL_X11)
|
||||
{
|
||||
pop->ecore_evas = ecore_evas_gl_x11_new(NULL,
|
||||
pop->zone->container->win,
|
||||
pop->zone->x + pop->x,
|
||||
pop->zone->y + pop->y,
|
||||
pop->w, pop->h);
|
||||
ecore_evas_gl_x11_direct_resize_set(pop->ecore_evas, 1);
|
||||
pop->evas_win = ecore_evas_gl_x11_window_get(pop->ecore_evas);
|
||||
}
|
||||
else
|
||||
{
|
||||
pop->ecore_evas = ecore_evas_software_x11_new(NULL,
|
||||
pop->zone->container->win,
|
||||
pop->zone->x + pop->x,
|
||||
pop->zone->y + pop->y,
|
||||
pop->w, pop->h);
|
||||
ecore_evas_software_x11_direct_resize_set(pop->ecore_evas, 1);
|
||||
pop->evas_win = ecore_evas_software_x11_window_get(pop->ecore_evas);
|
||||
}
|
||||
e_canvas_add(pop->ecore_evas);
|
||||
pop->shape = e_container_shape_add(pop->zone->container);
|
||||
e_container_shape_move(pop->shape, pop->zone->x + pop->x, pop->zone->y + pop->y);
|
||||
e_container_shape_resize(pop->shape, pop->w, pop->h);
|
||||
pop->evas = ecore_evas_get(pop->ecore_evas);
|
||||
pop->evas_win = ecore_evas_software_x11_window_get(pop->ecore_evas);
|
||||
e_container_window_raise(pop->zone->container, pop->evas_win, pop->layer);
|
||||
ecore_x_window_shape_events_select(pop->evas_win, 1);
|
||||
ecore_evas_name_class_set(pop->ecore_evas, "E", "_e_popup_window");
|
||||
|
|
|
@ -40,6 +40,13 @@ e_theme_init(void)
|
|||
e_theme_file_set(buf, et->file);
|
||||
}
|
||||
/*
|
||||
* this is used to sewt the theme for a CATEGORY of e17. "base" is always set
|
||||
* to the default theme - because if a selected theme for lest say base/theme
|
||||
* does not provide theme elements it can default back to the default theme.
|
||||
*
|
||||
* the idea is you can actually set a different theme for different parts of
|
||||
* the desktop... :)
|
||||
*
|
||||
* other possible categories...
|
||||
* e_theme_file_set("base/theme/borders", "default.edj");
|
||||
* e_theme_file_set("base/theme/menus", "default.edj");
|
||||
|
@ -236,6 +243,16 @@ e_theme_file_set(char *category, char *file)
|
|||
mappings = evas_hash_add(mappings, category, res);
|
||||
}
|
||||
|
||||
void
|
||||
e_theme_about(E_Zone *zone, const char *file)
|
||||
{
|
||||
static E_Popup *pop = NULL;
|
||||
|
||||
if (pop) return;
|
||||
pop = e_popup_new(zone, zone->w / 2, zone->h / 2, 1, 1);
|
||||
e_popup_show(pop);
|
||||
}
|
||||
|
||||
/* local subsystem functions */
|
||||
|
||||
static Evas_Bool
|
||||
|
|
Loading…
Reference in New Issue