|
|
@ -32,6 +32,7 @@ namespace Avalonia.Gtk3 |
|
|
private IDeferredRenderOperation _nextRenderOperation; |
|
|
private IDeferredRenderOperation _nextRenderOperation; |
|
|
private readonly AutoResetEvent _canSetNextOperation = new AutoResetEvent(true); |
|
|
private readonly AutoResetEvent _canSetNextOperation = new AutoResetEvent(true); |
|
|
internal IntPtr? GdkWindowHandle; |
|
|
internal IntPtr? GdkWindowHandle; |
|
|
|
|
|
private bool _overrideRedirect; |
|
|
public WindowBaseImpl(GtkWindow gtkWidget) |
|
|
public WindowBaseImpl(GtkWindow gtkWidget) |
|
|
{ |
|
|
{ |
|
|
|
|
|
|
|
|
@ -69,12 +70,15 @@ namespace Avalonia.Gtk3 |
|
|
private bool OnConfigured(IntPtr gtkwidget, IntPtr ev, IntPtr userdata) |
|
|
private bool OnConfigured(IntPtr gtkwidget, IntPtr ev, IntPtr userdata) |
|
|
{ |
|
|
{ |
|
|
int w, h; |
|
|
int w, h; |
|
|
Native.GtkWindowGetSize(GtkWidget, out w, out h); |
|
|
if (!OverrideRedirect) |
|
|
var size = ClientSize = new Size(w, h); |
|
|
|
|
|
if (_lastSize != size) |
|
|
|
|
|
{ |
|
|
{ |
|
|
Resized?.Invoke(size); |
|
|
Native.GtkWindowGetSize(GtkWidget, out w, out h); |
|
|
_lastSize = size; |
|
|
var size = ClientSize = new Size(w, h); |
|
|
|
|
|
if (_lastSize != size) |
|
|
|
|
|
{ |
|
|
|
|
|
Resized?.Invoke(size); |
|
|
|
|
|
_lastSize = size; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
var pos = Position; |
|
|
var pos = Position; |
|
|
if (_lastPosition != pos) |
|
|
if (_lastPosition != pos) |
|
|
@ -406,6 +410,28 @@ namespace Avalonia.Gtk3 |
|
|
if (GtkWidget.IsClosed) |
|
|
if (GtkWidget.IsClosed) |
|
|
return; |
|
|
return; |
|
|
Native.GtkWindowResize(GtkWidget, (int)value.Width, (int)value.Height); |
|
|
Native.GtkWindowResize(GtkWidget, (int)value.Width, (int)value.Height); |
|
|
|
|
|
if (OverrideRedirect) |
|
|
|
|
|
{ |
|
|
|
|
|
var size = ClientSize = value; |
|
|
|
|
|
if (_lastSize != size) |
|
|
|
|
|
{ |
|
|
|
|
|
Resized?.Invoke(size); |
|
|
|
|
|
_lastSize = size; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public bool OverrideRedirect |
|
|
|
|
|
{ |
|
|
|
|
|
get => _overrideRedirect; |
|
|
|
|
|
set |
|
|
|
|
|
{ |
|
|
|
|
|
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) |
|
|
|
|
|
{ |
|
|
|
|
|
Native.GdkWindowSetOverrideRedirect(Native.GtkWidgetGetWindow(GtkWidget), value); |
|
|
|
|
|
_overrideRedirect = value; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public IScreenImpl Screen |
|
|
public IScreenImpl Screen |
|
|
|