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