Enlightenment CVS committal Author : handyande Project : misc Module : engage
Dir : misc/engage/src/module Modified Files: e_mod_main.c tray.c Log Message: fix tray layout and avoid much of the flickering =================================================================== RCS file: /cvsroot/enlightenment/misc/engage/src/module/e_mod_main.c,v retrieving revision 1.82 retrieving revision 1.83 diff -u -3 -r1.82 -r1.83 --- e_mod_main.c 6 Dec 2005 22:30:18 -0000 1.82 +++ e_mod_main.c 7 Dec 2005 12:57:07 -0000 1.83 @@ -133,6 +133,9 @@ extern void _engage_tray_init(Engage_Bar *eb); extern void _engage_tray_shutdown(Engage_Bar *eb); +extern void _engage_tray_layout(Engage_Bar *eb); +extern void _engage_tray_freeze(Engage_Bar *eb); +extern void _engage_tray_thaw(Engage_Bar *eb); static int _engage_zoom_in_slave(void *data); @@ -1489,7 +1492,9 @@ } evas_object_resize(eb->event_object, w, h); + _engage_tray_freeze(eb); edje_object_part_unswallow(eb->bar_object, eb->box_object); + _engage_tray_thaw(eb); edje_extern_object_min_size_set(eb->box_object, w, h); edje_extern_object_max_size_set(eb->box_object, w, h); edje_object_part_swallow(eb->bar_object, "items", eb->box_object); @@ -2313,8 +2318,10 @@ case E_GADMAN_CHANGE_MOVE_RESIZE: e_gadman_client_geometry_get(eb->gmc, &eb->x, &eb->y, &eb->w, &eb->h); - edje_extern_object_min_size_set(eb->box_object, eb->w, eb->h); + _engage_tray_freeze(eb); edje_object_part_unswallow(eb->bar_object, eb->box_object); + _engage_tray_thaw(eb); + edje_extern_object_min_size_set(eb->box_object, eb->w, eb->h); edje_object_part_swallow(eb->bar_object, "items", eb->box_object); evas_object_move(eb->bar_object, eb->x, eb->y); =================================================================== RCS file: /cvsroot/enlightenment/misc/engage/src/module/tray.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -3 -r1.14 -r1.15 --- tray.c 6 Dec 2005 16:16:10 -0000 1.14 +++ tray.c 7 Dec 2005 12:57:07 -0000 1.15 @@ -19,6 +19,8 @@ static void _engage_tray_cb_resize(void *data, Evas_Object *o, Evas_Coord w, Evas_Coord h); void _engage_tray_layout(Engage_Bar *eb); +void _engage_tray_freeze(Engage_Bar *eb); +void _engage_tray_thaw(Engage_Bar *eb); extern void _engage_bar_frame_resize(Engage_Bar *eb); void @@ -40,8 +42,7 @@ evas_object_resize(eb->tray->tray, eb->tray->w, eb->tray->h); evas_object_color_set(eb->tray->tray, 180, 0, 0, 255); evas_object_show(eb->tray->tray); - evas_object_intercept_move_callback_add(eb->tray->tray, _engage_tray_cb_move, eb); - evas_object_intercept_resize_callback_add(eb->tray->tray, _engage_tray_cb_resize, eb); + _engage_tray_thaw(eb); edje_object_part_swallow(eb->bar_object, "tray", eb->tray->tray); _engage_tray_active_set(eb, eb->conf->tray); @@ -51,6 +52,7 @@ void _engage_tray_shutdown(Engage_Bar *eb) { + _engage_tray_freeze(eb); edje_object_part_unswallow(eb->bar_object, eb->tray->tray); _engage_tray_active_set(eb, 0); @@ -110,8 +112,27 @@ } } +void +_engage_tray_freeze(Engage_Bar *eb) +{ + if (!eb->tray) + return; + evas_object_intercept_move_callback_del(eb->tray->tray, _engage_tray_cb_move); + evas_object_intercept_resize_callback_del(eb->tray->tray, _engage_tray_cb_resize); +} + +void +_engage_tray_thaw(Engage_Bar *eb) +{ + if (!eb->tray) + return; + evas_object_intercept_move_callback_add(eb->tray->tray, _engage_tray_cb_move, eb); + evas_object_intercept_resize_callback_add(eb->tray->tray, _engage_tray_cb_resize, eb); +} + static void -_engage_tray_add(Engage_Bar *eb, Ecore_X_Window win) { +_engage_tray_add(Engage_Bar *eb, Ecore_X_Window win) +{ if (!eb->conf->tray) return; @@ -235,7 +256,6 @@ } edje_object_part_unswallow(eb->bar_object, eb->tray->tray); evas_object_resize(eb->tray->tray, w, h); - ecore_x_window_resize(eb->tray->win, (int) w, (int) h); edje_extern_object_min_size_set(eb->tray->tray, w, h); edje_extern_object_max_size_set(eb->tray->tray, w, h); @@ -247,25 +267,28 @@ if (h < 24) h = 24; c = (h - (h % 24)) / 24; - w = ((eb->tray->icons + (eb->tray->icons % c)) / c) * 24; - + w = (eb->tray->icons / c); + if ((eb->tray->icons % c) != 0) + w++; + w *= 24; + + _engage_tray_freeze(eb); + edje_object_part_unswallow(eb->bar_object, eb->tray->tray); if (edge == E_GADMAN_EDGE_BOTTOM || edge == E_GADMAN_EDGE_TOP) { - edje_object_part_unswallow(eb->bar_object, eb->tray->tray); evas_object_resize(eb->tray->tray, w, h); ecore_x_window_resize(eb->tray->win, (int) w, (int) h); edje_extern_object_min_size_set(eb->tray->tray, w, h); edje_extern_object_max_size_set(eb->tray->tray, w, h); - edje_object_part_swallow(eb->bar_object, "tray", eb->tray->tray); } else { - edje_object_part_unswallow(eb->bar_object, eb->tray->tray); evas_object_resize(eb->tray->tray, h, w); ecore_x_window_resize(eb->tray->win, (int) h, (int) w); edje_extern_object_min_size_set(eb->tray->tray, h, w); edje_extern_object_max_size_set(eb->tray->tray, h, w); - edje_object_part_swallow(eb->bar_object, "tray", eb->tray->tray); } + _engage_tray_thaw(eb); + edje_object_part_swallow(eb->bar_object, "tray", eb->tray->tray); x = 0; if (edge == E_GADMAN_EDGE_BOTTOM || edge == E_GADMAN_EDGE_RIGHT) ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs