refactory FloatWindowManager