diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index f017ecec..e4f946d9 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -88,6 +88,7 @@ #ifdef Q_WS_X11 #include +bool onboardIsAlreadyRunning = true; #endif UBBoardController::UBBoardController(UBMainWindow* mainWindow) @@ -165,8 +166,10 @@ void UBBoardController::init() UBBoardController::~UBBoardController() { #ifdef Q_WS_X11 - QProcess newProcess; - newProcess.startDetached("killall onboard"); + if(!onboardIsAlreadyRunning){ + QProcess newProcess; + newProcess.startDetached("killall onboard"); + } #endif delete mDisplayView; } @@ -826,8 +829,26 @@ void UBBoardController::showKeyboard(bool show) UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector); #ifdef Q_WS_X11 - QProcess newProcess; - newProcess.startDetached("/usr/bin/onboard"); + static bool isFirstTime = true; + if(isFirstTime){ + QProcess isAlreadyRunningProcess; + QString psAuxGrepC = "ps aux"; + isAlreadyRunningProcess.start(psAuxGrepC); + isAlreadyRunningProcess.waitForFinished(); + QString output(isAlreadyRunningProcess.readAll()); + if(output.count("onboard") != 0) + onboardIsAlreadyRunning = true; + else + onboardIsAlreadyRunning = false; + + isFirstTime = false; + } + if(UBSettings::settings()->useSystemOnScreenKeybard->get().toBool()){ + QProcess newProcess; + newProcess.startDetached("/usr/bin/onboard"); + } + else + mPaletteManager->showVirtualKeyboard(show); #else mPaletteManager->showVirtualKeyboard(show); #endif diff --git a/src/core/UBSettings.cpp b/src/core/UBSettings.cpp index 3cd7b57e..dfddb796 100644 --- a/src/core/UBSettings.cpp +++ b/src/core/UBSettings.cpp @@ -415,6 +415,8 @@ void UBSettings::init() libIconSize = new UBSetting(this, "Library", "LibIconSize", defaultLibraryIconSize); + useSystemOnScreenKeybard = new UBSetting(this, "App", "UseSystemOnScreenKeybard", false); + cleanNonPersistentSettings(); } diff --git a/src/core/UBSettings.h b/src/core/UBSettings.h index 1c739b8a..89fa3927 100644 --- a/src/core/UBSettings.h +++ b/src/core/UBSettings.h @@ -374,6 +374,8 @@ class UBSettings : public QObject UBSetting* libIconSize; + UBSetting* useSystemOnScreenKeybard; + UBSetting* magnifierDrawingMode; UBSetting* autoSaveInterval;