diff --git a/src/apps/deskbar/BarApp.cpp b/src/apps/deskbar/BarApp.cpp
index 532e1bc..331abbc 100644
--- a/src/apps/deskbar/BarApp.cpp
+++ b/src/apps/deskbar/BarApp.cpp
@@ -206,8 +206,8 @@ TBarApp::SaveSettings()
 			fSettings.sortRunningApps);
 		storedSettings.AddBool("superExpando",
 			fSettings.superExpando);
-		storedSettings.AddBool("expandNewTeams",
-			fSettings.expandNewTeams);
+		storedSettings.AddBool("autoExpandTeams",
+			fSettings.autoExpandTeams);
 		storedSettings.AddBool("autoRaise",
 			fSettings.autoRaise);
 		storedSettings.AddBool("recentAppsEnabled",
@@ -243,7 +243,7 @@ TBarApp::InitSettings()
 	settings.trackerAlwaysFirst = false;
 	settings.sortRunningApps = false;
 	settings.superExpando = false;
-	settings.expandNewTeams = false;
+	settings.autoExpandTeams = false;
 	settings.autoRaise = false;
 	settings.recentAppsEnabled = true;
 	settings.recentDocsEnabled = true;
@@ -293,8 +293,8 @@ TBarApp::InitSettings()
 				&settings.sortRunningApps);
 			storedSettings.FindBool("superExpando",
 				&settings.superExpando);
-			storedSettings.FindBool("expandNewTeams",
-				&settings.expandNewTeams);
+			storedSettings.FindBool("autoExpandTeams",
+				&settings.autoExpandTeams);
 			storedSettings.FindBool("autoRaise",
 				&settings.autoRaise);
 			storedSettings.FindBool("recentAppsEnabled",
@@ -384,6 +384,12 @@ TBarApp::MessageReceived(BMessage* message)
 			message->FindRef("be:ref", &ref);
 
 			AddTeam(team, flags, sig, &ref);
+
+			TBarView* barView = static_cast<TBarApp*>(be_app)->BarView();
+			fBarWindow->Lock();
+			barView->UpdatePlacement();
+			fBarWindow->Unlock();
+
 			break;
 		}
 
@@ -441,8 +447,7 @@ TBarApp::MessageReceived(BMessage* message)
 		{
 			fSettings.sortRunningApps = !fSettings.sortRunningApps;
 
-			TBarView* barView = static_cast<TBarApp*>(be_app)->BarView();
-			fBarWindow->Lock();
+			TBarView* barView = static_cast<TBarApp*>(be_app)->BarView(); fBarWindow->Lock();
 			barView->UpdatePlacement();
 			fBarWindow->Unlock();
 			break;
@@ -467,13 +472,13 @@ TBarApp::MessageReceived(BMessage* message)
 			break;
 		}
 
-		case kExpandNewTeams:
+		case kAutoExpandTeams:
 		{
-			fSettings.expandNewTeams = !fSettings.expandNewTeams;
+			fSettings.autoExpandTeams = !fSettings.autoExpandTeams;
 
 			TBarView* barView = static_cast<TBarApp*>(be_app)->BarView();
 			fBarWindow->Lock();
-			barView->UpdatePlacement();
+			barView->ToggleExpandedItems();
 			fBarWindow->Unlock();
 			break;
 		}
diff --git a/src/apps/deskbar/BarApp.h b/src/apps/deskbar/BarApp.h
index 6f15838..8985133 100644
--- a/src/apps/deskbar/BarApp.h
+++ b/src/apps/deskbar/BarApp.h
@@ -79,7 +79,7 @@ const uint32 kShutDown = 'ShDn';
 const uint32 kTrackerFirst = 'TkFt';
 const uint32 kSortRunningApps = 'SAps';
 const uint32 kSuperExpando = 'SprE';
-const uint32 kExpandNewTeams = 'ExTm';
+const uint32 kAutoExpandTeams = 'ExTm';
 const uint32 kAutoRaise = 'AtRs';
 const uint32 kRestartTracker = 'Trak';
 
