From 753d86ac8426919d5eefc9dc0e35b2cfbfe12735 Mon Sep 17 00:00:00 2001 From: John Scipione Date: Sun, 14 Apr 2013 14:05:29 -0400 Subject: [PATCH] Need to SaveExpandedState() before rebuilding items. Also, if mini-mode we can skip updating the view because it doesn't get drawn until you click the TeamMenu expander. --- src/apps/deskbar/BarApp.cpp | 85 ++++++++++++++++++++++++------------- 1 file changed, 56 insertions(+), 29 deletions(-) diff --git a/src/apps/deskbar/BarApp.cpp b/src/apps/deskbar/BarApp.cpp index 75b60b6f8b..971d00c3fc 100644 --- a/src/apps/deskbar/BarApp.cpp +++ b/src/apps/deskbar/BarApp.cpp @@ -466,10 +466,12 @@ TBarApp::MessageReceived(BMessage* message) case kAlwaysTop: fSettings.alwaysOnTop = !fSettings.alwaysOnTop; - fBarWindow->SetFeel(fSettings.alwaysOnTop ? - B_FLOATING_ALL_WINDOW_FEEL : B_NORMAL_WINDOW_FEEL); + if (fPreferencesWindow != NULL) fPreferencesWindow->PostMessage(kUpdatePreferences); + + fBarWindow->SetFeel(fSettings.alwaysOnTop ? + B_FLOATING_ALL_WINDOW_FEEL : B_NORMAL_WINDOW_FEEL); break; case kAutoRaise: @@ -483,34 +485,44 @@ TBarApp::MessageReceived(BMessage* message) case kAutoHide: fSettings.autoHide = !fSettings.autoHide; + if (fPreferencesWindow != NULL) + fPreferencesWindow->PostMessage(kUpdatePreferences); + fBarWindow->Lock(); fBarView->HideDeskbar(fSettings.autoHide); fBarWindow->Unlock(); - - if (fPreferencesWindow != NULL) - fPreferencesWindow->PostMessage(kUpdatePreferences); break; case kTrackerFirst: fSettings.trackerAlwaysFirst = !fSettings.trackerAlwaysFirst; - fBarWindow->Lock(); - fBarView->PlaceApplicationBar(); - fBarWindow->Unlock(); - if (fPreferencesWindow != NULL) fPreferencesWindow->PostMessage(kUpdatePreferences); + + // if mini mode we don't need to update the view + if (fBarView->MiniState()) + break; + + fBarWindow->Lock(); + fBarView->SaveExpandedItems(); + fBarView->PlaceApplicationBar(); + fBarWindow->Unlock(); break; case kSortRunningApps: fSettings.sortRunningApps = !fSettings.sortRunningApps; - fBarWindow->Lock(); - fBarView->PlaceApplicationBar(); - fBarWindow->Unlock(); - if (fPreferencesWindow != NULL) fPreferencesWindow->PostMessage(kUpdatePreferences); + + // if mini mode we don't need to update the view + if (fBarView->MiniState()) + break; + + fBarWindow->Lock(); + fBarView->SaveExpandedItems(); + fBarView->PlaceApplicationBar(); + fBarWindow->Unlock(); break; case kUnsubscribe: @@ -524,34 +536,49 @@ TBarApp::MessageReceived(BMessage* message) case kSuperExpando: fSettings.superExpando = !fSettings.superExpando; - fBarWindow->Lock(); - fBarView->PlaceApplicationBar(); - fBarWindow->Unlock(); - if (fPreferencesWindow != NULL) fPreferencesWindow->PostMessage(kUpdatePreferences); + + // if mini mode we don't need to update the view + if (fBarView->MiniState()) + break; + + fBarWindow->Lock(); + fBarView->SaveExpandedItems(); + fBarView->PlaceApplicationBar(); + fBarWindow->Unlock(); break; case kExpandNewTeams: fSettings.expandNewTeams = !fSettings.expandNewTeams; - fBarWindow->Lock(); - fBarView->PlaceApplicationBar(); - fBarWindow->Unlock(); - if (fPreferencesWindow != NULL) fPreferencesWindow->PostMessage(kUpdatePreferences); + + // if mini mode we don't need to update the view + if (fBarView->MiniState()) + break; + + fBarWindow->Lock(); + fBarView->SaveExpandedItems(); + fBarView->PlaceApplicationBar(); + fBarWindow->Unlock(); break; case kHideLabels: fSettings.hideLabels = !fSettings.hideLabels; - fBarWindow->Lock(); - fBarView->PlaceApplicationBar(); - fBarWindow->Unlock(); - if (fPreferencesWindow != NULL) fPreferencesWindow->PostMessage(kUpdatePreferences); + + // if mini mode we don't need to update the view + if (fBarView->MiniState()) + break; + + fBarWindow->Lock(); + fBarView->SaveExpandedItems(); + fBarView->PlaceApplicationBar(); + fBarWindow->Unlock(); break; case kResizeTeamIcons: @@ -575,11 +602,15 @@ TBarApp::MessageReceived(BMessage* message) ResizeTeamIcons(); + if (fPreferencesWindow != NULL) + fPreferencesWindow->PostMessage(kUpdatePreferences); + // if mini mode we don't need to update the view if (fBarView->MiniState()) break; fBarWindow->Lock(); + fBarView->SaveExpandedItems(); if (!fBarView->Vertical()) { // Must also resize the Deskbar menu and replicant tray in // horizontal mode @@ -588,10 +619,6 @@ TBarApp::MessageReceived(BMessage* message) } fBarView->PlaceApplicationBar(); fBarWindow->Unlock(); - - if (fPreferencesWindow != NULL) - fPreferencesWindow->PostMessage(kUpdatePreferences); - break; }