1. only make zone black win+canvas if/when needed (btw - can still do

better and only create what is needed to surround the fullscreen
window if it cant be fullscren and needs a black border).
2. set bg color of root to black - e has its own bg anyway.



SVN revision: 54748
This commit is contained in:
Carsten Haitzler 2010-11-20 16:18:58 +00:00
parent b7f5014a18
commit d484062996
2 changed files with 40 additions and 18 deletions

View File

@ -87,6 +87,7 @@ e_manager_new(Ecore_X_Window root, int num)
Ecore_Event_Handler *h;
if (!ecore_x_window_manage(root)) return NULL;
ecore_x_window_background_color_set(root, 0, 0, 0);
man = E_OBJECT_ALLOC(E_Manager, E_MANAGER_TYPE, _e_manager_free);
if (!man) return NULL;
managers = eina_list_append(managers, man);

View File

@ -58,13 +58,48 @@ e_zone_shutdown(void)
return 1;
}
static void
_e_zone_black_get(E_Zone *zone)
{
Evas_Object *o;
char name[256];
if (zone->black_ecore_evas) return;
zone->black_ecore_evas =
e_canvas_new(e_config->evas_engine_zone, zone->container->win,
zone->x, zone->y, zone->w, zone->h, 1, 1, &(zone->black_win));
e_canvas_add(zone->black_ecore_evas);
ecore_evas_layer_set(zone->black_ecore_evas, 6);
zone->black_evas = ecore_evas_get(zone->black_ecore_evas);
o = evas_object_rectangle_add(zone->black_evas);
evas_object_move(o, 0, 0);
evas_object_resize(o, zone->w, zone->h);
evas_object_color_set(o, 0, 0, 0, 255);
evas_object_show(o);
ecore_evas_name_class_set(zone->black_ecore_evas, "E", "Black_Window");
snprintf(name, sizeof(name), "Enlightenment Black Zone (%d)", zone->num);
ecore_evas_title_set(zone->black_ecore_evas, name);
}
static void
_e_zone_black_unget(E_Zone *zone)
{
if (!zone->black_ecore_evas) return;
e_canvas_del(zone->black_ecore_evas);
ecore_evas_free(zone->black_ecore_evas);
zone->black_ecore_evas = NULL;
zone->black_win = 0;
}
EAPI E_Zone *
e_zone_new(E_Container *con, int num, int id, int x, int y, int w, int h)
{
E_Zone *zone;
char name[40];
Evas_Object *o;
E_Event_Zone_Add *ev;
char name[40];
zone = E_OBJECT_ALLOC(E_Zone, E_ZONE_TYPE, _e_zone_free);
if (!zone) return NULL;
@ -128,23 +163,7 @@ e_zone_new(E_Container *con, int num, int id, int x, int y, int w, int h)
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, _e_zone_cb_bg_mouse_up, zone);
/* TODO: config the ecore_evas type. */
zone->black_ecore_evas =
e_canvas_new(e_config->evas_engine_zone, zone->container->win,
zone->x, zone->y, zone->w, zone->h, 1, 1, &(zone->black_win));
e_canvas_add(zone->black_ecore_evas);
ecore_evas_layer_set(zone->black_ecore_evas, 6);
zone->black_evas = ecore_evas_get(zone->black_ecore_evas);
o = evas_object_rectangle_add(zone->black_evas);
evas_object_move(o, 0, 0);
evas_object_resize(o, zone->w, zone->h);
evas_object_color_set(o, 0, 0, 0, 255);
evas_object_show(o);
ecore_evas_name_class_set(zone->black_ecore_evas, "E", "Black_Window");
snprintf(name, sizeof(name), "Enlightenment Black Zone (%d)", zone->num);
ecore_evas_title_set(zone->black_ecore_evas, name);
zone->desk_x_count = 0;
zone->desk_y_count = 0;
zone->desk_x_current = 0;
@ -271,6 +290,7 @@ e_zone_fullscreen_set(E_Zone *zone, int on)
if ((!zone->fullscreen) && (on))
{
_e_zone_black_get(zone);
ecore_evas_show(zone->black_ecore_evas);
e_container_window_raise(zone->container, zone->black_win, 150);
zone->fullscreen = 1;
@ -279,6 +299,7 @@ e_zone_fullscreen_set(E_Zone *zone, int on)
{
ecore_evas_hide(zone->black_ecore_evas);
zone->fullscreen = 0;
_e_zone_black_unget(zone);
}
}