Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions project/include/ui/Window.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ namespace lime {
virtual void SetTextInputRect (Rectangle *rect) = 0;
virtual const char* SetTitle (const char* title) = 0;
virtual bool SetVisible (bool visible) = 0;
virtual bool SetAlwaysOnTop (bool alwaysOnTop) = 0;
virtual void WarpMouse (int x, int y) = 0;

Application* currentApplication;
Expand Down
18 changes: 18 additions & 0 deletions project/src/ExternalInterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3949,6 +3949,22 @@ namespace lime {
}


bool lime_window_set_always_on_top (value window, bool alwaysOnTop) {

Window* targetWindow = (Window*)val_data (window);
return targetWindow->SetAlwaysOnTop(alwaysOnTop);

}


HL_PRIM bool HL_NAME(hl_window_set_always_on_top) (HL_CFFIPointer* window, bool alwaysOnTop) {

Window* targetWindow = (Window*)window->ptr;
return targetWindow->SetAlwaysOnTop (alwaysOnTop);

}


void lime_window_warp_mouse (value window, int x, int y) {

Window* targetWindow = (Window*)val_data (window);
Expand Down Expand Up @@ -4177,6 +4193,7 @@ namespace lime {
DEFINE_PRIME2v (lime_window_set_text_input_rect);
DEFINE_PRIME2 (lime_window_set_title);
DEFINE_PRIME2 (lime_window_set_visible);
DEFINE_PRIME2 (lime_window_set_always_on_top);
DEFINE_PRIME3v (lime_window_warp_mouse);
DEFINE_PRIME1 (lime_window_get_opacity);
DEFINE_PRIME2v (lime_window_set_opacity);
Expand Down Expand Up @@ -4371,6 +4388,7 @@ namespace lime {
DEFINE_HL_PRIM (_VOID, hl_window_set_text_input_rect, _TCFFIPOINTER _TRECTANGLE);
DEFINE_HL_PRIM (_STRING, hl_window_set_title, _TCFFIPOINTER _STRING);
DEFINE_HL_PRIM (_BOOL, hl_window_set_visible, _TCFFIPOINTER _BOOL);
DEFINE_HL_PRIM (_BOOL, hl_window_set_always_on_top, _TCFFIPOINTER _BOOL);
DEFINE_HL_PRIM (_VOID, hl_window_warp_mouse, _TCFFIPOINTER _I32 _I32);
DEFINE_HL_PRIM (_F64, hl_window_get_opacity, _TCFFIPOINTER);
DEFINE_HL_PRIM (_VOID, hl_window_set_opacity, _TCFFIPOINTER _F64);
Expand Down
16 changes: 16 additions & 0 deletions project/src/backend/sdl/SDLWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1124,6 +1124,22 @@ namespace lime {
}


bool SDLWindow::SetAlwaysOnTop (bool alwaysOnTop) {

if (alwaysOnTop) {

SDL_SetWindowAlwaysOnTop (sdlWindow, SDL_TRUE);

} else {

SDL_SetWindowAlwaysOnTop (sdlWindow, SDL_FALSE);

}

return alwaysOnTop;

}

void SDLWindow::WarpMouse (int x, int y) {

SDL_WarpMouseInWindow (sdlWindow, x, y);
Expand Down
1 change: 1 addition & 0 deletions project/src/backend/sdl/SDLWindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ namespace lime {
virtual void SetTextInputRect (Rectangle *rect);
virtual const char* SetTitle (const char* title);
virtual bool SetVisible (bool visible);
virtual bool SetAlwaysOnTop (bool alwaysOnTop);
virtual void WarpMouse (int x, int y);
SDL_Renderer* sdlRenderer;
SDL_Texture* sdlTexture;
Expand Down
10 changes: 10 additions & 0 deletions src/lime/_internal/backend/air/AIRWindow.hx
Original file line number Diff line number Diff line change
Expand Up @@ -330,4 +330,14 @@ class AIRWindow extends FlashWindow

return value;
}

public override function setAlwaysOnTop(value:Bool):Bool
{
if (nativeWindow != null)
{
nativeWindow.alwaysInFront = value;
}

return value;
}
}
5 changes: 5 additions & 0 deletions src/lime/_internal/backend/flash/FlashWindow.hx
Original file line number Diff line number Diff line change
Expand Up @@ -649,5 +649,10 @@ class FlashWindow
return value;
}

public function setAlwaysOnTop(value:Bool):Bool
{
return value;
}

public function warpMouse(x:Int, y:Int):Void {}
}
5 changes: 5 additions & 0 deletions src/lime/_internal/backend/html5/HTML5Window.hx
Original file line number Diff line number Diff line change
Expand Up @@ -1342,6 +1342,11 @@ class HTML5Window
return value;
}

public function setAlwaysOnTop(value:Bool):Bool
{
return value;
}

private function updateSize():Void
{
if (!parent.__resizable) return;
Expand Down
10 changes: 10 additions & 0 deletions src/lime/_internal/backend/native/NativeCFFI.hx
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,8 @@ class NativeCFFI

@:cffi private static function lime_window_set_visible(handle:Dynamic, visible:Bool):Bool;

@:cffi private static function lime_window_set_always_on_top(handle:Dynamic, alwaysOnTop:Bool):Bool;

@:cffi private static function lime_window_warp_mouse(handle:Dynamic, x:Int, y:Int):Void;

@:cffi private static function lime_window_event_manager_register(callback:Dynamic, eventObject:Dynamic):Void;
Expand Down Expand Up @@ -633,6 +635,8 @@ class NativeCFFI
false));
private static var lime_window_set_visible = new cpp.Callable<cpp.Object->Bool->Bool>(cpp.Prime._loadPrime("lime", "lime_window_set_visible", "obb",
false));
private static var lime_window_set_always_on_top = new cpp.Callable<cpp.Object->Bool->Bool>(cpp.Prime._loadPrime("lime", "lime_window_set_always_on_top", "obb",
false));
private static var lime_window_warp_mouse = new cpp.Callable<cpp.Object->Int->Int->cpp.Object>(cpp.Prime._loadPrime("lime", "lime_window_warp_mouse",
"oiiv", false));
private static var lime_window_event_manager_register = new cpp.Callable<cpp.Object->cpp.Object->cpp.Void>(cpp.Prime._loadPrime("lime",
Expand Down Expand Up @@ -796,6 +800,7 @@ class NativeCFFI
private static var lime_window_set_text_input_rect = CFFI.load("lime", "lime_window_set_text_input_rect", 2);
private static var lime_window_set_title = CFFI.load("lime", "lime_window_set_title", 2);
private static var lime_window_set_visible = CFFI.load("lime", "lime_window_set_visible", 2);
private static var lime_window_set_always_on_top = CFFI.load("lime", "lime_window_set_always_on_top", 2);
private static var lime_window_warp_mouse = CFFI.load("lime", "lime_window_warp_mouse", 3);
private static var lime_window_event_manager_register = CFFI.load("lime", "lime_window_event_manager_register", 2);
private static var lime_zlib_compress = CFFI.load("lime", "lime_zlib_compress", 2);
Expand Down Expand Up @@ -1423,6 +1428,11 @@ class NativeCFFI
return false;
}

@:hlNative("lime", "hl_window_set_always_on_top") private static function lime_window_set_always_on_top(handle:CFFIPointer, alwaysOnTop:Bool):Bool
{
return false;
}

@:hlNative("lime", "hl_window_warp_mouse") private static function lime_window_warp_mouse(handle:CFFIPointer, x:Int, y:Int):Void {}

@:hlNative("lime", "hl_window_get_opacity") private static function lime_window_get_opacity(handle:CFFIPointer):Float { return 0.0; }
Expand Down
12 changes: 12 additions & 0 deletions src/lime/_internal/backend/native/NativeWindow.hx
Original file line number Diff line number Diff line change
Expand Up @@ -720,6 +720,18 @@ class NativeWindow
return value;
}

