From 6514723fb7edb0e629f86d6a2e80fd9a6fc3d4c6 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Tue, 3 Oct 2017 08:46:31 +0300 Subject: [PATCH] [GTK3] Priority and rendering fixes --- src/Gtk/Avalonia.Gtk3/WindowBaseImpl.cs | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/Gtk/Avalonia.Gtk3/WindowBaseImpl.cs b/src/Gtk/Avalonia.Gtk3/WindowBaseImpl.cs index a3b5d57fdc..009ef6763c 100644 --- a/src/Gtk/Avalonia.Gtk3/WindowBaseImpl.cs +++ b/src/Gtk/Avalonia.Gtk3/WindowBaseImpl.cs @@ -54,11 +54,6 @@ namespace Avalonia.Gtk3 Connect("destroy", OnDestroy); Native.GtkWidgetRealize(gtkWidget); _lastSize = ClientSize; - GlibTimeout.Add(0, 16, () => - { - Invalidate(default(Rect)); - return true; - }); if (Gtk3Platform.UseDeferredRendering) { Native.GtkWidgetSetDoubleBuffered(gtkWidget, false); @@ -138,7 +133,7 @@ namespace Avalonia.Gtk3 ? RawMouseEventType.LeftButtonDown : evnt->button == 3 ? RawMouseEventType.RightButtonDown : RawMouseEventType.MiddleButtonDown, new Point(evnt->x, evnt->y), GetModifierKeys(evnt->state)); - Input?.Invoke(e); + OnInput(e); return true; } @@ -166,7 +161,7 @@ namespace Avalonia.Gtk3 _inputRoot, RawMouseEventType.Move, position, GetModifierKeys(evnt->state)); - Input(e); + OnInput(e); return true; } @@ -195,7 +190,7 @@ namespace Avalonia.Gtk3 } var e = new RawMouseWheelEventArgs(Gtk3Platform.Mouse, evnt->time, _inputRoot, new Point(evnt->x, evnt->y), delta, GetModifierKeys(evnt->state)); - Input(e); + OnInput(e); return true; } @@ -210,7 +205,7 @@ namespace Avalonia.Gtk3 evnt->time, evnt->type == GdkEventType.KeyPress ? RawKeyEventType.KeyDown : RawKeyEventType.KeyUp, Avalonia.Gtk.Common.KeyTransform.ConvertKey((GdkKey)evnt->keyval), GetModifierKeys((GdkModifierType)evnt->state)); - Input(e); + OnInput(e); return true; } @@ -218,7 +213,7 @@ namespace Avalonia.Gtk3 { var evnt = (GdkEventCrossing*) pev; var position = new Point(evnt->x, evnt->y); - Input(new RawMouseEventArgs(Gtk3Platform.Mouse, + OnInput(new RawMouseEventArgs(Gtk3Platform.Mouse, evnt->time, _inputRoot, RawMouseEventType.Move, @@ -228,7 +223,7 @@ namespace Avalonia.Gtk3 private unsafe bool OnCommit(IntPtr gtkwidget, IntPtr utf8string, IntPtr userdata) { - Input(new RawTextInputEventArgs(Gtk3Platform.Keyboard, _lastKbdEvent, Utf8Buffer.StringFromPtr(utf8string))); + OnInput(new RawTextInputEventArgs(Gtk3Platform.Keyboard, _lastKbdEvent, Utf8Buffer.StringFromPtr(utf8string))); return true; } @@ -338,6 +333,11 @@ namespace Avalonia.Gtk3 public void SetInputRoot(IInputRoot inputRoot) => _inputRoot = inputRoot; + void OnInput(RawInputEventArgs args) + { + Dispatcher.UIThread.InvokeAsync(() => Input?.Invoke(args), DispatcherPriority.Input); + } + public Point PointToClient(Point point) { int x, y;