Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_border.c e_border.h e_int_config_window_display.c 
        e_ipc_handlers.h e_place.c 


Log Message:


anitgadget placement policy

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v
retrieving revision 1.478
retrieving revision 1.479
diff -u -3 -r1.478 -r1.479
--- e_border.c  31 Jan 2006 12:06:47 -0000      1.478
+++ e_border.c  3 Feb 2006 06:13:30 -0000       1.479
@@ -5306,7 +5306,7 @@
                       else
                         new_y = bd->zone->y;
 
-                      if (e_config->window_placement_policy == 
E_WINDOW_PLACEMENT_SMART)
+                      if ((e_config->window_placement_policy == 
E_WINDOW_PLACEMENT_SMART)||(e_config->window_placement_policy == 
E_WINDOW_PLACEMENT_ANTIGADGET))
                         {
                            skiplist = evas_list_append(skiplist, bd);
                            e_place_zone_region_smart(bd->zone, skiplist,
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.h,v
retrieving revision 1.128
retrieving revision 1.129
diff -u -3 -r1.128 -r1.129
--- e_border.h  6 Jan 2006 13:56:45 -0000       1.128
+++ e_border.h  3 Feb 2006 06:13:32 -0000       1.129
@@ -63,6 +63,7 @@
 typedef enum _E_Window_Placement
 {
    E_WINDOW_PLACEMENT_SMART,
+   E_WINDOW_PLACEMENT_ANTIGADGET,
    E_WINDOW_PLACEMENT_CURSOR,
    E_WINDOW_PLACEMENT_MANUAL
 } E_Window_Placement;
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/apps/e/src/bin/e_int_config_window_display.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- e_int_config_window_display.c       31 Jan 2006 08:02:18 -0000      1.8
+++ e_int_config_window_display.c       3 Feb 2006 06:13:32 -0000       1.9
@@ -152,6 +152,8 @@
    rg = e_widget_radio_group_new(&(cfdata->placement));
    ob = e_widget_radio_add(evas, _("Smart Placement"), 
E_WINDOW_PLACEMENT_SMART, rg);
    e_widget_framelist_object_append(of, ob);
+   ob = e_widget_radio_add(evas, _("Dont hide Gadgets"), 
E_WINDOW_PLACEMENT_ANTIGADGET, rg);
+   e_widget_framelist_object_append(of, ob);
    ob = e_widget_radio_add(evas, _("Place at mouse pointer"), 
E_WINDOW_PLACEMENT_CURSOR, rg);
    e_widget_framelist_object_append(of, ob);
    ob = e_widget_radio_add(evas, _("Place manually with the mouse"), 
E_WINDOW_PLACEMENT_MANUAL, rg);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_ipc_handlers.h,v
retrieving revision 1.117
retrieving revision 1.118
diff -u -3 -r1.117 -r1.118
--- e_ipc_handlers.h    17 Jan 2006 18:31:16 -0000      1.117
+++ e_ipc_handlers.h    3 Feb 2006 06:13:32 -0000       1.118
@@ -5804,16 +5804,17 @@
 /****************************************************************************/
 #define HDL E_IPC_OP_WINDOW_PLACEMENT_POLICY_SET
 #if (TYPE == E_REMOTE_OPTIONS)
-   OP("-window-placement-policy-set", 1, "Set the window placement policy. 
OPT1 = SMART, CURSOR or MANUAL", 0, HDL)
+   OP("-window-placement-policy-set", 1, "Set the window placement policy. 
OPT1 = SMART, ANTIGADGET, CURSOR or MANUAL", 0, HDL)
 #elif (TYPE == E_REMOTE_OUT)
    REQ_INT_START(HDL)
    int value = 0;
    if (!strcmp(params[0], "SMART")) value = E_WINDOW_PLACEMENT_SMART;
    else if (!strcmp(params[0], "CURSOR")) value = E_WINDOW_PLACEMENT_CURSOR;
    else if (!strcmp(params[0], "MANUAL")) value = E_WINDOW_PLACEMENT_MANUAL;
+   else if (!strcmp(params[0], "ANTIGADGET")) value = 
E_WINDOW_PLACEMENT_ANTIGADGET;
    else
      {
-        printf("window placement policy must be SMART, CURSOR or MANUAL\n");
+        printf("window placement policy must be SMART, ANTIGADGET, CURSOR or 
MANUAL\n");
         exit(-1);
      }
    REQ_INT_END(value, HDL);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_place.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- e_place.c   7 Jan 2006 10:39:45 -0000       1.17
+++ e_place.c   3 Feb 2006 06:13:32 -0000       1.18
@@ -90,10 +90,59 @@
 
    x -= zone->x;
    y -= zone->y;
+      
+   if (e_config->window_placement_policy == E_WINDOW_PLACEMENT_ANTIGADGET)
+     {
+      Evas_List *l;
+      int cx1, cx2, cy1, cy2;
+
+      cx1 = zone->x;
+      cy1 = zone->y;
+      cx2 = zone->x + zone->w;
+      cy2 = zone->y + zone->h;
    
-   zw = zone->w;
-   zh = zone->h;
-   
+      /* Find the smallest box */
+      for (l = zone->container->gadman->clients; l; l = l->next)
+        {
+           E_Gadman_Client *gmc;
+          double ax, ay;
+
+          gmc = l->data;
+          if ((gmc->zone != zone)) continue;
+
+          ax = gmc->ax;
+          ay = gmc->ay;
+
+          if (((ax == 0.0) || (ax == 1.0)) &&
+              ((ay == 0.0) || (ay == 1.0)))
+            {
+               /* corner gadget */
+               /* Fake removal from one alignment :) */
+               if (gmc->w > gmc->h)
+                 ax = 0.5;
+               else
+                 ay = 0.5;
+            }
+
+          if ((ax == 0.0) && (gmc->x + gmc->w) > cx1)
+            cx1 = (gmc->x + gmc->w);
+          else if ((ax == 1.0) && (gmc->x < cx2))
+            cx2 = gmc->x;
+          else if ((ay == 0.0) && ((gmc->y + gmc->h) > cy1))
+            cy1 = (gmc->y + gmc->h);
+          else if ((ay == 1.0) && (gmc->y < cy2))
+            cy2 = gmc->y;
+        }
+
+
+      zw = cx2 - cx1;
+      zh = cy2 - cy1;
+     }
+   else
+     {
+            zw = zone->w;
+            zh = zone->h;
+     }
    u_x = calloc(zw + 1, sizeof(char));
    u_y = calloc(zh + 1, sizeof(char));
    
@@ -186,8 +235,8 @@
        {
           for (i = 0; i < a_w - 1; i++)
             {
-               if ((a_x[i] < (zone->w - w)) &&
-                   (a_y[j] < (zone->h - h)))
+               if ((a_x[i] < (zw - w)) &&
+                   (a_y[j] < (zh - h)))
                  {
                     int ar = 0;
 
@@ -250,7 +299,7 @@
                             goto done;
                       }
                  }
-               if ((a_x[i + 1] - w > 0) && (a_y[j] < (zone->h - h)))
+               if ((a_x[i + 1] - w > 0) && (a_y[j] < (zh - h)))
                  {
                     int ar = 0;
 
@@ -376,7 +425,7 @@
                             goto done;
                       }
                  }
-               if ((a_x[i] < (zone->w - w)) && (a_y[j + 1] - h > 0))
+               if ((a_x[i] < (zw - w)) && (a_y[j + 1] - h > 0))
                  {
                     int ar = 0;
 




-------------------------------------------------------
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://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to