public function setAlwaysOnTop(value:Bool):Bool
{
if (handle != null)
{
#if (!macro && lime_cffi)
NativeCFFI.lime_window_set_always_on_top(handle, value);
#end
}

return value;
}

public function warpMouse(x:Int, y:Int):Void
{
#if (!macro && lime_cffi)
Expand Down
13 changes: 13 additions & 0 deletions src/lime/ui/Window.hx
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ class Window
public var textInputEnabled(get, set):Bool;
public var title(get, set):String;
public var visible(get, set):Bool;
public var alwaysOnTop(get, set):Bool;
public var width(get, set):Int;
public var x(get, set):Int;
public var y(get, set):Int;
Expand All @@ -159,6 +160,7 @@ class Window
@:noCompletion private var __resizable:Bool;
@:noCompletion private var __scale:Float;
@:noCompletion private var __title:String;
@:noCompletion private var __alwaysOnTop:Bool;
@:noCompletion private var __width:Int;
@:noCompletion private var __x:Int;
@:noCompletion private var __y:Int;
Expand Down Expand Up @@ -192,6 +194,7 @@ class Window
"textInputEnabled": {get: p.get_textInputEnabled, set: p.set_textInputEnabled},
"title": {get: p.get_title, set: p.set_title},
"visible": {get: p.get_visible, set: p.set_visible},
"alwaysOnTop": {get: p.get_alwaysOnTop, set: p.set_alwaysOnTop},
"width": {get: p.get_width, set: p.set_width},
"x": {get: p.get_x, set: p.set_y},
"y": {get: p.get_x, set: p.set_y}
Expand Down Expand Up @@ -735,6 +738,16 @@ class Window
return !__hidden;
}

@:noCompletion private inline function get_alwaysOnTop():Bool
{
return __alwaysOnTop;
}

@:noCompletion private function set_alwaysOnTop(value:Bool):Bool
{
return __alwaysOnTop = __backend.setAlwaysOnTop(value);
}

@:noCompletion private inline function get_width():Int
{
return __width;
Expand Down