public void SetNeighbor(Wnck.MotionDirection direction, Desk newneighbor) { Desk oldneighbor = GetNeighbor(direction); if (oldneighbor != null && oldneighbor != newneighbor) { neighbors.Remove(direction); if (oldneighbor.GetNeighbor(OppositeDirection(direction)) == this) { oldneighbor.SetNeighbor(OppositeDirection(direction), null); } } if (oldneighbor != newneighbor && newneighbor != null) { neighbors.Add(direction, newneighbor); if (GetNeighbor(OppositeDirection(direction)) == null) { Desk oldwrapneighbor = newneighbor.GetWrapNeighbor(OppositeDirection(direction)); if (oldwrapneighbor != null) { SetWrapNeighbor(OppositeDirection(direction), oldwrapneighbor); } else { SetWrapNeighbor(OppositeDirection(direction), newneighbor); } } newneighbor.SetNeighbor(OppositeDirection(direction), this); } }
bool SwitchDesk(Wnck.MotionDirection direction) { Desk activedesk = Desks.Find(desk => desk.IsActive); Desk nextdesk = activedesk.GetNeighbor(direction); if (WrappedScrolling) { // Walk through the columns/rows and jump between [1,1] and [n,m] Desk tmp = activedesk.GetWrapNeighbor(direction); if (tmp != null && (nextdesk = tmp.GetNeighbor(Desk.AlternateMovingDirection(direction))) == null) { if ((nextdesk = tmp.GetWrapNeighbor(Desk.AlternateMovingDirection(direction))) == null) { nextdesk = tmp; } } } if (nextdesk != null) { nextdesk.Activate(); return(true); } return(false); }
public void SetNeighbor (Wnck.MotionDirection direction, Desk newneighbor) { Desk oldneighbor = GetNeighbor (direction); if (oldneighbor != null && oldneighbor != newneighbor) { neighbors.Remove (direction); if (oldneighbor.GetNeighbor (OppositeDirection (direction)) == this) oldneighbor.SetNeighbor (OppositeDirection (direction), null); } if (oldneighbor != newneighbor && newneighbor != null) { neighbors.Add (direction, newneighbor); if (GetNeighbor (OppositeDirection (direction)) == null) { Desk oldwrapneighbor = newneighbor.GetWrapNeighbor (OppositeDirection (direction)); if (oldwrapneighbor != null) { SetWrapNeighbor (OppositeDirection (direction), oldwrapneighbor); } else { SetWrapNeighbor (OppositeDirection (direction), newneighbor); } } newneighbor.SetNeighbor (OppositeDirection (direction), this); } }