Browse Source

Fixed scrolling in a multiline textbox

Tweaked WindowImpl to only Paint on Expose events
pull/66/head
Nelson Carrillo 11 years ago
parent
commit
5b43ed6847
  1. 4
      Cairo/Perspex.Cairo/Media/DrawingContext.cs
  2. 4
      Cairo/Perspex.Cairo/Media/FormattedTextImpl.cs
  3. 6
      Gtk/Perspex.Gtk/WindowImpl.cs

4
Cairo/Perspex.Cairo/Media/DrawingContext.cs

@ -51,7 +51,7 @@ namespace Perspex.Cairo.Media
this.Drawable = drawable;
this.context = Gdk.CairoHelper.Create(drawable);
this.CurrentTransform = Matrix.Identity;
}
}
public Matrix CurrentTransform
{
@ -192,7 +192,7 @@ namespace Perspex.Cairo.Media
{
var layout = ((FormattedTextImpl)text.PlatformImpl).Layout;
this.SetBrush(foreground);
this.context.MoveTo(origin.X, origin.Y);
Pango.CairoHelper.ShowLayout(this.context, layout);
}

4
Cairo/Perspex.Cairo/Media/FormattedTextImpl.cs

@ -37,15 +37,17 @@ namespace Perspex.Cairo.Media
this.Layout.Alignment = textAlignment.ToCairo();
}
private Size size;
public Size Constraint
{
get
{
return new Size(this.Layout.Width, double.PositiveInfinity);
return size;
}
set
{
this.size = value;
this.Layout.Width = Pango.Units.FromDouble(value.Width);
}
}

6
Gtk/Perspex.Gtk/WindowImpl.cs

@ -161,7 +161,11 @@ namespace Perspex.Gtk
protected override bool OnExposeEvent(Gdk.EventExpose evnt)
{
this.Paint(evnt.Area.ToPerspex(), this.GetHandle(evnt.Window));
if (evnt.Type == Gdk.EventType.Expose)
{
this.Paint(evnt.Area.ToPerspex(), this.GetHandle(evnt.Window));
}
return true;
}

Loading…
Cancel
Save