|
|
@@ -54,11 +54,6 @@ namespace Avalonia.Gtk3
|
|
|
Connect<Native.D.signal_generic>("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;
|