* Fixed #4339 - I did not use stimut's patch (but thanks a lot, I wouldn't even

have started looking into it without it!), but solved it a bit differently by
  moving the state saving into the destructor, and removing the tab in question
  manually afterwards.
* Automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35727 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler 2010-03-02 18:44:28 +00:00
parent d40a935560
commit 9562c7f592

View File

@ -1,5 +1,5 @@
/*
* Copyright 2003-2007, Haiku.
* Copyright 2003-2010, Haiku.
* Distributed under the terms of the MIT License.
*
* Authors:
@ -308,6 +308,7 @@ ModulesView::~ModulesView()
void
ModulesView::DetachedFromWindow()
{
SaveState();
_CloseSaver();
}
@ -441,10 +442,10 @@ ModulesView::PopulateScreenSaverList()
path.Append(name);
ScreenSaverItem* item = new ScreenSaverItem(name, path.Path());
fListView->AddItem(item);
fListView->AddItem(item);
if (!strcmp(fSettings.ModuleName(), item->Text())
|| (!strcmp(fSettings.ModuleName(), "")
|| (!strcmp(fSettings.ModuleName(), "")
&& !strcmp(item->Text(), "Blackness")))
selectItem = item;
}
@ -459,7 +460,7 @@ ModulesView::PopulateScreenSaverList()
//! sorting function for ScreenSaverItems
int
ModulesView::_CompareScreenSaverItems(const void* left, const void* right)
ModulesView::_CompareScreenSaverItems(const void* left, const void* right)
{
ScreenSaverItem* leftItem = *(ScreenSaverItem **)left;
ScreenSaverItem* rightItem = *(ScreenSaverItem **)right;
@ -492,7 +493,7 @@ ModulesView::_CloseSaver()
fSaverRunner->Quit();
if (saver != NULL)
saver->StopConfig();
delete view;
delete fSettingsView;
delete fSaverRunner;
@ -586,7 +587,7 @@ ModulesView::_OpenSaver()
// #pragma mark -
ScreenSaverWindow::ScreenSaverWindow()
ScreenSaverWindow::ScreenSaverWindow()
: BWindow(BRect(50, 50, 496, 375), "ScreenSaver",
B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS /*| B_NOT_ZOOMABLE | B_NOT_RESIZABLE*/)
{
@ -639,6 +640,14 @@ ScreenSaverWindow::ScreenSaverWindow()
ScreenSaverWindow::~ScreenSaverWindow()
{
Hide();
_UpdateStatus();
delete fTabView->RemoveTab(1);
// We delete this here in order to make sure the module view saves its
// state while the window is still intact.
fSettings.Save();
}
@ -814,7 +823,7 @@ ScreenSaverWindow::_UpdateStatus()
EnableUpdates();
// Update the saved preferences
fSettings.SetWindowFrame(Frame());
fSettings.SetWindowFrame(Frame());
fSettings.SetWindowTab(fTabView->Selection());
fSettings.SetTimeFlags((enabled ? ENABLE_SAVER : 0)
| (fTurnOffCheckBox->Value() ? fTurnOffScreenFlags : 0));
@ -917,11 +926,7 @@ ScreenSaverWindow::ScreenChanged(BRect frame, color_space colorSpace)
bool
ScreenSaverWindow::QuitRequested()
{
_UpdateStatus();
fModulesView->SaveState();
fSettings.Save();
be_app->PostMessage(B_QUIT_REQUESTED);
return true;
}
}