void MoveWindowToDisplay(window_info *Window, int Shift, bool Relative) { int NewScreenIndex = -1; if(Relative) NewScreenIndex = Shift == 1 ? GetIndexOfNextScreen() : GetIndexOfPrevScreen(); else NewScreenIndex = Shift; screen_info *NewScreen = GetDisplayFromScreenID(NewScreenIndex); if(NewScreen && NewScreen != KWMScreen.Current) { space_info *SpaceOfWindow = GetActiveSpaceOfScreen(KWMScreen.Current); SpaceOfWindow->FocusedWindowID = -1; if(IsWindowFloating(Window->WID, NULL)) CenterWindow(NewScreen, Window); else AddWindowToTreeOfUnfocusedMonitor(NewScreen, Window); } }
void CycleFocusedWindowDisplay(int Shift, bool Relative) { screen_info *Screen = GetDisplayOfWindow(FocusedWindow); int NewScreenIndex = -1; if(Relative) { if(Shift == 1) NewScreenIndex = (Screen->ID + 1 >= ActiveDisplaysCount) ? 0 : Screen->ID + 1; else if(Shift == -1) NewScreenIndex = (Screen->ID - 1 < 0) ? ActiveDisplaysCount - 1 : Screen->ID - 1; } else { NewScreenIndex = Shift; } if(NewScreenIndex != Screen->ID) { screen_info *NewScreen = GetDisplayFromScreenID(NewScreenIndex); AddWindowToTreeOfUnfocusedMonitor(NewScreen); } }