Enlightenment CVS committal Author : kwo Project : e16 Module : e
Dir : e16/e/src Modified Files: E.h borders.c iclass.c menus.c Log Message: Cache borderpart ImageState (primarily to avoid flickering text on enter/leave). =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v retrieving revision 1.287 retrieving revision 1.288 diff -u -3 -r1.287 -r1.288 --- E.h 26 Jun 2004 17:33:39 -0000 1.287 +++ E.h 26 Jun 2004 17:49:01 -0000 1.288 @@ -855,6 +855,7 @@ char expose; char no_expose; char left; + ImageState *is; } EWinBit; @@ -1784,7 +1785,7 @@ void HonorIclass(char *s, int id); void EwinWithdraw(EWin * ewin); void SyncBorderToEwin(EWin * ewin); -void BorderWinpartChange(EWin * ewin, int i); +void BorderWinpartChange(EWin * ewin, int i, int force); void EwinBorderUpdateInfo(EWin * ewin); void EwinBorderUpdateState(EWin * ewin); void EwinEventDestroy(EWin * ewin); @@ -2336,6 +2337,8 @@ ImageState *CreateImageState(void); void ImageStatePopulate(ImageState * is); void ImageStateRealize(ImageState * is); +ImageState *IclassGetImageState(ImageClass * iclass, int state, + int active, int sticky); void IclassPopulate(ImageClass * iclass); int IclassIsTransparent(ImageClass * iclass); void IclassApply(ImageClass * iclass, Window win, int w, int h, =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/borders.c,v retrieving revision 1.195 retrieving revision 1.196 diff -u -3 -r1.195 -r1.196 --- borders.c 19 Jun 2004 01:31:20 -0000 1.195 +++ borders.c 26 Jun 2004 17:49:01 -0000 1.196 @@ -727,44 +727,6 @@ EDBUG_RETURN_; } -static int -BorderWinpartChangeContents(EWin * ewin, int i) -{ - int ret = 0; - const char *title; - - EDBUG(3, "BorderWinpartChangeContents"); - ret = 1; - switch (ewin->border->part[i].flags) - { - case FLAG_TITLE: - title = EwinGetTitle(ewin); - if (title) - TclassApply(ewin->border->part[i].iclass, ewin->bits[i].win, - ewin->bits[i].w, ewin->bits[i].h, ewin->active, - ewin->sticky, ewin->bits[i].state, ewin->bits[i].expose, - ewin->border->part[i].tclass, title); - break; - case FLAG_MINIICON: - break; - default: - break; - } - EDBUG_RETURN(ret); -} - -void -EwinBorderUpdateInfo(EWin * ewin) -{ - int i; - - for (i = 0; i < ewin->border->num_winparts; i++) - { - if (ewin->border->part[i].flags == FLAG_TITLE) - BorderWinpartChangeContents(ewin, i); - } -} - void EwinBorderUpdateState(EWin * ewin) { @@ -795,23 +757,39 @@ } static void -BorderWinpartITclassApply(EWin * ewin, int i) +BorderWinpartITclassApply(EWin * ewin, int i, int force) { EWinBit *ewb = &ewin->bits[i]; + ImageState *is; const char *title; + if (ewb->win == None) + return; + + is = IclassGetImageState(ewin->border->part[i].iclass, ewin->bits[i].state, + ewin->active, ewin->sticky); + if (!force && ewin->bits[i].is == is) + return; + ewin->bits[i].is = is; + IclassApply(ewin->border->part[i].iclass, ewb->win, ewb->w, ewb->h, ewin->active, ewin->sticky, ewb->state, ewb->expose, ST_BORDER); - if (ewin->border->part[i].flags == FLAG_TITLE) + switch (ewin->border->part[i].flags) { + case FLAG_TITLE: title = EwinGetTitle(ewin); if (title) TclassApply(ewin->border->part[i].iclass, ewb->win, ewb->w, ewb->h, ewin->active, ewin->sticky, ewb->state, ewb->expose, ewin->border->part[i].tclass, title); + break; + case FLAG_MINIICON: + break; + default: + break; } } @@ -840,7 +818,7 @@ if ((resize) || (ewb->expose)) { - BorderWinpartITclassApply(ewin, i); + BorderWinpartITclassApply(ewin, i, 1); ewb->expose = 0; ret = 1; } @@ -849,13 +827,11 @@ } void -BorderWinpartChange(EWin * ewin, int i) +BorderWinpartChange(EWin * ewin, int i, int force) { EDBUG(3, "BorderWinpartChange"); - BorderWinpartITclassApply(ewin, i); - if (ewin->bits[i].win) - BorderWinpartChangeContents(ewin, i); + BorderWinpartITclassApply(ewin, i, force); if (!ewin->shapedone || ewin->border->changes_shape) PropagateShapes(ewin->win); @@ -879,7 +855,7 @@ Mode.queue_up = 0; for (i = 0; i < ewin->border->num_winparts; i++) - BorderWinpartITclassApply(ewin, i); + BorderWinpartITclassApply(ewin, i, do_shape); if (do_shape || !ewin->shapedone || ewin->border->changes_shape) PropagateShapes(ewin->win); @@ -891,6 +867,18 @@ EDBUG_RETURN_; } +void +EwinBorderUpdateInfo(EWin * ewin) +{ + int i; + + for (i = 0; i < ewin->border->num_winparts; i++) + { + if (ewin->border->part[i].flags == FLAG_TITLE) + BorderWinpartITclassApply(ewin, i, 1); + } +} + static void BorderWinpartCalc(EWin * ewin, int i) { @@ -1679,6 +1667,7 @@ ewin->bits[i].expose = 0; ewin->bits[i].no_expose = 0; ewin->bits[i].left = 0; + ewin->bits[i].is = NULL; } } @@ -3476,7 +3465,7 @@ GrabThePointer(ewin->bits[j].win); ewin->bits[j].state = STATE_CLICKED; - BorderWinpartChange(ewin, j); + BorderWinpartChange(ewin, j, 0); if (ewin->border->part[j].aclass) EventAclass(ev, ewin, ewin->border->part[j].aclass); @@ -3492,7 +3481,7 @@ else ewin->bits[j].state = STATE_NORMAL; ewin->bits[j].left = 0; - BorderWinpartChange(ewin, j); + BorderWinpartChange(ewin, j, 0); win2 = WindowAtXY(ev->xbutton.x_root, ev->xbutton.y_root); if (win2 == Mode.context_win && (ewin->border->part[j].aclass)) @@ -3507,7 +3496,7 @@ else { ewin->bits[j].state = STATE_HILITED; - BorderWinpartChange(ewin, j); + BorderWinpartChange(ewin, j, 0); if (ewin->border->part[j].aclass) EventAclass(ev, ewin, ewin->border->part[j].aclass); } @@ -3521,7 +3510,7 @@ else { ewin->bits[j].state = STATE_NORMAL; - BorderWinpartChange(ewin, j); + BorderWinpartChange(ewin, j, 0); if (ewin->border->part[j].aclass) EventAclass(ev, ewin, ewin->border->part[j].aclass); } @@ -3532,7 +3521,7 @@ { ewin->bits[j].left = 0; ewin->bits[j].state = STATE_NORMAL; - BorderWinpartChange(ewin, j); + BorderWinpartChange(ewin, j, 0); return; ev = NULL; } =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/iclass.c,v retrieving revision 1.41 retrieving revision 1.42 diff -u -3 -r1.41 -r1.42 --- iclass.c 26 Jun 2004 17:33:40 -0000 1.41 +++ iclass.c 26 Jun 2004 17:49:01 -0000 1.42 @@ -362,8 +362,8 @@ return is; } -static ImageState * -IclassGetImageState2(ImageClass * iclass, int state, int active, int sticky) +ImageState * +IclassGetImageState(ImageClass * iclass, int state, int active, int sticky) { ImageState *is; @@ -813,7 +813,7 @@ if (iclass->external) EDBUG_RETURN_; - is = IclassGetImageState2(iclass, state, active, sticky); + is = IclassGetImageState(iclass, state, active, sticky); if (!is) EDBUG_RETURN_; @@ -876,7 +876,7 @@ if (iclass->external) EDBUG_RETURN_; - is = IclassGetImageState2(iclass, state, active, sticky); + is = IclassGetImageState(iclass, state, active, sticky); if (!is) EDBUG_RETURN_; =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/menus.c,v retrieving revision 1.139 retrieving revision 1.140 diff -u -3 -r1.139 -r1.140 --- menus.c 13 Jun 2004 22:37:22 -0000 1.139 +++ menus.c 26 Jun 2004 17:49:01 -0000 1.140 @@ -229,7 +229,7 @@ if (Mode.context_win == ewin99->bits[i99].win) { ewin99->bits[i99].state = STATE_NORMAL; - BorderWinpartChange(ewin99, i99); + BorderWinpartChange(ewin99, i99, 0); i99 = ewin99->border->num_winparts; } } @@ -386,7 +386,7 @@ if (Mode.context_win == ewin99->bits[i99].win) { ewin99->bits[i99].state = STATE_NORMAL; - BorderWinpartChange(ewin99, i99); + BorderWinpartChange(ewin99, i99, 0); i99 = ewin99->border->num_winparts; } } ------------------------------------------------------- This SF.Net email sponsored by Black Hat Briefings & Training. Attend Black Hat Briefings & Training, Las Vegas July 24-29 - digital self defense, top technical experts, no vendor pitches, unmatched networking opportunities. Visit www.blackhat.com _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs