예제 #1
0
파일: Desk.cs 프로젝트: crystaldust/Docky
        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);
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
		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);
			}
		}