This commit moves some of the logic around so that the logic in panel_activate_state is clearly separated by the state being activated. There are fewer nested and redundant checks, and it's easier to see the progression of interaction with the panel handler.