@@ -108,7 +108,7 @@ struct desk_settings {
 	bool trackerAlwaysFirst;
 	bool sortRunningApps;
 	bool superExpando;
-	bool expandNewTeams;
+	bool autoExpandTeams;
 	bool autoRaise;
 	bool recentAppsEnabled;
 	bool recentDocsEnabled;
diff --git a/src/apps/deskbar/BarView.cpp b/src/apps/deskbar/BarView.cpp
index f113e6a..3777ae1 100644
--- a/src/apps/deskbar/BarView.cpp
+++ b/src/apps/deskbar/BarView.cpp
@@ -469,7 +469,10 @@ TBarView::ChangeState(int32 state, bool vertical, bool left, bool top)
  	Window()->UpdateIfNeeded();
 
 	// Re-expand those apps.
-	if (expandedItems.CountItems() > 0) {
+	if (static_cast<TBarApp*>(be_app)->Settings()->superExpando
+		&& static_cast<TBarApp*>(be_app)->Settings()->autoExpandTeams)
+		ToggleExpandedItems();
+	else if (expandedItems.CountItems() > 0) {
 		for (int sigIndex = expandedItems.CountItems(); sigIndex-- > 0;) {
 			signature = static_cast<BString*>(expandedItems.ItemAt(sigIndex));
 			if (signature == NULL)
@@ -499,6 +502,25 @@ TBarView::ChangeState(int32 state, bool vertical, bool left, bool top)
 }
 
 
+void
+TBarView::ToggleExpandedItems()
+{
+	if (fExpando && fVertical && Expando()
+		&& static_cast<TBarApp*>(be_app)->Settings()->superExpando) {
+		for (int32 teamIndex = fExpando->CountItems(); teamIndex-- > 0;) {
+			TTeamMenuItem* teamItem
+				= dynamic_cast<TTeamMenuItem*>(fExpando->ItemAt(teamIndex));
+			if (teamItem != NULL
+				&& static_cast<TBarApp*>(be_app)->Settings()->autoExpandTeams !=
+					teamItem->IsExpanded())
+				teamItem->ToggleExpandState(false);
+		}
+
+		fExpando->SizeWindow();
+	}
+}
+
+
 //	window placement functions
 
 bool
diff --git a/src/apps/deskbar/BarView.h b/src/apps/deskbar/BarView.h
index a481445..3e96ec3 100644
--- a/src/apps/deskbar/BarView.h
+++ b/src/apps/deskbar/BarView.h
@@ -135,6 +135,7 @@ class TBarView : public BView {
 		TExpandoMenuBar* ExpandoMenuBar() const;
 		TBarMenuBar* BarMenuBar() const;
 		TDragRegion* DragRegion() const { return fDragRegion; }
+		void ToggleExpandedItems();
 
 	private:
 		friend class TBeMenu;
diff --git a/src/apps/deskbar/ExpandoMenuBar.cpp b/src/apps/deskbar/ExpandoMenuBar.cpp
index 0fd4483..e13f6cd 100644
--- a/src/apps/deskbar/ExpandoMenuBar.cpp
+++ b/src/apps/deskbar/ExpandoMenuBar.cpp
@@ -80,7 +80,7 @@ TExpandoMenuBar::TExpandoMenuBar(TBarView* bar, BRect frame, const char* name,
 	fDrawLabel(drawLabel),
 	fIsScrolling(false),
 	fShowTeamExpander(static_cast<TBarApp*>(be_app)->Settings()->superExpando),
-	fExpandNewTeams(static_cast<TBarApp*>(be_app)->Settings()->expandNewTeams),
+	fAutoExpandTeams(static_cast<TBarApp*>(be_app)->Settings()->autoExpandTeams),
 	fBeMenuWidth(kDefaultBeMenuWidth),
 	fBarView(bar),
 	fFirstApp(0),
@@ -535,7 +535,7 @@ TExpandoMenuBar::AddTeam(BList* team, BBitmap* icon, char* name,
 		AddItem(item);
 
 	if (fVertical) {
-		if (item && fShowTeamExpander && fExpandNewTeams)
+		if (item && fShowTeamExpander && fAutoExpandTeams)
 			item->ToggleExpandState(false);
 
 		fBarView->SizeWindow(BScreen(Window()).Frame());
diff --git a/src/apps/deskbar/ExpandoMenuBar.h b/src/apps/deskbar/ExpandoMenuBar.h
index 928555c..86f8cd3 100644
--- a/src/apps/deskbar/ExpandoMenuBar.h
+++ b/src/apps/deskbar/ExpandoMenuBar.h
@@ -97,7 +97,7 @@ class TExpandoMenuBar : public BMenuBar {
 		bool fDrawLabel : 1;
 		bool fIsScrolling : 1;
 		bool fShowTeamExpander : 1;
-		bool fExpandNewTeams : 1;
+		bool fAutoExpandTeams : 1;
 
 		float fBeMenuWidth;
 
diff --git a/src/apps/deskbar/PreferencesWindow.cpp b/src/apps/deskbar/PreferencesWindow.cpp
index e8fdf07..eff7ab3 100644
--- a/src/apps/deskbar/PreferencesWindow.cpp
+++ b/src/apps/deskbar/PreferencesWindow.cpp
@@ -55,8 +55,8 @@ PreferencesWindow::PreferencesWindow(BRect frame)
 	fAppsShowExpanders = new BCheckBox(
 		B_TRANSLATE("Show application expander"),
 		new BMessage(kSuperExpando));
-	fAppsExpandNew = new BCheckBox(B_TRANSLATE("Expand new applications"),
-		new BMessage(kExpandNewTeams));
+	fAppsAutoExpand = new BCheckBox(B_TRANSLATE("Auto-expand applications"),
+		new BMessage(kAutoExpandTeams));
 
 	fClockSeconds = new BCheckBox(B_TRANSLATE("Show seconds"),
 		new BMessage(kShowSeconds));
@@ -88,7 +88,7 @@ PreferencesWindow::PreferencesWindow(BRect frame)
 	fAppsSort->SetValue(appSettings->sortRunningApps);
 	fAppsSortTrackerFirst->SetValue(appSettings->trackerAlwaysFirst);
 	fAppsShowExpanders->SetValue(appSettings->superExpando);
-	fAppsExpandNew->SetValue(appSettings->expandNewTeams);
+	fAppsAutoExpand->SetValue(appSettings->autoExpandTeams);
 
 	int32 docCount = appSettings->recentDocsCount;
 	int32 appCount = appSettings->recentAppsCount;
@@ -130,7 +130,7 @@ PreferencesWindow::PreferencesWindow(BRect frame)
 	// Targets
 	fAppsSort->SetTarget(be_app);
 	fAppsSortTrackerFirst->SetTarget(be_app);
-	fAppsExpandNew->SetTarget(be_app);
+	fAppsAutoExpand->SetTarget(be_app);
 
 	fClockSeconds->SetTarget(replicantTray);
 
@@ -177,7 +177,7 @@ PreferencesWindow::PreferencesWindow(BRect frame)
 			.Add(fAppsShowExpanders)
 			.AddGroup(B_HORIZONTAL, 0)
 				.SetInsets(20, 0, 0, 0)
-				.Add(fAppsExpandNew)
+				.Add(fAppsAutoExpand)
 				.End()
 			.AddGlue()
 			.SetInsets(10, 10, 10, 10)
@@ -276,9 +276,9 @@ void
 PreferencesWindow::_EnableDisableDependentItems()
 {
 	if (fAppsShowExpanders->Value())
-		fAppsExpandNew->SetEnabled(true);
+		fAppsAutoExpand->SetEnabled(true);
 	else
-		fAppsExpandNew->SetEnabled(false);
+		fAppsAutoExpand->SetEnabled(false);
 
 	if (fMenuRecentDocuments->Value())
 		fMenuRecentDocumentCount->SetEnabled(true);
diff --git a/src/apps/deskbar/PreferencesWindow.h b/src/apps/deskbar/PreferencesWindow.h
index 77f641b..6b4b031 100644
--- a/src/apps/deskbar/PreferencesWindow.h
+++ b/src/apps/deskbar/PreferencesWindow.h
@@ -50,7 +50,7 @@ private:
 			BCheckBox*		fAppsSort;
 			BCheckBox*		fAppsSortTrackerFirst;
 			BCheckBox*		fAppsShowExpanders;
-			BCheckBox*		fAppsExpandNew;
+			BCheckBox*		fAppsAutoExpand;
 
 			BCheckBox*		fClockSeconds;
 
diff --git a/src/apps/deskbar/TeamMenuItem.cpp b/src/apps/deskbar/TeamMenuItem.cpp
index cbd669f..0e61613 100644
--- a/src/apps/deskbar/TeamMenuItem.cpp
+++ b/src/apps/deskbar/TeamMenuItem.cpp
@@ -497,11 +497,11 @@ TTeamMenuItem::ToggleExpandState(bool resizeWindow)
 		TWindowMenu* sub = (static_cast<TWindowMenu*>(Submenu()));
 		if (sub) {
 			// force the menu to update it's contents.
-			bool locked = sub->LockLooper();
+			if (sub->LockLooper()) {
 				// if locking the looper failed, the menu is just not visible
-			sub->AttachedToWindow();
-			if (locked)
+				sub->AttachedToWindow();
 				sub->UnlockLooper();
+			}
 
 			if (sub->CountItems() > 1){
 				TExpandoMenuBar* parent = static_cast<TExpandoMenuBar*>(Menu());
