Enlightenment CVS committal Author : kwo Project : e16 Module : e
Dir : e16/e/src Modified Files: arrange.c draw.c ewin-ops.c ewins.c ewins.h menus.c moveresize.c Log Message: Fix window sliding in new boxed mode. =================================================================== RCS file: /cvs/e/e16/e/src/arrange.c,v retrieving revision 1.98 retrieving revision 1.99 diff -u -3 -r1.98 -r1.99 --- arrange.c 17 Jan 2007 01:10:42 -0000 1.98 +++ arrange.c 16 Jun 2007 08:41:53 -0000 1.99 @@ -1008,7 +1008,8 @@ if (Conf.place.cleanupslide) SlideEwinTo(ewin, EoGetX(ewin), EoGetY(ewin), - ret[i].x, ret[i].y, Conf.place.slidespeedcleanup); + ret[i].x, ret[i].y, Conf.place.slidespeedcleanup, + Conf.place.slidemode); else EwinMove(ewin, ret[i].x, ret[i].y); } =================================================================== RCS file: /cvs/e/e16/e/src/draw.c,v retrieving revision 1.100 retrieving revision 1.101 diff -u -3 -r1.100 -r1.101 --- draw.c 15 Jun 2007 19:42:41 -0000 1.100 +++ draw.c 16 Jun 2007 08:41:53 -0000 1.101 @@ -799,12 +799,10 @@ { static EObj *shape_win = NULL; + if (firstlast == 0 && !shape_win) + shape_win = _ShapeCreateWin(); if (!shape_win) - { - shape_win = _ShapeCreateWin(); - if (!shape_win) - return; - } + return; _ShapeSetBox(shape_win, x, y, w, h, bl, br, bt, bb, seqno); EobjMap(shape_win, 0); =================================================================== RCS file: /cvs/e/e16/e/src/ewin-ops.c,v retrieving revision 1.119 retrieving revision 1.120 diff -u -3 -r1.119 -r1.120 --- ewin-ops.c 11 Jun 2007 22:28:35 -0000 1.119 +++ ewin-ops.c 16 Jun 2007 08:41:53 -0000 1.120 @@ -119,132 +119,6 @@ } void -SlideEwinTo(EWin * ewin, int fx, int fy, int tx, int ty, int speed) -{ - int k, x, y, tmpx, tmpy; - char firstlast; - - firstlast = 0; - Mode.place.doing_slide = 1; - FocusEnable(0); - SoundPlay("SOUND_WINDOW_SLIDE"); - - if (Conf.place.slidemode > 0) - EGrabServer(); - - tmpx = abs(tx - fx) + abs(ty - fy); - tmpx = (tmpx > 0) ? (VRoot.w + VRoot.h) / tmpx : 100; - speed *= tmpx; - - ETimedLoopInit(0, 1024, speed); - for (k = 0; k <= 1024;) - { - x = ((fx * (1024 - k)) + (tx * k)) >> 10; - y = ((fy * (1024 - k)) + (ty * k)) >> 10; - tmpx = x; - tmpy = y; - if (Conf.place.slidemode == 0) - EoMove(ewin, tmpx, tmpy); - else - DrawEwinShape(ewin, Conf.place.slidemode, tmpx, tmpy, - ewin->client.w, ewin->client.h, firstlast, 0); - if (firstlast == 0) - firstlast = 1; - - k = ETimedLoopNext(); - } - - ewin->state.animated = 0; - Mode.place.doing_slide = 0; - - if (Conf.place.slidemode) - DrawEwinShape(ewin, Conf.place.slidemode, tx, ty, - ewin->client.w, ewin->client.h, 2, 0); - EwinOpMove(ewin, OPSRC_USER, tx, ty); - - FocusEnable(1); - - if (Conf.place.slidemode > 0) - EUngrabServer(); - - SoundPlay("SOUND_WINDOW_SLIDE_END"); -} - -void -SlideEwinsTo(EWin ** ewin, int *fx, int *fy, int *tx, int *ty, int num_wins, - int speed) -{ - int k, *x, *y, tmpx, tmpy, tmpw, tmph, i; - char firstlast; - - if (num_wins <= 0) - return; - - x = EMALLOC(int, num_wins); - y = EMALLOC(int, num_wins); - - if (!x || !y) - goto done; - - firstlast = 0; - Mode.place.doing_slide = 1; - FocusEnable(0); - SoundPlay("SOUND_WINDOW_SLIDE"); - - if (Conf.place.slidemode > 0) - EGrabServer(); - - ETimedLoopInit(0, 1024, speed); - for (k = 0; k <= 1024;) - { - for (i = 0; i < num_wins; i++) - { - if (!ewin[i]) - continue; - - x[i] = ((fx[i] * (1024 - k)) + (tx[i] * k)) >> 10; - y[i] = ((fy[i] * (1024 - k)) + (ty[i] * k)) >> 10; - tmpx = x[i]; - tmpy = y[i]; - tmpw = ewin[i]->client.w; - tmph = ewin[i]->client.h; - if (ewin[i]->type == EWIN_TYPE_MENU) - EoMove(ewin[i], tmpx, tmpy); - else - DrawEwinShape(ewin[i], 0, tmpx, tmpy, tmpw, tmph, firstlast, i); - if (firstlast == 0) - firstlast = 1; - } - /* We may loop faster here than originally intended */ - k = ETimedLoopNext(); - } - - for (i = 0; i < num_wins; i++) - { - if (ewin[i]) - { - DrawEwinShape(ewin[i], 0, x[i], y[i], ewin[i]->client.w, - ewin[i]->client.h, 2, i); - EwinMove(ewin[i], tx[i], ty[i]); - } - } - - Mode.place.doing_slide = 0; - FocusEnable(1); - - if (Conf.place.slidemode > 0) - EUngrabServer(); - - SoundPlay("SOUND_WINDOW_SLIDE_END"); - - done: - if (x) - Efree(x); - if (y) - Efree(y); -} - -void EwinFixPosition(EWin * ewin) { int x, y; =================================================================== RCS file: /cvs/e/e16/e/src/ewins.c,v retrieving revision 1.199 retrieving revision 1.200 diff -u -3 -r1.199 -r1.200 --- ewins.c 20 May 2007 08:08:58 -0000 1.199 +++ ewins.c 16 Jun 2007 08:41:53 -0000 1.200 @@ -1843,7 +1843,7 @@ goto done; SlideEwinTo(ewin, EoGetX(ewin), EoGetY(ewin), ewin->req_x, ewin->req_y, - Conf.place.slidespeedmap); + Conf.place.slidespeedmap, Conf.place.slidemode); done: Mode.place.doing_slide = 0; =================================================================== RCS file: /cvs/e/e16/e/src/ewins.h,v retrieving revision 1.75 retrieving revision 1.76 diff -u -3 -r1.75 -r1.76 --- ewins.h 11 Jun 2007 22:28:35 -0000 1.75 +++ ewins.h 16 Jun 2007 08:41:53 -0000 1.76 @@ -400,9 +400,9 @@ /* ewin-ops.c */ void SlideEwinTo(EWin * ewin, int fx, int fy, int tx, int ty, - int speed); + int speed, int mode); void SlideEwinsTo(EWin ** ewin, int *fx, int *fy, int *tx, - int *ty, int num_wins, int speed); + int *ty, int num_wins, int speed, int mode); void EwinFixPosition(EWin * ewin); void EwinMove(EWin * ewin, int x, int y); void EwinResize(EWin * ewin, int w, int h); =================================================================== RCS file: /cvs/e/e16/e/src/menus.c,v retrieving revision 1.279 retrieving revision 1.280 diff -u -3 -r1.279 -r1.280 --- menus.c 5 Jun 2007 11:41:23 -0000 1.279 +++ menus.c 16 Jun 2007 08:41:53 -0000 1.280 @@ -1475,7 +1475,7 @@ } SlideEwinsTo(menus, fx, fy, tx, ty, Mode_menus.current_depth, - Conf.shadespeed); + Conf.shadespeed, 0); if (((xdist != 0) || (ydist != 0)) && (Conf.menus.warp)) EXWarpPointer(None, xdist, ydist); @@ -1634,7 +1634,7 @@ /* Disable menu item events while sliding */ MenusSetEvents(0); - SlideEwinsTo(menus, fx, fy, tx, ty, i, Conf.shading.speed); + SlideEwinsTo(menus, fx, fy, tx, ty, i, Conf.shading.speed, 0); MenusSetEvents(1); if (Conf.menus.warp) =================================================================== RCS file: /cvs/e/e16/e/src/moveresize.c,v retrieving revision 1.77 retrieving revision 1.78 diff -u -3 -r1.77 -r1.78 --- moveresize.c 15 Jun 2007 19:42:41 -0000 1.77 +++ moveresize.c 16 Jun 2007 08:41:53 -0000 1.78 @@ -897,3 +897,70 @@ return did_end; } + +void +SlideEwinTo(EWin * ewin, int fx, int fy, int tx, int ty, int speed, int mode) +{ + SlideEwinsTo(&ewin, &fx, &fy, &tx, &ty, 1, speed, mode); +} + +void +SlideEwinsTo(EWin ** ewin, int *fx, int *fy, int *tx, int *ty, int num_wins, + int speed, int mode) +{ + int k, x, y, w, h, i; + char firstlast; + + if (num_wins <= 0) + return; + + firstlast = 0; + FocusEnable(0); + SoundPlay("SOUND_WINDOW_SLIDE"); + + Mode_mr.grab_server = _NeedServerGrab(mode); + if (Mode_mr.grab_server) + EGrabServer(); + + ETimedLoopInit(0, 1024, speed); + for (k = 0; k <= 1024;) + { + for (i = 0; i < num_wins; i++) + { + if (!ewin[i]) + continue; + + x = ((fx[i] * (1024 - k)) + (tx[i] * k)) >> 10; + y = ((fy[i] * (1024 - k)) + (ty[i] * k)) >> 10; + w = ewin[i]->client.w; + h = ewin[i]->client.h; + if (mode == 0) + EoMove(ewin[i], x, y); + else + DrawEwinShape(ewin[i], mode, x, y, w, h, firstlast, i); + firstlast = 1; + } + /* We may loop faster here than originally intended */ + k = ETimedLoopNext(); + } + + for (i = 0; i < num_wins; i++) + { + if (!ewin[i]) + continue; + + ewin[i]->state.animated = 0; + + if (mode > 0) + DrawEwinShape(ewin[i], mode, tx[i], ty[i], ewin[i]->client.w, + ewin[i]->client.h, 2, i); + EwinMove(ewin[i], tx[i], ty[i]); + } + + FocusEnable(1); + + if (Mode_mr.grab_server) + EUngrabServer(); + + SoundPlay("SOUND_WINDOW_SLIDE_END"); +} ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs