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