void HandleCursorPositionChanged(object sender, CursorPostionChangedArgs e) { Gdk.Point cursor = Owner.CursorTracker.Cursor; int monitor = Owner.Screen.GetMonitorAtPoint(cursor.X, cursor.Y); Gdk.Rectangle geo = Owner.Screen.GetMonitorGeometry(monitor); int activeRegion = Math.Min(geo.Height / 3, geo.Width / 3); Gdk.Rectangle left = new Gdk.Rectangle(geo.X, geo.Y + activeRegion, activeRegion, geo.Height - activeRegion * 2); Gdk.Rectangle top = new Gdk.Rectangle(geo.X + activeRegion, geo.Y, geo.Width - activeRegion * 2, activeRegion); Gdk.Rectangle right = new Gdk.Rectangle(geo.X + geo.Width - activeRegion, geo.Y + activeRegion, activeRegion, geo.Height - activeRegion * 2); Gdk.Rectangle bottom = new Gdk.Rectangle(geo.X + activeRegion, geo.Y + geo.Height - activeRegion, geo.Width - activeRegion * 2, activeRegion); DockPosition target; if (top.Contains(cursor)) { target = DockPosition.Top; } else if (bottom.Contains(cursor)) { target = DockPosition.Bottom; } else if (left.Contains(cursor)) { target = DockPosition.Left; } else if (right.Contains(cursor)) { target = DockPosition.Right; } else { return; } IDockPreferences prefs = Owner.Preferences; if (prefs.Position != target || prefs.MonitorNumber != monitor) { Dock d = Docky.Controller.DocksForMonitor(monitor).FirstOrDefault(dock => dock.Preferences.Position == target); if (d == null) { prefs.MonitorNumber = monitor; prefs.Position = target; } else { d.Preferences.MonitorNumber = prefs.MonitorNumber; d.Preferences.Position = prefs.Position; prefs.MonitorNumber = monitor; prefs.Position = target; } } }
void RegisterPreferencesEvents (IDockPreferences preferences) { preferences.AutohideChanged += PreferencesAutohideChanged; preferences.PanelModeChanged += PreferencesPanelModeChanged; preferences.IconSizeChanged += PreferencesIconSizeChanged; preferences.PositionChanged += PreferencesPositionChanged; preferences.ThreeDimensionalChanged += PreferencesThreeDimensionalChanged; preferences.ZoomEnabledChanged += PreferencesZoomEnabledChanged; preferences.ZoomPercentChanged += PreferencesZoomPercentChanged; preferences.ItemProvidersChanged += PreferencesItemProvidersChanged; foreach (AbstractDockItemProvider provider in preferences.ItemProviders) RegisterItemProvider (provider); }