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

Reply via email to