예제 #1
0
파일: display.cpp 프로젝트: JakimLi/kwm
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);
    }
}
예제 #2
0
파일: display.cpp 프로젝트: Speaky10k/kwm
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);
    }
}