Enlightenment CVS committal Author : handyande Project : misc Module : engage
Dir : misc/engage/src/module Modified Files: e_mod_main.c tray.c Log Message: OK - that looks like it could be the engage layout stuff fixed - woo hoo :) enbled / disabled system tray embeds correctly now =================================================================== RCS file: /cvsroot/enlightenment/misc/engage/src/module/e_mod_main.c,v retrieving revision 1.75 retrieving revision 1.76 diff -u -3 -r1.75 -r1.76 --- e_mod_main.c 5 Dec 2005 22:30:32 -0000 1.75 +++ e_mod_main.c 6 Dec 2005 00:16:09 -0000 1.76 @@ -323,16 +323,10 @@ _engage_bar_menu_gen(eb); /*add tray*/ - if (eb->conf->tray) - { - _engage_tray_init(eb); - - edje_object_part_swallow(eb->bar_object, "tray", eb->tray->tray); - } + _engage_tray_init(eb); + edje_object_part_swallow(eb->bar_object, "tray", eb->tray->tray); - /* Add main menu to bar menu */ - mi = e_menu_item_new(e->config_menu); e_menu_item_label_set(mi, con->name); e_menu_item_submenu_set(mi, eb->menu); @@ -735,11 +729,8 @@ evas_object_del(eb->box_object); evas_object_del(eb->event_object); - if (eb->tray) - { - _engage_tray_shutdown(eb); - eb->tray = NULL; - } + _engage_tray_shutdown(eb); + eb->tray = NULL; e_gadman_client_save(eb->gmc); e_object_del(E_OBJECT(eb->gmc)); @@ -894,8 +885,7 @@ evas_object_show(eb->bar_object); evas_object_show(eb->box_object); evas_object_show(eb->event_object); - if (eb->tray) - evas_object_show(eb->tray->tray); + evas_object_show(eb->tray->tray); e_config_save_queue(); } @@ -906,8 +896,7 @@ evas_object_hide(eb->bar_object); evas_object_hide(eb->box_object); evas_object_hide(eb->event_object); - if (eb->tray) - evas_object_hide(eb->tray->tray); + evas_object_hide(eb->tray->tray); e_config_save_queue(); } @@ -1479,7 +1468,7 @@ void _engage_bar_frame_resize(Engage_Bar *eb) { - Evas_Coord x, y, w, h; + Evas_Coord w, h; /* Not finished loading config yet! */ if ((eb->x == -1) || (eb->y == -1) @@ -1499,11 +1488,8 @@ edje_object_part_swallow(eb->bar_object, "items", eb->box_object); edje_object_size_min_calc(eb->bar_object, &w, &h); - e_gadman_client_geometry_get(eb->gmc, &x, &y, NULL, NULL); e_gadman_client_resize(eb->gmc, w, h); - evas_object_resize(eb->event_object, w, h); - evas_object_move(eb->event_object, x, y); e_box_thaw(eb->box_object); evas_event_thaw(eb->evas); } @@ -2434,18 +2420,8 @@ eb = data; eb->conf->tray = e_menu_item_toggle_get(mi); - if (eb->conf->tray) - { - _engage_tray_init(eb); - edje_object_part_swallow(eb->bar_object, "tray", eb->tray->tray); - } - else - { - edje_object_part_unswallow(eb->bar_object, eb->tray->tray); - _engage_tray_shutdown(eb); - eb->tray = NULL; - _engage_bar_frame_resize(eb); - } + _engage_tray_active_set(eb, eb->conf->tray); + _engage_bar_frame_resize(eb); e_config_save_queue(); } =================================================================== RCS file: /cvsroot/enlightenment/misc/engage/src/module/tray.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- tray.c 5 Dec 2005 22:30:32 -0000 1.10 +++ tray.c 6 Dec 2005 00:16:09 -0000 1.11 @@ -13,7 +13,7 @@ #define XEMBED_EMBEDDED_NOTIFY 0 static int _engage_tray_cb_msg(void *data, int type, void *event); -static void _engage_tray_active_set(); +void _engage_tray_active_set(); static void _engage_tray_cb_move(void *data, Evas_Object *o, Evas_Coord x, Evas_Coord y); static void _engage_tray_cb_resize(void *data, Evas_Object *o, Evas_Coord w, Evas_Coord h); @@ -24,8 +24,6 @@ void _engage_tray_init(Engage_Bar *eb) { - Evas_Coord x, y, w, h; - /* FIXME - temp */ eb->tray = malloc(sizeof(Engage_Tray)); eb->tray->icons = 0; @@ -35,21 +33,18 @@ eb->tray->tray = evas_object_rectangle_add(eb->evas); + eb->tray->msg_handler = NULL; + eb->tray->dst_handler = NULL; + eb->tray->win = NULL; + 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_active_set(eb, 1); + _engage_tray_active_set(eb, eb->conf->tray); - evas_object_geometry_get(eb->tray->tray, &x, &y, &w, &h); - eb->tray->win = ecore_x_window_new(eb->con->bg_win, x, y, w, h); - ecore_x_window_container_manage(eb->tray->win); - ecore_x_window_background_color_set(eb->tray->win, 0xcccc, 0xcccc, 0xcccc); - - eb->tray->msg_handler = ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE, _engage_tray_cb_msg, eb); - eb->tray->dst_handler = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_DESTROY, _engage_tray_cb_msg, eb); } void @@ -59,13 +54,10 @@ evas_list_free(eb->tray->wins); evas_object_del(eb->tray->tray); - - ecore_event_handler_del(eb->tray->msg_handler); - ecore_event_handler_del(eb->tray->dst_handler); - ecore_x_window_del(eb->tray->win); + free(eb->tray); } -static void +void _engage_tray_active_set(Engage_Bar *eb, int active) { Ecore_X_Window win; @@ -73,6 +65,7 @@ Window root; char buf[32]; Atom selection_atom; + Evas_Coord x, y, w, h; win = 0; if (active) @@ -93,12 +86,32 @@ ecore_x_client_message32_send(root, ecore_x_atom_get("MANAGER"), ECORE_X_EVENT_MASK_WINDOW_CONFIGURE, CurrentTime, selection_atom, win, 0, 0); + + evas_object_geometry_get(eb->tray->tray, &x, &y, &w, &h); + eb->tray->win = ecore_x_window_new(eb->con->bg_win, x, y, w, h); + ecore_x_window_container_manage(eb->tray->win); + ecore_x_window_background_color_set(eb->tray->win, 0xcccc, 0xcccc, 0xcccc); + + eb->tray->msg_handler = ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE, _engage_tray_cb_msg, eb); + eb->tray->dst_handler = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_DESTROY, _engage_tray_cb_msg, eb); + } + else + { + if (eb->tray->msg_handler) + ecore_event_handler_del(eb->tray->msg_handler); + if (eb->tray->dst_handler) + ecore_event_handler_del(eb->tray->dst_handler); + if (eb->tray->win) + ecore_x_window_del(eb->tray->win); } } static void _engage_tray_add(Engage_Bar *eb, Ecore_X_Window win) { + if (!eb->conf->tray) + return; + if (evas_list_find(eb->tray->wins, (void *)win)) return; ecore_x_window_show(eb->tray->win); @@ -119,6 +132,9 @@ static void _engage_tray_remove(Engage_Bar *eb, Ecore_X_Window win) { + if (!eb->conf->tray) + return; + if (!win) return; if (!evas_list_find(eb->tray->wins, (void *)win)) /* if was not found */ @@ -138,6 +154,9 @@ Ecore_X_Event_Client_Message *ev; Ecore_X_Event_Window_Destroy *dst; Engage_Bar *eb; + + if (!eb->conf->tray) + return 1; eb = data; if (type == ECORE_X_EVENT_CLIENT_MESSAGE) { @@ -169,7 +188,8 @@ eb = data; evas_object_move(o, x, y); - ecore_x_window_move(eb->tray->win, (int) x, (int) y); + if (eb->conf->tray) + ecore_x_window_move(eb->tray->win, (int) x, (int) y); } static void @@ -191,12 +211,34 @@ Evas_List *wins; E_Gadman_Edge edge; - if (!eb->gmc) - return; - if (!eb->tray) + if (!eb->gmc || !eb->conf) return; - edge = e_gadman_client_edge_get(eb->gmc); + edge = e_gadman_client_edge_get(eb->gmc); + if (!eb->conf->tray) + { + int w, h; + + if (edge == E_GADMAN_EDGE_BOTTOM || edge == E_GADMAN_EDGE_TOP) + { + w = 0; + h = eb->engage->conf->iconsize; + } + else + { + w = eb->engage->conf->iconsize; + h = 0; + } + 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); + return; + } + h = eb->engage->conf->iconsize; if (h < 24) h = 24; ------------------------------------------------------- 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