diff -r 513caf1637bf -r b5ee436add3d client/src/Iri.Modernisation.Controls/View/ContextualBinderLayer/ContextualBinderLayer.xaml.cs --- a/client/src/Iri.Modernisation.Controls/View/ContextualBinderLayer/ContextualBinderLayer.xaml.cs Tue Nov 24 10:42:26 2009 +0100 +++ b/client/src/Iri.Modernisation.Controls/View/ContextualBinderLayer/ContextualBinderLayer.xaml.cs Wed Nov 25 09:39:26 2009 +0100 @@ -21,9 +21,11 @@ private Line _linkLine; private bool _active = false; private System.Windows.Threading.DispatcherTimer myDispatcherTimer; + private Point _menuAnnotationPoint; public ContextualBinderLayer() { InitializeComponent(); + Commands.PolemicElement.ElementSelected.Executed += new EventHandler(ElementSelected_Executed); Commands.ContextualBinderLayer.EndBind.Executed += new EventHandler(EndBind_Executed); MouseLeftButtonUp += new MouseButtonEventHandler(ContextualBinderLayer_MouseLeftButtonUp); MouseMove += new MouseEventHandler(ContextualBinderLayer_MouseMove); @@ -33,6 +35,11 @@ myDispatcherTimer.Tick +=new EventHandler(myDispatcherTimer_Tick); } + void ElementSelected_Executed(object sender, SLExtensions.Input.ExecutedEventArgs e) + { + _menuAnnotationPoint = ((MouseButtonEventArgs)e.Parameter).GetPosition(Application.Current.RootVisual); + } + void myDispatcherTimer_Tick(object sender, EventArgs e) { LayoutRoot.Background = PolemicTypeColorConverter.Convert(_movingBinder.PolemicType); @@ -79,19 +86,28 @@ void BeginBind_Executed(object sender, SLExtensions.Input.ExecutedEventArgs e) { + Point temp; + if(e.Source ==null) + { + temp = _menuAnnotationPoint; + } + else + { + temp = ((MouseButtonEventArgs)e.Source).GetPosition(Application.Current.RootVisual); + } LayoutRoot.Children.Clear(); _movingBinder =new ContextualLinkBinder( ((ContextualLinkBinder)e.Parameter)); _movingBinder.Margin = new Thickness( - ((MouseButtonEventArgs)e.Source).GetPosition(this).X - _movingBinder.Width/ 2, - ((MouseButtonEventArgs)e.Source).GetPosition(this).Y - _movingBinder.Height/2 , + temp.X - _movingBinder.Width/ 2, + temp.Y - _movingBinder.Height / 2, _movingBinder.Margin.Right, _movingBinder.Margin.Bottom); _linkLine = new Line() { - X1 = ((MouseButtonEventArgs)e.Source).GetPosition(this).X, - Y1 = ((MouseButtonEventArgs)e.Source).GetPosition(this).Y, - X2 = ((MouseButtonEventArgs)e.Source).GetPosition(this).X, - Y2 = ((MouseButtonEventArgs)e.Source).GetPosition(this).Y, + X1 = temp.X, + Y1 = temp.Y, + X2 = temp.X, + Y2 = temp.Y, Stroke = PolemicTypeColorConverter.Convert(_movingBinder.PolemicType), StrokeThickness = 2 };