diff options
author | Christian Kamm <mail@ckamm.de> | 2019-03-06 12:55:45 +0300 |
---|---|---|
committer | Markus Goetz <markus@woboq.com> | 2019-03-08 04:08:18 +0300 |
commit | e24c0f2f14a2b46d4099b4a34d52bb722d333c71 (patch) | |
tree | e44df7de35466ec19123ba1c17d24a7942fe6650 /src/gui/main.cpp | |
parent | 69bde24c30a9d6b5f385b8200731811c6700e965 (diff) |
Tray: Try to establish tray after 10s if failed initially #6518
When owncloud is started during desktop startup the tray may not yet
be running when the client starts. This will make the client attempt
to create a tray icon again after 10 seconds if there's no tray
during initial startup.
Diffstat (limited to 'src/gui/main.cpp')
-rw-r--r-- | src/gui/main.cpp | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/src/gui/main.cpp b/src/gui/main.cpp index efe87a9d6..e1f7b4f40 100644 --- a/src/gui/main.cpp +++ b/src/gui/main.cpp @@ -127,6 +127,7 @@ int main(int argc, char **argv) } return 0; } + // We can't call isSystemTrayAvailable with appmenu-qt5 begause it hides the systemtray // (issue #4693) if (qgetenv("QT_QPA_PLATFORMTHEME") != "appmenu-qt5") @@ -135,27 +136,34 @@ int main(int argc, char **argv) // If the systemtray is not there, we will wait one second for it to maybe start // (eg boot time) then we show the settings dialog if there is still no systemtray. // On XFCE however, we show a message box with explainaition how to install a systemtray. + qCInfo(lcApplication) << "System tray is not available, waiting..."; Utility::sleep(1); + auto desktopSession = qgetenv("XDG_CURRENT_DESKTOP").toLower(); if (desktopSession.isEmpty()) { desktopSession = qgetenv("DESKTOP_SESSION").toLower(); } if (desktopSession == "xfce") { int attempts = 0; - forever { - if (!QSystemTrayIcon::isSystemTrayAvailable()) { - Utility::sleep(1); - attempts++; - if (attempts < 30) - continue; - } else { + while (!QSystemTrayIcon::isSystemTrayAvailable()) { + attempts++; + if (attempts >= 30) { + qCWarning(lcApplication) << "System tray unavailable (xfce)"; + warnSystray(); break; } - warnSystray(); + Utility::sleep(1); } } - if (!QSystemTrayIcon::isSystemTrayAvailable() && desktopSession != "ubuntu") { + + if (QSystemTrayIcon::isSystemTrayAvailable()) { + app.tryTrayAgain(); + } else if (desktopSession != "ubuntu") { + qCInfo(lcApplication) << "System tray still not available, showing window and trying again later"; app.showSettingsDialog(); + QTimer::singleShot(10000, &app, &Application::tryTrayAgain); + } else { + qCInfo(lcApplication) << "System tray still not available, but assuming it's fine on 'ubuntu' desktop"; } } } |