Skip to content

Commit 6383649

Browse files
authored
Merge pull request #18636 from unoplatform/mergify/bp/release/stable/5.5/pr-18625
fix(macos): Bring window to top when activated (backport #18625)
2 parents f878f66 + 5bae5b2 commit 6383649

File tree

4 files changed

+24
-0
lines changed

4 files changed

+24
-0
lines changed

src/Uno.UI.Runtime.Skia.MacOS/MacOSWindowWrapper.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,18 @@ public override string Title
3737
set => NativeUno.uno_window_set_title(_window.Handle, value);
3838
}
3939

40+
public override void Activate()
41+
{
42+
NativeUno.uno_window_activate(_window.Handle);
43+
}
44+
45+
protected override void ShowCore()
46+
{
47+
// the first call to `Window.Activate` does not reach the above `Activate` method
48+
// https://github.com/unoplatform/uno/blob/fc8e58d77f8cf31d651135c22ea3105099c26fb7/src/Uno.UI/UI/Xaml/Window/Implementations/BaseWindowImplementation.cs#L81-L98
49+
NativeUno.uno_window_activate(_window.Handle);
50+
}
51+
4052
private void OnHostSizeChanged(Size size)
4153
{
4254
Bounds = new Rect(default, size);

src/Uno.UI.Runtime.Skia.MacOS/NativeUno.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,9 @@ internal static unsafe partial void uno_set_window_events_callbacks(
201201
[LibraryImport("libUnoNativeMac.dylib")]
202202
internal static partial nint uno_window_create(double width, double height);
203203

204+
[LibraryImport("libUnoNativeMac.dylib")]
205+
internal static partial void uno_window_activate(nint window);
206+
204207
[LibraryImport("libUnoNativeMac.dylib")]
205208
internal static partial void uno_window_invalidate(nint window);
206209

src/Uno.UI.Runtime.Skia.MacOS/UnoNativeMac/UnoNativeMac/UNOWindow.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ void uno_set_resize_callback(resize_fn_ptr p);
4040
NSWindow* uno_app_get_main_window(void);
4141

4242
NSWindow* uno_window_create(double width, double height);
43+
void uno_window_activate(NSWindow *window);
4344
void uno_window_invalidate(NSWindow *window);
4445
bool uno_window_resize(NSWindow *window, double width, double height);
4546

src/Uno.UI.Runtime.Skia.MacOS/UnoNativeMac/UnoNativeMac/UNOWindow.m

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,14 @@ - (void) applicationDidChangeScreenParametersNotification:(NSNotification*) note
126126
return window;
127127
}
128128

129+
void uno_window_activate(NSWindow *window)
130+
{
131+
#if DEBUG
132+
NSLog(@"uno_window_activate %@", window);
133+
#endif
134+
[window orderFront:nil];
135+
}
136+
129137
void uno_window_notify_screen_change(NSWindow *window)
130138
{
131139
assert(windowDidChangeScreen);

0 commit comments

Comments
 (0)