Enlightenment CVS committal Author : sebastid Project : e17 Module : apps/e
Dir : e17/apps/e/src/modules/pager Modified Files: e_mod_main.c Log Message: Fix aspect. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/pager/e_mod_main.c,v retrieving revision 1.123 retrieving revision 1.124 diff -u -3 -r1.123 -r1.124 --- e_mod_main.c 13 Sep 2005 00:27:53 -0000 1.123 +++ e_mod_main.c 20 Sep 2005 17:09:27 -0000 1.124 @@ -7,6 +7,7 @@ /* TODO * which options should be in main menu, and which in face menu? * check if a new desk is in the current zone + * check if padding changes on resize */ /* module private routines */ @@ -94,6 +95,9 @@ static void _pager_menu_cb_popup_enable(void *data, E_Menu *m, E_Menu_Item *mi); +static void _pager_menu_cb_aspect_keep_height(void *data, E_Menu *m, E_Menu_Item *mi); +static void _pager_menu_cb_aspect_keep_width(void *data, E_Menu *m, E_Menu_Item *mi); + static int _pager_count; static E_Config_DD *_conf_edd; @@ -491,6 +495,14 @@ mi = e_menu_item_new(pager->config_menu); e_menu_item_label_set(mi, _("Popup Speed")); e_menu_item_submenu_set(mi, pager->config_menu_speed); + + mi = e_menu_item_new(pager->config_menu); + e_menu_item_label_set(mi, _("Fix Aspect (Keep Height)")); + e_menu_item_callback_set(mi, _pager_menu_cb_aspect_keep_height, pager); + + mi = e_menu_item_new(pager->config_menu); + e_menu_item_label_set(mi, _("Fix Aspect (Keep Width)")); + e_menu_item_callback_set(mi, _pager_menu_cb_aspect_keep_width, pager); } static Pager_Face * @@ -529,6 +541,11 @@ face->inset.t = y; face->inset.b = 1000 - (y + h); + face->desk_inset.l = -1; + face->desk_inset.r = -1; + face->desk_inset.t = -1; + face->desk_inset.b = -1; + face->drop_handler = e_drop_handler_add(face, _pager_face_cb_enter, _pager_face_cb_move, _pager_face_cb_leave, _pager_face_cb_drop, @@ -625,6 +642,14 @@ mi = e_menu_item_new(mn); e_menu_item_label_set(mi, _("Desktop Speed")); e_menu_item_submenu_set(mi, face->pager->config_menu_speed); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Fix Aspect (Keep Height)")); + e_menu_item_callback_set(mi, _pager_menu_cb_aspect_keep_height, face->pager); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Fix Aspect (Keep Width)")); + e_menu_item_callback_set(mi, _pager_menu_cb_aspect_keep_width, face->pager); } static void @@ -708,6 +733,7 @@ Evas_Object *o; E_Border_List *bl; E_Border *bd; + Evas_Coord x, y, w, h; pd = E_NEW(Pager_Desk, 1); if (!pd) return NULL; @@ -726,7 +752,22 @@ e_table_pack(face->table_object, o, xpos, ypos, 1, 1); e_table_pack_options_set(o, 1, 1, 1, 1, 0.5, 0.5, 0, 0, -1, -1); evas_object_show(o); - + + if ((face->desk_inset.l == -1) && + (face->desk_inset.r == -1) && + (face->desk_inset.t == -1) && + (face->desk_inset.b == -1)) + { + evas_object_resize(pd->desk_object, 1000, 1000); + edje_object_calc_force(pd->desk_object); + edje_object_part_geometry_get(pd->desk_object, "items", &x, &y, &w, &h); + + face->desk_inset.l = x; + face->desk_inset.r = 1000 - (x + w); + face->desk_inset.t = y; + face->desk_inset.b = 1000 - (y + h); + } + o = evas_object_rectangle_add(face->evas); pd->event_object = o; evas_object_layer_set(o, 2); @@ -748,7 +789,7 @@ e_layout_virtual_size_set(o, desk->zone->w, desk->zone->h); edje_object_part_swallow(pd->desk_object, "items", pd->layout_object); evas_object_show(o); - + bl = e_container_border_list_first(desk->zone->container); while ((bd = e_container_border_list_next(bl))) { @@ -2025,18 +2066,9 @@ { E_Event_Dnd_Enter *ev; Pager_Face *face; - int x, y; - double w, h; ev = event_info; face = data; - - /* FIXME, check if the pager module has border */ - w = face->fw / (double) face->xnum; - h = face->fh / (double) face->ynum; - - x = (ev->x - face->fx) / w; - y = (ev->y - face->fy) / h; } static void @@ -2302,3 +2334,57 @@ pager->conf->popup = e_menu_item_toggle_get(mi); e_config_save_queue(); } + +static void +_pager_menu_cb_aspect_keep_height(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Pager *pager; + Evas_List *l; + + pager = data; + + for (l = pager->faces; l; l = l->next) + { + Pager_Face *face; + int w, h; + + face = l->data; + + h = ((face->fh - (face->inset.t + face->inset.b)) / face->ynum) - + (face->desk_inset.t + face->desk_inset.b); + + w = h * face->zone->w / (double)face->zone->h; + w += (face->desk_inset.l + face->desk_inset.r); + w *= face->xnum; + w += (face->inset.l + face->inset.r); + + e_gadman_client_resize(face->gmc, w, face->fh); + } +} + +static void +_pager_menu_cb_aspect_keep_width(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Pager *pager; + Evas_List *l; + + pager = data; + + for (l = pager->faces; l; l = l->next) + { + Pager_Face *face; + int w, h; + + face = l->data; + + w = ((face->fw - (face->inset.l + face->inset.r)) / face->xnum) - + (face->desk_inset.l + face->desk_inset.r); + + h = w * face->zone->h / (double)face->zone->w; + h += (face->desk_inset.t + face->desk_inset.b); + h *= face->ynum; + h += (face->inset.t + face->inset.b); + + e_gadman_client_resize(face->gmc, face->fw, h); + } +} ------------------------------------------------------- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs