From fcab391bbcc2db5e66b6bbf6d0a60acaeff4b2f2 Mon Sep 17 00:00:00 2001 From: Fredrik Modeen Date: Sun, 12 Jul 2009 10:25:18 +0000 Subject: [PATCH] Fixes #2314. * Check if ProcessController are already installed in deskbar, If so don't try to install again. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31526 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/processcontroller/PCWorld.cpp | 75 +++++++++++++------------- 1 file changed, 37 insertions(+), 38 deletions(-) diff --git a/src/apps/processcontroller/PCWorld.cpp b/src/apps/processcontroller/PCWorld.cpp index c8a5c65a39..5fc17e9806 100644 --- a/src/apps/processcontroller/PCWorld.cpp +++ b/src/apps/processcontroller/PCWorld.cpp @@ -79,46 +79,45 @@ PCApplication::ReadyToRun() Preferences preferences(kPreferencesFileName); int32 version = 0; preferences.ReadInt32(version, kVersionName); - if (version != kCurrentVersion) { - BAlert* alert = new BAlert("", "Do you want ProcessController to live in the Deskbar?", - "Don't", "Install", NULL, B_WIDTH_AS_USUAL, B_WARNING_ALERT); + + BDeskbar deskbar; + bool hasOne = deskbar.HasItem(kDeskbarItemName); + + BAlert* alert = NULL; + if (!hasOne || (hasOne && version != kCurrentVersion)) { + alert = new BAlert("", + "Do you want ProcessController to live in the Deskbar?", "Don't", + "Install", NULL, B_WIDTH_AS_USUAL, B_WARNING_ALERT); alert->SetShortcut(0, B_ESCAPE); - - if (alert->Go()) { - bool hasOne = false; - { - BDeskbar deskbar; - if (deskbar.HasItem(kDeskbarItemName)) - hasOne = true; - } - - if (hasOne) { - // Restart deskbar to make sure the new version is picked up - team_id deskbarTeam = be_roster->TeamFor(kDeskbarSig); - if (deskbarTeam >= 0) { - BMessenger messenger(NULL, deskbarTeam); - messenger.SendMessage(B_QUIT_REQUESTED); - int k = 500; - do { - snooze (10000); - } while (be_roster->IsRunning(kDeskbarSig) && k-- > 0); - } - be_roster->Launch(kDeskbarSig); - int k = 500; - do { - snooze (10000); - } while (!be_roster->IsRunning(kDeskbarSig) && k-- > 0); - } - - BDeskbar deskbar; - if (!deskbar.HasItem(kDeskbarItemName)) - move_to_deskbar(deskbar); - - Quit(); - return; - } + } else { + BAlert alertTemp("", + "ProcessController are already installed in Deskbar.","Ok", NULL, + NULL, B_WIDTH_AS_USUAL, B_WARNING_ALERT); + alertTemp.Go(); + } + + if (alert != NULL && alert->Go()) { + // Restart deskbar to make sure the new version is picked up + team_id deskbarTeam = be_roster->TeamFor(kDeskbarSig); + if (deskbarTeam >= 0) { + BMessenger messenger(NULL, deskbarTeam); + messenger.SendMessage(B_QUIT_REQUESTED); + int k = 500; + do { + snooze (10000); + } while (be_roster->IsRunning(kDeskbarSig) && k-- > 0); + } + be_roster->Launch(kDeskbarSig); + int k = 500; + do { + snooze (10000); + } while (!be_roster->IsRunning(kDeskbarSig) && k-- > 0); + BDeskbar deskbar; + if (!deskbar.HasItem(kDeskbarItemName)) + move_to_deskbar(deskbar); + Quit(); + return; } - new PCWindow(); // quit other eventually running instances