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.
This commit is contained in:
John Scipione
2013-04-14 14:05:29 -04:00
parent f2e15d076c
commit 753d86ac84
+56 -29
View File
@@ -466,10 +466,12 @@ TBarApp::MessageReceived(BMessage* message)
case kAlwaysTop: case kAlwaysTop:
fSettings.alwaysOnTop = !fSettings.alwaysOnTop; fSettings.alwaysOnTop = !fSettings.alwaysOnTop;
fBarWindow->SetFeel(fSettings.alwaysOnTop ?
B_FLOATING_ALL_WINDOW_FEEL : B_NORMAL_WINDOW_FEEL);
if (fPreferencesWindow != NULL) if (fPreferencesWindow != NULL)
fPreferencesWindow->PostMessage(kUpdatePreferences); fPreferencesWindow->PostMessage(kUpdatePreferences);
fBarWindow->SetFeel(fSettings.alwaysOnTop ?
B_FLOATING_ALL_WINDOW_FEEL : B_NORMAL_WINDOW_FEEL);
break; break;
case kAutoRaise: case kAutoRaise:
@@ -483,34 +485,44 @@ TBarApp::MessageReceived(BMessage* message)
case kAutoHide: case kAutoHide:
fSettings.autoHide = !fSettings.autoHide; fSettings.autoHide = !fSettings.autoHide;
if (fPreferencesWindow != NULL)
fPreferencesWindow->PostMessage(kUpdatePreferences);
fBarWindow->Lock(); fBarWindow->Lock();
fBarView->HideDeskbar(fSettings.autoHide); fBarView->HideDeskbar(fSettings.autoHide);
fBarWindow->Unlock(); fBarWindow->Unlock();
if (fPreferencesWindow != NULL)
fPreferencesWindow->PostMessage(kUpdatePreferences);
break; break;
case kTrackerFirst: case kTrackerFirst:
fSettings.trackerAlwaysFirst = !fSettings.trackerAlwaysFirst; fSettings.trackerAlwaysFirst = !fSettings.trackerAlwaysFirst;
fBarWindow->Lock();
fBarView->PlaceApplicationBar();
fBarWindow->Unlock();
if (fPreferencesWindow != NULL) if (fPreferencesWindow != NULL)
fPreferencesWindow->PostMessage(kUpdatePreferences); 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; break;
case kSortRunningApps: case kSortRunningApps:
fSettings.sortRunningApps = !fSettings.sortRunningApps; fSettings.sortRunningApps = !fSettings.sortRunningApps;
fBarWindow->Lock();
fBarView->PlaceApplicationBar();
fBarWindow->Unlock();
if (fPreferencesWindow != NULL) if (fPreferencesWindow != NULL)
fPreferencesWindow->PostMessage(kUpdatePreferences); 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; break;
case kUnsubscribe: case kUnsubscribe:
@@ -524,34 +536,49 @@ TBarApp::MessageReceived(BMessage* message)
case kSuperExpando: case kSuperExpando:
fSettings.superExpando = !fSettings.superExpando; fSettings.superExpando = !fSettings.superExpando;
fBarWindow->Lock();
fBarView->PlaceApplicationBar();
fBarWindow->Unlock();
if (fPreferencesWindow != NULL) if (fPreferencesWindow != NULL)
fPreferencesWindow->PostMessage(kUpdatePreferences); 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; break;
case kExpandNewTeams: case kExpandNewTeams:
fSettings.expandNewTeams = !fSettings.expandNewTeams; fSettings.expandNewTeams = !fSettings.expandNewTeams;
fBarWindow->Lock();
fBarView->PlaceApplicationBar();
fBarWindow->Unlock();
if (fPreferencesWindow != NULL) if (fPreferencesWindow != NULL)
fPreferencesWindow->PostMessage(kUpdatePreferences); 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; break;
case kHideLabels: case kHideLabels:
fSettings.hideLabels = !fSettings.hideLabels; fSettings.hideLabels = !fSettings.hideLabels;
fBarWindow->Lock();
fBarView->PlaceApplicationBar();
fBarWindow->Unlock();
if (fPreferencesWindow != NULL) if (fPreferencesWindow != NULL)
fPreferencesWindow->PostMessage(kUpdatePreferences); 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; break;
case kResizeTeamIcons: case kResizeTeamIcons:
@@ -575,11 +602,15 @@ TBarApp::MessageReceived(BMessage* message)
ResizeTeamIcons(); ResizeTeamIcons();
if (fPreferencesWindow != NULL)
fPreferencesWindow->PostMessage(kUpdatePreferences);
// if mini mode we don't need to update the view // if mini mode we don't need to update the view
if (fBarView->MiniState()) if (fBarView->MiniState())
break; break;
fBarWindow->Lock(); fBarWindow->Lock();
fBarView->SaveExpandedItems();
if (!fBarView->Vertical()) { if (!fBarView->Vertical()) {
// Must also resize the Deskbar menu and replicant tray in // Must also resize the Deskbar menu and replicant tray in
// horizontal mode // horizontal mode
@@ -588,10 +619,6 @@ TBarApp::MessageReceived(BMessage* message)
} }
fBarView->PlaceApplicationBar(); fBarView->PlaceApplicationBar();
fBarWindow->Unlock(); fBarWindow->Unlock();
if (fPreferencesWindow != NULL)
fPreferencesWindow->PostMessage(kUpdatePreferences);
break; break;
} }