Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/owncloud/client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Kamm <mail@ckamm.de>2019-03-06 12:55:45 +0300
committerMarkus Goetz <markus@woboq.com>2019-03-08 04:08:18 +0300
commite24c0f2f14a2b46d4099b4a34d52bb722d333c71 (patch)
treee44df7de35466ec19123ba1c17d24a7942fe6650 /src/gui/main.cpp
parent69bde24c30a9d6b5f385b8200731811c6700e965 (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.cpp26
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";
}
}
}