Browse Source

TextView.VirtualTop: X was a column number, Y a pixel position. Now both are pixel positions.

CSharpOutputVisitor: use System.Runtime.InteropServices.DefaultParameterValueAttribute when converting VB optional parameters.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2681 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
f21b08932d
  1. 10
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/CaretActions.cs
  2. 4
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/Caret.cs
  3. 3
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/AbstractCompletionWindow.cs
  4. 7
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/InsightWindow/InsightWindow.cs
  5. 4
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs
  6. 2
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaControl.cs
  7. 18
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextView.cs
  8. 40
      src/Libraries/NRefactory/Project/Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs

10
src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/CaretActions.cs

@ -102,7 +102,9 @@ namespace ICSharpCode.TextEditor.Actions @@ -102,7 +102,9 @@ namespace ICSharpCode.TextEditor.Actions
int visualLine = textArea.Document.GetVisibleLine(lineNr);
if (visualLine < textArea.Document.GetVisibleLine(textArea.Document.TotalNumberOfLines)) {
Point pos = new Point(textArea.TextView.GetDrawingXPos(lineNr, position.X),
textArea.TextView.DrawingPosition.Y + (visualLine + 1) * textArea.TextView.FontHeight - textArea.TextView.TextArea.VirtualTop.Y);
textArea.TextView.DrawingPosition.Y
+ (visualLine + 1) * textArea.TextView.FontHeight
- textArea.TextView.TextArea.VirtualTop.Y);
textArea.Caret.Position = textArea.TextView.GetLogicalPosition(pos);
textArea.SetCaretToDesiredColumn();
}
@ -184,7 +186,8 @@ namespace ICSharpCode.TextEditor.Actions @@ -184,7 +186,8 @@ namespace ICSharpCode.TextEditor.Actions
{
textArea.AutoClearSelection = false;
textArea.MotherTextAreaControl.VScrollBar.Value = Math.Max(textArea.MotherTextAreaControl.VScrollBar.Minimum, textArea.VirtualTop.Y - textArea.TextView.FontHeight);
textArea.MotherTextAreaControl.VScrollBar.Value = Math.Max(textArea.MotherTextAreaControl.VScrollBar.Minimum,
textArea.VirtualTop.Y - textArea.TextView.FontHeight);
}
}
@ -193,7 +196,8 @@ namespace ICSharpCode.TextEditor.Actions @@ -193,7 +196,8 @@ namespace ICSharpCode.TextEditor.Actions
public override void Execute(TextArea textArea)
{
textArea.AutoClearSelection = false;
textArea.MotherTextAreaControl.VScrollBar.Value = Math.Min(textArea.MotherTextAreaControl.VScrollBar.Maximum, textArea.VirtualTop.Y + textArea.TextView.FontHeight);
textArea.MotherTextAreaControl.VScrollBar.Value = Math.Min(textArea.MotherTextAreaControl.VScrollBar.Maximum,
textArea.VirtualTop.Y + textArea.TextView.FontHeight);
}
}
}

4
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/Caret.cs

@ -211,7 +211,9 @@ namespace ICSharpCode.TextEditor @@ -211,7 +211,9 @@ namespace ICSharpCode.TextEditor
get {
int xpos = textArea.TextView.GetDrawingXPos(this.line, this.column);
return new Point(textArea.TextView.DrawingPosition.X + xpos,
textArea.TextView.DrawingPosition.Y + (textArea.Document.GetVisibleLine(this.line)) * textArea.TextView.FontHeight - textArea.TextView.TextArea.VirtualTop.Y);
textArea.TextView.DrawingPosition.Y
+ (textArea.Document.GetVisibleLine(this.line)) * textArea.TextView.FontHeight
- textArea.TextView.TextArea.VirtualTop.Y);
}
}
int oldLine = -1;

3
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/AbstractCompletionWindow.cs

@ -44,7 +44,8 @@ namespace ICSharpCode.TextEditor.Gui.CompletionWindow @@ -44,7 +44,8 @@ namespace ICSharpCode.TextEditor.Gui.CompletionWindow
int xpos = textArea.TextView.GetDrawingXPos(caretPos.Y, caretPos.X);
int rulerHeight = textArea.TextEditorProperties.ShowHorizontalRuler ? textArea.TextView.FontHeight : 0;
Point pos = new Point(textArea.TextView.DrawingPosition.X + xpos,
textArea.TextView.DrawingPosition.Y + (textArea.Document.GetVisibleLine(caretPos.Y)) * textArea.TextView.FontHeight - textArea.TextView.TextArea.VirtualTop.Y + textArea.TextView.FontHeight + rulerHeight);
textArea.TextView.DrawingPosition.Y + (textArea.Document.GetVisibleLine(caretPos.Y)) * textArea.TextView.FontHeight
- textArea.TextView.TextArea.VirtualTop.Y + textArea.TextView.FontHeight + rulerHeight);
Point location = control.ActiveTextAreaControl.PointToScreen(pos);

7
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/InsightWindow/InsightWindow.cs

@ -61,10 +61,13 @@ namespace ICSharpCode.TextEditor.Gui.InsightWindow @@ -61,10 +61,13 @@ namespace ICSharpCode.TextEditor.Gui.InsightWindow
{
// move the window under the caret (don't change the x position)
TextLocation caretPos = control.ActiveTextAreaControl.Caret.Position;
int y = (int)((1 + caretPos.Y) * control.ActiveTextAreaControl.TextArea.TextView.FontHeight) - control.ActiveTextAreaControl.TextArea.VirtualTop.Y - 1 + control.ActiveTextAreaControl.TextArea.TextView.DrawingPosition.Y;
int y = (int)((1 + caretPos.Y) * control.ActiveTextAreaControl.TextArea.TextView.FontHeight)
- control.ActiveTextAreaControl.TextArea.VirtualTop.Y - 1
+ control.ActiveTextAreaControl.TextArea.TextView.DrawingPosition.Y;
int xpos = control.ActiveTextAreaControl.TextArea.TextView.GetDrawingXPos(caretPos.Y, caretPos.X);
int ypos = (control.ActiveTextAreaControl.Document.GetVisibleLine(caretPos.Y) + 1) * control.ActiveTextAreaControl.TextArea.TextView.FontHeight - control.ActiveTextAreaControl.TextArea.VirtualTop.Y;
int ypos = (control.ActiveTextAreaControl.Document.GetVisibleLine(caretPos.Y) + 1) * control.ActiveTextAreaControl.TextArea.TextView.FontHeight
- control.ActiveTextAreaControl.TextArea.VirtualTop.Y;
int rulerHeight = control.TextEditorProperties.ShowHorizontalRuler ? control.ActiveTextAreaControl.TextArea.TextView.FontHeight : 0;
Point p = control.ActiveTextAreaControl.PointToScreen(new Point(xpos, ypos + rulerHeight));

4
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs

@ -267,13 +267,13 @@ namespace ICSharpCode.TextEditor @@ -267,13 +267,13 @@ namespace ICSharpCode.TextEditor
public void SetDesiredColumn()
{
Caret.DesiredColumn = TextView.GetDrawingXPos(Caret.Line, Caret.Column) + (int)(VirtualTop.X * textView.WideSpaceWidth);
Caret.DesiredColumn = TextView.GetDrawingXPos(Caret.Line, Caret.Column) + VirtualTop.X;
}
public void SetCaretToDesiredColumn()
{
FoldMarker dummy;
Caret.Position = textView.GetLogicalColumn(Caret.Line, Caret.DesiredColumn + (int)(VirtualTop.X * textView.WideSpaceWidth), out dummy);
Caret.Position = textView.GetLogicalColumn(Caret.Line, Caret.DesiredColumn + VirtualTop.X, out dummy);
}
public void OptionsChanged()

2
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaControl.cs

@ -286,7 +286,7 @@ namespace ICSharpCode.TextEditor @@ -286,7 +286,7 @@ namespace ICSharpCode.TextEditor
void HScrollBarValueChanged(object sender, EventArgs e)
{
textArea.VirtualTop = new Point(hScrollBar.Value, textArea.VirtualTop.Y);
textArea.VirtualTop = new Point(hScrollBar.Value * textArea.TextView.WideSpaceWidth, textArea.VirtualTop.Y);
textArea.Invalidate();
}

18
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextView.cs

@ -151,7 +151,7 @@ namespace ICSharpCode.TextEditor @@ -151,7 +151,7 @@ namespace ICSharpCode.TextEditor
textArea.Invalidate();
}
int horizontalDelta = (int)(textArea.VirtualTop.X * WideSpaceWidth);
int horizontalDelta = textArea.VirtualTop.X;
if (horizontalDelta > 0) {
g.SetClip(this.DrawingPosition);
}
@ -762,6 +762,8 @@ namespace ICSharpCode.TextEditor @@ -762,6 +762,8 @@ namespace ICSharpCode.TextEditor
internal TextLocation GetLogicalColumn(int lineNumber, int visualPosX, out FoldMarker inFoldMarker)
{
visualPosX += textArea.VirtualTop.X;
inFoldMarker = null;
if (lineNumber >= Document.TotalNumberOfLines) {
return new TextLocation((int)(visualPosX / WideSpaceWidth), lineNumber);
@ -987,7 +989,7 @@ namespace ICSharpCode.TextEditor @@ -987,7 +989,7 @@ namespace ICSharpCode.TextEditor
// if no folding is interresting
if (f == null || !(f.StartLine < logicalLine || f.StartLine == logicalLine && f.StartColumn < logicalColumn)) {
drawingPos = CountColumns(ref column, 0, logicalColumn, logicalLine, g);
return (int)(drawingPos - textArea.VirtualTop.X * WideSpaceWidth);
return (int)(drawingPos - textArea.VirtualTop.X);
}
// if logicalLine/logicalColumn is in folding
@ -1009,7 +1011,7 @@ namespace ICSharpCode.TextEditor @@ -1009,7 +1011,7 @@ namespace ICSharpCode.TextEditor
if (lastFolding < firstFolding) {
drawingPos = CountColumns(ref column, 0, logicalColumn, logicalLine, g);
return (int)(drawingPos - textArea.VirtualTop.X * WideSpaceWidth);
return (int)(drawingPos - textArea.VirtualTop.X);
}
int foldEnd = 0;
@ -1024,7 +1026,7 @@ namespace ICSharpCode.TextEditor @@ -1024,7 +1026,7 @@ namespace ICSharpCode.TextEditor
}
drawingPos += CountColumns(ref column, foldEnd, logicalColumn, logicalLine, g);
g.Dispose();
return (int)(drawingPos - textArea.VirtualTop.X * WideSpaceWidth);
return (int)(drawingPos - textArea.VirtualTop.X);
}
#endregion
@ -1072,16 +1074,16 @@ namespace ICSharpCode.TextEditor @@ -1072,16 +1074,16 @@ namespace ICSharpCode.TextEditor
void DrawVerticalRuler(Graphics g, Rectangle lineRectangle)
{
if (TextEditorProperties.VerticalRulerRow < textArea.VirtualTop.X) {
int xpos = WideSpaceWidth * TextEditorProperties.VerticalRulerRow - textArea.VirtualTop.X;
if (xpos <= 0) {
return;
}
HighlightColor vRulerColor = textArea.Document.HighlightingStrategy.GetColorFor("VRuler");
int xpos = (int)(drawingPosition.Left + WideSpaceWidth * (TextEditorProperties.VerticalRulerRow - textArea.VirtualTop.X));
g.DrawLine(BrushRegistry.GetPen(vRulerColor.Color),
xpos,
drawingPosition.Left + xpos,
lineRectangle.Top,
xpos,
drawingPosition.Left + xpos,
lineRectangle.Bottom);
}
#endregion

40
src/Libraries/NRefactory/Project/Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs

@ -625,6 +625,11 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -625,6 +625,11 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
public override object TrackedVisitParameterDeclarationExpression(ParameterDeclarationExpression parameterDeclarationExpression, object data)
{
VisitAttributes(parameterDeclarationExpression.Attributes, data);
if (!parameterDeclarationExpression.DefaultValue.IsNull) {
outputFormatter.PrintText("[System.Runtime.InteropServices.OptionalAttribute, System.Runtime.InteropServices.DefaultParameterValueAttribute(");
TrackVisit(parameterDeclarationExpression.DefaultValue, data);
outputFormatter.PrintText(")] ");
}
OutputModifier(parameterDeclarationExpression.ParamModifier, parameterDeclarationExpression);
if (!parameterDeclarationExpression.TypeReference.IsNull) {
TrackVisit(parameterDeclarationExpression.TypeReference, data);
@ -2484,28 +2489,19 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -2484,28 +2489,19 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
void OutputModifier(ParameterModifiers modifier, INode node)
{
switch (modifier) {
case ParameterModifiers.None:
case ParameterModifiers.In:
break;
case ParameterModifiers.Out:
outputFormatter.PrintToken(Tokens.Out);
outputFormatter.Space();
break;
case ParameterModifiers.Params:
outputFormatter.PrintToken(Tokens.Params);
outputFormatter.Space();
break;
case ParameterModifiers.Ref:
outputFormatter.PrintToken(Tokens.Ref);
outputFormatter.Space();
break;
case ParameterModifiers.Optional:
Error(node, String.Format("Optional parameters aren't supported in C#"));
break;
default:
Error(node, String.Format("Unsupported modifier : {0}", modifier));
break;
if ((modifier & ParameterModifiers.Ref) == ParameterModifiers.Ref) {
outputFormatter.PrintToken(Tokens.Ref);
outputFormatter.Space();
} else if ((modifier & ParameterModifiers.Out) == ParameterModifiers.Out) {
outputFormatter.PrintToken(Tokens.Out);
outputFormatter.Space();
}
if ((modifier & ParameterModifiers.Params) == ParameterModifiers.Params) {
outputFormatter.PrintToken(Tokens.Params);
outputFormatter.Space();
}
if ((modifier & ParameterModifiers.Optional) == ParameterModifiers.Optional) {
Error(node, String.Format("Optional parameters aren't supported in C#"));
}
}

Loading…
Cancel
Save