diff --git a/vendor/DOtherSide/lib/include/DOtherSide/DOtherSide.h b/vendor/DOtherSide/lib/include/DOtherSide/DOtherSide.h index 57689a618f..273d5ad4db 100644 --- a/vendor/DOtherSide/lib/include/DOtherSide/DOtherSide.h +++ b/vendor/DOtherSide/lib/include/DOtherSide/DOtherSide.h @@ -1039,6 +1039,9 @@ DOS_API char *dos_to_local_file(const char* fileUrl); DOS_API char *dos_from_local_file(const char* filePath); +DOS_API bool dos_app_is_active(DosQQmlApplicationEngine* vptr); +DOS_API void dos_app_make_it_active(DosQQmlApplicationEngine* vptr); + #ifdef __cplusplus } #endif diff --git a/vendor/DOtherSide/lib/src/DOtherSide.cpp b/vendor/DOtherSide/lib/src/DOtherSide.cpp index cd34346592..d9b8456ce7 100644 --- a/vendor/DOtherSide/lib/src/DOtherSide.cpp +++ b/vendor/DOtherSide/lib/src/DOtherSide.cpp @@ -1505,3 +1505,41 @@ char* dos_from_local_file(const char* filePath) { return convert_to_cstring(QUrl::fromLocalFile(QString::fromUtf8(filePath)).toString()); } + +bool dos_app_is_active(::DosQQmlApplicationEngine* vptr) +{ + auto engine = static_cast(vptr); + if(!engine) + return false; + + QObject* topLevelObj = engine->rootObjects().value(0); + if(topLevelObj && topLevelObj->objectName() == "mainWindow") + { + QQuickWindow* window = qobject_cast(topLevelObj); + if(window) + { + return window->isActive(); + } + } + + return false; +} + +void dos_app_make_it_active(::DosQQmlApplicationEngine* vptr) +{ + auto engine = static_cast(vptr); + if(!engine) + return; + + QObject* topLevelObj = engine->rootObjects().value(0); + if(topLevelObj && topLevelObj->objectName() == "mainWindow") + { + QQuickWindow* window = qobject_cast(topLevelObj); + if(window) + { + window->show(); + window->raise(); + window->requestActivate(); + } + } +} \ No newline at end of file