Browse Source

Fix a bug where the initial text disappeared when clicking on any other editable text.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@6410 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Kumar Devvrat 16 years ago
parent
commit
ff9486c3d6
  1. 70
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/InPlaceEditorExtension.cs

70
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/InPlaceEditorExtension.cs

@ -78,11 +78,11 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
void PropertyChanged(object sender,PropertyChangedEventArgs e) void PropertyChanged(object sender,PropertyChangedEventArgs e)
{ {
if (textBlock != null) { if (textBlock != null) {
if (e.PropertyName == "Width"){ if (e.PropertyName == "Width"){
placement.XOffset = Mouse.GetPosition((IInputElement) element).X - Mouse.GetPosition(textBlock).X-2.8; placement.XOffset = Mouse.GetPosition((IInputElement) element).X - Mouse.GetPosition(textBlock).X-2.8;
editor.MaxWidth = Math.Max((ModelTools.GetWidth(element) - placement.XOffset), 0); editor.MaxWidth = Math.Max((ModelTools.GetWidth(element) - placement.XOffset), 0);
} }
if (e.PropertyName == "Height"){ if (e.PropertyName == "Height"){
placement.YOffset = Mouse.GetPosition((IInputElement) element).Y - Mouse.GetPosition(textBlock).Y-1; placement.YOffset = Mouse.GetPosition((IInputElement) element).Y - Mouse.GetPosition(textBlock).Y-1;
editor.MaxHeight = Math.Max((ModelTools.GetHeight(element) - placement.YOffset), 0); editor.MaxHeight = Math.Max((ModelTools.GetHeight(element) - placement.YOffset), 0);
} }
@ -120,7 +120,7 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
/* Hides the TextBlock in control because of some minor offset in placement, overlaping makes text look fuzzy */ /* Hides the TextBlock in control because of some minor offset in placement, overlaping makes text look fuzzy */
textBlock.Visibility = Visibility.Hidden; // textBlock.Visibility = Visibility.Hidden; //
AdornerPanel.SetPlacement(editor, placement); AdornerPanel.SetPlacement(editor, placement);
RemoveBorder(); // Remove the highlight border. RemoveBorder(); // Remove the highlight border.
} }
@ -199,46 +199,48 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
#region HighlightBorder #region HighlightBorder
private Border _border; private Border _border;
private sealed class BorderPlacement : AdornerPlacement private sealed class BorderPlacement : AdornerPlacement
{ {
private readonly FrameworkElement _element; private readonly FrameworkElement _element;
public BorderPlacement(FrameworkElement element) public BorderPlacement(FrameworkElement element)
{ {
_element = element; _element = element;
} }
public override void Arrange(AdornerPanel panel, UIElement adorner, Size adornedElementSize) public override void Arrange(AdornerPanel panel, UIElement adorner, Size adornedElementSize)
{ {
Point p = _element.TranslatePoint(new Point(), panel.AdornedElement); Point p = _element.TranslatePoint(new Point(), panel.AdornedElement);
var rect = new Rect(p, _element.RenderSize); var rect = new Rect(p, _element.RenderSize);
rect.Inflate(3, 1); rect.Inflate(3, 1);
adorner.Arrange(rect); adorner.Arrange(rect);
} }
} }
private void DrawBorder(FrameworkElement item) private void DrawBorder(FrameworkElement item)
{ {
if (editor != null && editor.Visibility != Visibility.Visible) { if (editor != null && editor.Visibility != Visibility.Visible) {
if (adornerPanel.Children.Contains(_border)) if (adornerPanel.Children.Contains(_border))
adornerPanel.Children.Remove(_border); adornerPanel.Children.Remove(_border);
_border = new Border {BorderBrush = Brushes.Gray, BorderThickness = new Thickness(1.4), ToolTip = "Edit this Text", SnapsToDevicePixels = true}; _border = new Border {BorderBrush = Brushes.Gray, BorderThickness = new Thickness(1.4), ToolTip = "Edit this Text", SnapsToDevicePixels = true};
var shadow = new DropShadowEffect {Color = Colors.LightGray, ShadowDepth = 3}; var shadow = new DropShadowEffect {Color = Colors.LightGray, ShadowDepth = 3};
_border.Effect = shadow; _border.Effect = shadow;
var bp = new BorderPlacement(item); var bp = new BorderPlacement(item);
AdornerPanel.SetPlacement(_border, bp); AdornerPanel.SetPlacement(_border, bp);
adornerPanel.Children.Add(_border); adornerPanel.Children.Add(_border);
} }
} }
private void RemoveBorder() private void RemoveBorder()
{ {
if (adornerPanel.Children.Contains(_border)) if (adornerPanel.Children.Contains(_border))
adornerPanel.Children.Remove(_border); adornerPanel.Children.Remove(_border);
} }
#endregion #endregion
protected override void OnRemove() protected override void OnRemove()
{ {
if (textBlock != null)
textBlock.Visibility = Visibility.Visible;
ExtendedItem.PropertyChanged -= PropertyChanged; ExtendedItem.PropertyChanged -= PropertyChanged;
designPanel.PreviewMouseLeftButtonDown -= MouseDown; designPanel.PreviewMouseLeftButtonDown -= MouseDown;
designPanel.PreviewMouseMove -= MouseMove; designPanel.PreviewMouseMove -= MouseMove;

Loading…
Cancel
Save