Enlightenment CVS committal Author : handyande Project : e17 Module : apps/e
Dir : e17/apps/e/src/modules/pager Modified Files: e_mod_main.c e_mod_main.h Log Message: Add some needed frees fix a save bug add window listings as before these will not update unles you force a refresh =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/pager/e_mod_main.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- e_mod_main.c 9 Jan 2005 19:06:52 -0000 1.2 +++ e_mod_main.c 9 Jan 2005 23:39:19 -0000 1.3 @@ -23,9 +23,6 @@ #define PAGER_MIN_W 10 #define PAGER_MIN_H 7 - -Evas_List *_pager_desks; - /* public module routines. all modules must have these */ void * init(E_Module *m) @@ -180,6 +177,23 @@ free(e->conf); E_CONFIG_DD_FREE(e->conf_edd); + evas_object_free(e->base); + evas_object_free(e->screen); + + while(e->desks) + { + evas_object_hide(e->desks->data); + evas_object_free(e->desks->data); + e->desks = evas_list_remove_list(e->desks, e->desks); + } + + while(e->wins) + { + evas_object_hide(e->wins->data); + evas_object_free(e->wins->data); + e->wins = evas_list_remove_list(e->wins, e->wins); + } + ecore_event_handler_del(e->ev_handler_container_resize); free(e); } @@ -225,9 +239,13 @@ { E_Zone *zone; E_Desk *desk, *current; - Evas_Object *desk_obj; + E_Border *border; + Evas_List *clients; + + Evas_Object *desk_obj, *win_obj; int desks_x, desks_y, x, y; - Evas_Coord px, py, pw, ph; + Evas_Coord px, py, pw, ph, ww, hh; + double scalex, scaley; evas_object_resize(e->base, e->fw, e->fh); evas_object_move(e->base, e->fx, e->fy); @@ -237,13 +255,22 @@ pw = e->fw / (double) desks_x; ph = e->fh / (double) desks_y; + evas_output_viewport_get(e->evas, NULL, NULL, &ww, &hh); + scalex = (double) pw / ww; + scaley = (double) ph / hh; evas_object_resize(e->screen, pw, ph); - while(_pager_desks) + while(e->desks) { - evas_object_hide(_pager_desks->data); - evas_object_free(_pager_desks->data); - _pager_desks = evas_list_remove_list(_pager_desks, _pager_desks); + evas_object_hide(e->desks->data); + evas_object_free(e->desks->data); + e->desks = evas_list_remove_list(e->desks, e->desks); + } + while(e->wins) + { + evas_object_hide(e->wins->data); + evas_object_free(e->wins->data); + e->wins = evas_list_remove_list(e->wins, e->wins); } current = e_desk_current_get(zone); @@ -251,8 +278,10 @@ for (y = 0; y < desks_y; y++) { desk = e_desk_at_xy_get(zone, x, y); + px = e->fx + (x * pw); + py = e->fy + (y * ph); if (desk == current) - evas_object_move(e->screen, e->fx + (x * pw), e->fy + (y * ph)); + evas_object_move(e->screen, px, py); desk_obj = edje_object_add(e->evas); edje_object_file_set(desk_obj, /* FIXME: "default.eet" needs to come from conf */ @@ -260,10 +289,35 @@ "modules/pager/desk"); evas_object_pass_events_set(desk_obj, 1); evas_object_resize(desk_obj, pw, ph); - evas_object_move(desk_obj, e->fx + (x * pw), e->fy + (y * ph)); + evas_object_move(desk_obj, px, py); evas_object_show(desk_obj); - _pager_desks = evas_list_append(_pager_desks, desk_obj); + e->desks = evas_list_append(e->desks, desk_obj); + + clients = desk->clients; + while (clients) + { + Evas_Coord winx, winy, winw, winh; + border = (E_Border *) clients->data; + + winx = (Evas_Coord) ((double) border->x) * scalex; + winy = (Evas_Coord) ((double) border->y) * scaley; + winw = (Evas_Coord) ((double) border->w) * scalex; + winh = (Evas_Coord) ((double) border->h) * scaley; + win_obj = edje_object_add(e->evas); + edje_object_file_set(win_obj, + /* FIXME: "default.eet" needs to come from conf */ + e_path_find(path_themes, "default.eet"), + "modules/pager/window"); + evas_object_pass_events_set(win_obj, 1); + evas_object_resize(win_obj, winw, winh); + evas_object_move(win_obj, px + winx, py + winy); + + evas_object_show(win_obj); + e->wins = evas_list_append(e->wins, win_obj); + + clients = clients->next; + } } } @@ -304,9 +358,11 @@ ev = event_info; p = data; + evas_output_viewport_get(p->evas, NULL, NULL, &ww, &hh); /* if we clicked, not moved - FIXME, this is a hack */ newx = (double)p->fx / (double)(ww - p->fw); newy = (double)p->fy / (double)(hh - p->fy); +printf("saving %g, %g\n", newx, newy); if (p->move && (p->conf->x == newx) && (p->conf->y == newy)) { int x, y, w, h, xcount, ycount, cx, cy; @@ -339,7 +395,6 @@ p->move = 0; p->resize = 0; - evas_output_viewport_get(p->evas, NULL, NULL, &ww, &hh); p->conf->width = p->fw; p->conf->height = p->fh; p->conf->x = newx; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/pager/e_mod_main.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- e_mod_main.h 9 Jan 2005 19:02:18 -0000 1.1 +++ e_mod_main.h 9 Jan 2005 23:39:19 -0000 1.2 @@ -15,6 +15,7 @@ E_Menu *config_menu; Evas *evas; Evas_Object *base, *screen; + Evas_List *desks, *wins; E_Container *con; E_Config_DD *conf_edd; ------------------------------------------------------- The SF.Net email is sponsored by: Beat the post-holiday blues Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs