diff --git a/lime/_backend/native/NativeWindow.hx b/lime/_backend/native/NativeWindow.hx index 02ee2d497..4fa661c98 100644 --- a/lime/_backend/native/NativeWindow.hx +++ b/lime/_backend/native/NativeWindow.hx @@ -107,6 +107,7 @@ class NativeWindow { } if (Reflect.hasField (parent.config, "allowHighDPI") && parent.config.allowHighDPI) flags |= cast WindowFlags.WINDOW_FLAG_ALLOW_HIGHDPI; + if (Reflect.hasField (parent.config, "alwaysOnTop") && parent.config.alwaysOnTop) flags |= cast WindowFlags.WINDOW_FLAG_ALWAYS_ON_TOP; //if (Reflect.hasField (parent.config, "borderless") && parent.config.borderless) flags |= cast WindowFlags.WINDOW_FLAG_BORDERLESS; if (parent.__borderless) flags |= cast WindowFlags.WINDOW_FLAG_BORDERLESS; if (Reflect.hasField (parent.config, "depthBuffer") && parent.config.depthBuffer) flags |= cast WindowFlags.WINDOW_FLAG_DEPTH_BUFFER; @@ -411,5 +412,6 @@ class NativeWindow { var WINDOW_FLAG_HIDDEN = 0x00001000; var WINDOW_FLAG_MINIMIZED = 0x00002000; var WINDOW_FLAG_MAXIMIZED = 0x00004000; + var WINDOW_FLAG_ALWAYS_ON_TOP = 0x00008000; } \ No newline at end of file diff --git a/lime/app/Config.hx b/lime/app/Config.hx index 946c70bb4..58a00086b 100644 --- a/lime/app/Config.hx +++ b/lime/app/Config.hx @@ -23,6 +23,7 @@ typedef Config = { typedef WindowConfig = { @:optional var allowHighDPI:Bool; + @:optional var alwaysOnTop:Bool; @:optional var antialiasing:Int; @:optional var background:Null; @:optional var borderless:Bool; diff --git a/lime/project/HXProject.hx b/lime/project/HXProject.hx index 83d173b45..edfd1e31b 100644 --- a/lime/project/HXProject.hx +++ b/lime/project/HXProject.hx @@ -126,7 +126,7 @@ class HXProject { defaultMeta = { title: "MyApplication", description: "", packageName: "com.example.myapp", version: "1.0.0", company: "", companyUrl: "", buildNumber: null, companyId: "" } defaultApp = { main: "Main", file: "MyApplication", path: "bin", preloader: "", swfVersion: 11.2, url: "", init: null } - defaultWindow = { width: 800, height: 600, parameters: "{}", background: 0xFFFFFF, fps: 30, hardware: true, display: 0, resizable: true, borderless: false, orientation: Orientation.AUTO, vsync: false, fullscreen: false, allowHighDPI: true, antialiasing: 0, allowShaders: true, requireShaders: false, depthBuffer: false, stencilBuffer: false } + defaultWindow = { width: 800, height: 600, parameters: "{}", background: 0xFFFFFF, fps: 30, hardware: true, display: 0, resizable: true, borderless: false, orientation: Orientation.AUTO, vsync: false, fullscreen: false, allowHighDPI: true, alwaysOnTop: false, antialiasing: 0, allowShaders: true, requireShaders: false, depthBuffer: false, stencilBuffer: false } platformType = PlatformType.DESKTOP; architectures = []; diff --git a/lime/project/WindowData.hx b/lime/project/WindowData.hx index b455ac4f4..9e721d5f6 100644 --- a/lime/project/WindowData.hx +++ b/lime/project/WindowData.hx @@ -17,6 +17,7 @@ typedef WindowData = { @:optional var vsync:Bool; @:optional var fullscreen:Bool; @:optional var allowHighDPI:Bool; + @:optional var alwaysOnTop:Bool; @:optional var antialiasing:Int; @:optional var orientation:Orientation; @:optional var allowShaders:Bool; diff --git a/project/include/ui/Window.h b/project/include/ui/Window.h index dce708a7b..e78b5ea98 100644 --- a/project/include/ui/Window.h +++ b/project/include/ui/Window.h @@ -71,7 +71,8 @@ namespace lime { WINDOW_FLAG_ALLOW_HIGHDPI = 0x00000800, WINDOW_FLAG_HIDDEN = 0x00001000, WINDOW_FLAG_MINIMIZED = 0x00002000, - WINDOW_FLAG_MAXIMIZED = 0x00004000 + WINDOW_FLAG_MAXIMIZED = 0x00004000, + WINDOW_FLAG_ALWAYS_ON_TOP = 0x00008000 }; diff --git a/project/lib/sdl b/project/lib/sdl index 953cc9597..d89f276b1 160000 --- a/project/lib/sdl +++ b/project/lib/sdl @@ -1 +1 @@ -Subproject commit 953cc959761820d441c2ce015c362caa46870ab7 +Subproject commit d89f276b1080da8145b37ef4125d9f7391449176 diff --git a/project/src/backend/sdl/SDLWindow.cpp b/project/src/backend/sdl/SDLWindow.cpp index 233a7188f..d216d973c 100644 --- a/project/src/backend/sdl/SDLWindow.cpp +++ b/project/src/backend/sdl/SDLWindow.cpp @@ -27,6 +27,7 @@ namespace lime { if (flags & WINDOW_FLAG_HIDDEN) sdlFlags |= SDL_WINDOW_HIDDEN; if (flags & WINDOW_FLAG_MINIMIZED) sdlFlags |= SDL_WINDOW_MINIMIZED; if (flags & WINDOW_FLAG_MAXIMIZED) sdlFlags |= SDL_WINDOW_MAXIMIZED; + if (flags & WINDOW_FLAG_ALWAYS_ON_TOP) sdlFlags |= SDL_WINDOW_ALWAYS_ON_TOP; #if defined (HX_WINDOWS) && defined (NATIVE_TOOLKIT_SDL_ANGLE) OSVERSIONINFOEXW osvi = { sizeof (osvi), 0, 0, 0, 0, {0}, 0, 0 }; diff --git a/templates/haxe/ApplicationMain.hx b/templates/haxe/ApplicationMain.hx index bd078bd62..1705f25fc 100644 --- a/templates/haxe/ApplicationMain.hx +++ b/templates/haxe/ApplicationMain.hx @@ -26,6 +26,7 @@ package; ::foreach windows:: { allowHighDPI: ::allowHighDPI::, + alwaysOnTop: ::alwaysOnTop::, antialiasing: ::antialiasing::, background: ::background::, borderless: ::borderless::,