diff --git a/src/servers/app/Desktop.cpp b/src/servers/app/Desktop.cpp index b080a966d0..4927d63a15 100644 --- a/src/servers/app/Desktop.cpp +++ b/src/servers/app/Desktop.cpp @@ -657,6 +657,27 @@ Desktop::RedrawBackground() } +/*! + \brief Store the workspace configuration +*/ +void +Desktop::StoreWorkspaceConfiguration(Workspace::Private *workspace) +{ + // store settings + for (int32 index = 0; index < 32; index++) { + if (&fWorkspaces[index] == workspace) { + const BMessage *oldSettings = fSettings->WorkspacesMessage(index); + BMessage settings; + if (oldSettings) + settings = *oldSettings; + workspace->StoreConfiguration(settings); + fSettings->Save(kWorkspacesSettings); + break; + } + } +} + + void Desktop::UpdateWorkspaces() { diff --git a/src/servers/app/Desktop.h b/src/servers/app/Desktop.h index b876f9ef5a..ba9ac4bf3a 100644 --- a/src/servers/app/Desktop.h +++ b/src/servers/app/Desktop.h @@ -163,6 +163,7 @@ class Desktop : public MessageLooper, public ScreenOwner { { return fBackgroundRegion; } void RedrawBackground(); + void StoreWorkspaceConfiguration(Workspace::Private *workspace); void MinimizeApplication(team_id team); void BringApplicationToFront(team_id team); diff --git a/src/servers/app/Workspace.cpp b/src/servers/app/Workspace.cpp index 30d814c244..1a7dc144e6 100644 --- a/src/servers/app/Workspace.cpp +++ b/src/servers/app/Workspace.cpp @@ -105,9 +105,10 @@ Workspace::SetColor(const RGBColor& color, bool makeDefault) if (color == Color()) return; - // TODO: support makeDefault fWorkspace.SetColor(color); fDesktop.RedrawBackground(); + if (makeDefault) + fDesktop.StoreWorkspaceConfiguration(&fWorkspace); }