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
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs