diff options
| author | jpbruyere <jp.bruyere@hotmail.com> | 2016-08-14 06:43:59 +0200 |
|---|---|---|
| committer | jpbruyere <jp.bruyere@hotmail.com> | 2016-08-14 06:43:59 +0200 |
| commit | 9d0137b1d39e62b09437b6a11e8dcf1318e2a7eb (patch) | |
| tree | 6f34808a56eb5562bdfd5306ec2ad74c935d964b /src/GraphicObjects | |
| parent | 854f2f732acc4c1d9fa4126962149cae14f4d4e9 (diff) | |
* Crow.csproj, XCursor.cs, Interface.cs, ibeam:
text xcursor
* Window.template, Expandable.template, TabView.cs, 0.crow:
divers
* ExtensionsMethods.cs, CairoHelpers.cs, Border.cs:
stroke better alignment, should be reworked for different width
* Label.cs:
text xcursor, selection rectangles adjustments
* Window.cs:
Maximize
Diffstat (limited to 'src/GraphicObjects')
| -rw-r--r-- | src/GraphicObjects/Border.cs | 3 | ||||
| -rw-r--r-- | src/GraphicObjects/Label.cs | 21 | ||||
| -rw-r--r-- | src/GraphicObjects/TabView.cs | 2 | ||||
| -rw-r--r-- | src/GraphicObjects/Window.cs | 44 |
4 files changed, 60 insertions, 10 deletions
diff --git a/src/GraphicObjects/Border.cs b/src/GraphicObjects/Border.cs index 6c1ed6a1..bd72d750 100644 --- a/src/GraphicObjects/Border.cs +++ b/src/GraphicObjects/Border.cs @@ -55,8 +55,7 @@ namespace Crow if (BorderWidth > 0) { gr.LineWidth = BorderWidth; Foreground.SetAsSource (gr, rBack); - CairoHelpers.CairoRectangle(gr, rBack, CornerRadius); - gr.Stroke (); + CairoHelpers.CairoRectangle(gr, rBack, CornerRadius, true); } gr.Save (); diff --git a/src/GraphicObjects/Label.cs b/src/GraphicObjects/Label.cs index 3cc0f916..37a32a2f 100644 --- a/src/GraphicObjects/Label.cs +++ b/src/GraphicObjects/Label.cs @@ -569,8 +569,8 @@ namespace Crow Foreground.SetAsSource (gr); gr.LineWidth = 1.0; - gr.MoveTo(new PointD(textCursorPos + rText.X, rText.Y + CurrentLine * fe.Height)); - gr.LineTo(new PointD(textCursorPos + rText.X, rText.Y + (CurrentLine + 1) * fe.Height)); + gr.MoveTo (0.5 + textCursorPos + rText.X, rText.Y + CurrentLine * fe.Height); + gr.LineTo (0.5 + textCursorPos + rText.X, rText.Y + (CurrentLine + 1) * fe.Height); gr.Stroke(); } #endregion @@ -603,9 +603,9 @@ namespace Crow int lineLength = (int)gr.TextExtents (l).XAdvance; Rectangle lineRect = new Rectangle ( rText.X, - rText.Y + (int)(i * fe.Height), - lineLength, - (int)fe.Height); + rText.Y + (int)Math.Ceiling(i * fe.Height), + lineLength, + (int)Math.Ceiling(fe.Height)); // if (TextAlignment == Alignment.Center || // TextAlignment == Alignment.Top || @@ -659,6 +659,17 @@ namespace Crow if (mouseLocalPos.Y < 0) mouseLocalPos.Y = 0; } + public override void onMouseEnter (object sender, MouseMoveEventArgs e) + { + base.onMouseEnter (sender, e); + if (Selectable) + Interface.CurrentInterface.MouseCursor = XCursor.Text; + } + public override void onMouseLeave (object sender, MouseMoveEventArgs e) + { + base.onMouseLeave (sender, e); + Interface.CurrentInterface.MouseCursor = XCursor.Default; + } public override void onFocused (object sender, EventArgs e) { base.onFocused (sender, e); diff --git a/src/GraphicObjects/TabView.cs b/src/GraphicObjects/TabView.cs index e140191b..fa352b0d 100644 --- a/src/GraphicObjects/TabView.cs +++ b/src/GraphicObjects/TabView.cs @@ -82,7 +82,7 @@ namespace Crow RegisterForRedraw (); } } - [XmlAttributeAttribute()][DefaultValue("15")] + [XmlAttributeAttribute()][DefaultValue("18")] public virtual Measure TabThickness { get { return tabThickness; } set { diff --git a/src/GraphicObjects/Window.cs b/src/GraphicObjects/Window.cs index 9fb6bd29..bf6bd5cf 100644 --- a/src/GraphicObjects/Window.cs +++ b/src/GraphicObjects/Window.cs @@ -46,11 +46,15 @@ namespace Crow bool _resizable; bool _movable; bool hoverBorder = false; + bool isMaximized = false; + Measure savedH, savedW; Container _contentContainer; Direction currentDirection = Direction.None; public event EventHandler Closing; + public event EventHandler Maximized; + public event EventHandler Unmaximized; #region CTOR public Window () : base() { @@ -74,6 +78,7 @@ namespace Crow } #endregion + #region public properties [XmlAttributeAttribute()][DefaultValue("Window")] public string Title { get { return _title; } @@ -110,6 +115,24 @@ namespace Crow NotifyValueChanged ("Movable", _movable); } } + [XmlAttributeAttribute()][DefaultValue(false)] + public bool IsMaximized { + get { return isMaximized; } + set{ + if (value == isMaximized) + return; + isMaximized = value; + + if (isMaximized) + onMaximized (this, null); + else + onUnmaximized (this, null); + + NotifyValueChanged ("IsMaximized", isMaximized); + } + } + #endregion + #region GraphicObject Overrides public override void ResolveBindings () { @@ -272,19 +295,36 @@ namespace Crow base.onMouseDown (sender, e); } #endregion + protected void onMaximized (object sender, EventArgs e){ + savedW = this.Width; + savedH = this.Height; + this.Width = Measure.Stretched; + this.Height = Measure.Stretched; + + Maximized.Raise (sender, e); + } + protected void onUnmaximized (object sender, EventArgs e){ + this.Width = savedW; + this.Height = savedH; - public void onBorderMouseLeave (object sender, MouseMoveEventArgs e) + Unmaximized.Raise (sender, e); + } + + protected void onBorderMouseLeave (object sender, MouseMoveEventArgs e) { hoverBorder = false; currentDirection = Direction.None; Interface.CurrentInterface.MouseCursor = XCursor.Default; } - public void onBorderMouseEnter (object sender, MouseMoveEventArgs e) + protected void onBorderMouseEnter (object sender, MouseMoveEventArgs e) { hoverBorder = true; } + protected void butMaximizePress (object sender, MouseButtonEventArgs e){ + IsMaximized = !IsMaximized; + } protected void butQuitPress (object sender, MouseButtonEventArgs e) { Interface.CurrentInterface.MouseCursor = XCursor.Default; |