[haiku-commits] r35727 - haiku/trunk/src/preferences/screensaver

  • From: axeld@xxxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 2 Mar 2010 19:44:28 +0100 (CET)

Author: axeld
Date: 2010-03-02 19:44:28 +0100 (Tue, 02 Mar 2010)
New Revision: 35727
Changeset: http://dev.haiku-os.org/changeset/35727/haiku
Ticket: http://dev.haiku-os.org/ticket/4339

Modified:
   haiku/trunk/src/preferences/screensaver/ScreenSaverWindow.cpp
Log:
* 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.


Modified: haiku/trunk/src/preferences/screensaver/ScreenSaverWindow.cpp
===================================================================
--- haiku/trunk/src/preferences/screensaver/ScreenSaverWindow.cpp       
2010-03-02 18:13:06 UTC (rev 35726)
+++ haiku/trunk/src/preferences/screensaver/ScreenSaverWindow.cpp       
2010-03-02 18:44:28 UTC (rev 35727)
@@ -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 @@
 void
 ModulesView::DetachedFromWindow()
 {
+       SaveState();
        _CloseSaver();
 }
 
@@ -441,10 +442,10 @@
                        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 @@
 
 //! 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 @@
                fSaverRunner->Quit();
        if (saver != NULL)
                saver->StopConfig();
-       
+
        delete view;
        delete fSettingsView;
        delete fSaverRunner;
@@ -586,7 +587,7 @@
 //     #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()
 {
+       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 @@
        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 @@
 bool
 ScreenSaverWindow::QuitRequested()
 {
-       _UpdateStatus();
-       fModulesView->SaveState();
-       fSettings.Save();
-
        be_app->PostMessage(B_QUIT_REQUESTED);
        return true;
-}       
+}
 


Other related posts:

  • » [haiku-commits] r35727 - haiku/trunk/src/preferences/screensaver - axeld