Neopixel strip control without delays

Here it goes..

added 3 new mState.

const byte maximumState = 7;

case 5 : clear the leds and go on with next mState

    case 5:
      clearLEDs();
      mState=6;
      break;

case 6: FadeIn, when it is finished go on with the next mState

    case 6:
      if (flag == true && millis() - commonMillis >= 5 )
      {
        //restart the TIMER
        commonMillis = millis();

        //green
        tira.setPixelColor(0, 0, greenColor, 0);
        tira.setPixelColor(1, 0, greenColor, 0);
        tira.setPixelColor(2, 0, greenColor, 0);
        tira.setPixelColor(3, 0, greenColor, 0);
        tira.setPixelColor(4, 0, greenColor, 0);
        tira.setPixelColor(5, 0, greenColor, 0);
        tira.setPixelColor(6, 0, greenColor, 0);
        tira.setPixelColor(7, 0, greenColor, 0);
        tira.setPixelColor(8, 0, greenColor, 0);
        tira.setPixelColor(9, 0, greenColor, 0);
        tira.setPixelColor(10, 0, greenColor, 0);
        tira.setPixelColor(11, 0, greenColor, 0);
        tira.setPixelColor(12, 0, greenColor, 0);
        tira.setPixelColor(13, 0, greenColor, 0);
        tira.setPixelColor(14, 0, greenColor, 0);
        tira.show();
        greenColor++;
    }
      if(greenColor>=255){
      mState=7;
      }
      break;

case 7: FadeOut the pixels and loop with case 6

    case 7:
      if (flag == true && millis() - commonMillis >= 5 )
      {
        //restart the TIMER
        commonMillis = millis();

        //green
        tira.setPixelColor(0, 0, greenColor, 0);
        tira.setPixelColor(1, 0, greenColor, 0);
        tira.setPixelColor(2, 0, greenColor, 0);
        tira.setPixelColor(3, 0, greenColor, 0);
        tira.setPixelColor(4, 0, greenColor, 0);
        tira.setPixelColor(5, 0, greenColor, 0);
        tira.setPixelColor(6, 0, greenColor, 0);
        tira.setPixelColor(7, 0, greenColor, 0);
        tira.setPixelColor(8, 0, greenColor, 0);
        tira.setPixelColor(9, 0, greenColor, 0);
        tira.setPixelColor(10, 0, greenColor, 0);
        tira.setPixelColor(11, 0, greenColor, 0);
        tira.setPixelColor(12, 0, greenColor, 0);
        tira.setPixelColor(13, 0, greenColor, 0);
        tira.setPixelColor(14, 0, greenColor, 0);
        tira.show();
        greenColor--;
    }
    if(greenColor<=50){
      mState=6;
    }
    break;

The problem is that if you push the button on mState6 it doesn´t work. Because is on mState 6 and goes to mState 7 again.