SF.net SVN: mahogany:[7590] trunk/M

[email protected] Tue, 08 Dec 2009 13:23:12 +0000
Newsgroups gmane.mail.mahogany.cvs
Message-ID <[email protected]>
Revision: 7590
          http://mahogany.svn.sourceforge.net/mahogany/?rev=7590&view=rev
Author:   vadz
Date:     2009-12-08 13:23:12 +0000 (Tue, 08 Dec 2009)

Log Message:
-----------
Fix folders reopening on resume from suspend under Windows Vista/7.

EVT_POWER_SUSPENDING event is not sent by these OS so our code reacting to it
was never called.

Modified Paths:
--------------
    trunk/M/include/gui/wxMainFrame.h
    trunk/M/src/gui/wxMainFrame.cpp

Modified: trunk/M/include/gui/wxMainFrame.h
===================================================================
--- trunk/M/include/gui/wxMainFrame.h	2009-12-05 01:03:17 UTC (rev 7589)
+++ trunk/M/include/gui/wxMainFrame.h	2009-12-08 13:23:12 UTC (rev 7590)
@@ -68,10 +68,8 @@
    void OnAbout(wxCommandEvent &) { OnMenuCommand(WXMENU_HELP_ABOUT);}
 
 #ifdef wxHAS_POWER_EVENTS
-   void OnPowerSuspending(wxPowerEvent& event);
    void OnPowerSuspended(wxPowerEvent& event);
-   void OnPowerSuspendCancel(wxPowerEvent& event) { DoResume(); }
-   void OnPowerResume(wxPowerEvent&) { DoResume(); }
+   void OnPowerResume(wxPowerEvent& event);
 #endif // wxHAS_POWER_EVENTS
 
 
@@ -128,9 +126,6 @@
 
 
 #ifdef wxHAS_POWER_EVENTS
-   /// Reopen the folders closed when we suspended
-   void DoResume();
-
    // the list of folders automatically closed when we suspended or NULL
    MFolderList *m_foldersToReopen;
 

Modified: trunk/M/src/gui/wxMainFrame.cpp
===================================================================
--- trunk/M/src/gui/wxMainFrame.cpp	2009-12-05 01:03:17 UTC (rev 7589)
+++ trunk/M/src/gui/wxMainFrame.cpp	2009-12-08 13:23:12 UTC (rev 7590)
@@ -565,9 +565,7 @@
    EVT_CHOICE(IDC_IDENT_COMBO, wxMainFrame::OnIdentChange)
 
 #ifdef wxHAS_POWER_EVENTS
-   EVT_POWER_SUSPENDING(wxMainFrame::OnPowerSuspending)
    EVT_POWER_SUSPENDED(wxMainFrame::OnPowerSuspended)
-   EVT_POWER_SUSPEND_CANCEL(wxMainFrame::OnPowerSuspendCancel)
    EVT_POWER_RESUME(wxMainFrame::OnPowerResume)
 #endif // wxHAS_POWER_EVENTS
 END_EVENT_TABLE()
@@ -1130,7 +1128,7 @@
 
 #ifdef wxHAS_POWER_EVENTS
 
-void wxMainFrame::OnPowerSuspending(wxPowerEvent& event)
+void wxMainFrame::OnPowerSuspended(wxPowerEvent& WXUNUSED(event))
 {
    ASSERT_MSG( !m_foldersToReopen, _T("didn't resume from last suspend?") );
 
@@ -1139,31 +1137,27 @@
    int nClosed = MailFolder::CloseAll(m_foldersToReopen);
    if ( nClosed < 0 )
    {
-      DoResume();
-
-      wxLogError(_("The system cannot be suspended because some folders "
-                   "are still opened."));
-      event.Veto();
+      wxLogWarning(_("Failed to gracefully close some opened folders on "
+                     "system suspend."));
    }
    else if ( nClosed )
    {
       wxLogStatus(_("Closed %lu folders which will be reopened on resume."),
                   (unsigned long)m_foldersToReopen->size());
    }
-   else // no open folders
+
+   if ( nClosed <= 0 )
    {
+      // we don't need it finally
       delete m_foldersToReopen;
       m_foldersToReopen = NULL;
    }
-}
 
-void wxMainFrame::OnPowerSuspended(wxPowerEvent& WXUNUSED(event))
-{
-   // save all options
+   // save all options just in case
    Profile::FlushAll();
 }
 
-void wxMainFrame::DoResume()
+void wxMainFrame::OnPowerResume(wxPowerEvent& WXUNUSED(event))
 {
    if ( !m_foldersToReopen )
       return;
@@ -1173,7 +1167,7 @@
    MFolderList *foldersToReopen = m_foldersToReopen;
    m_foldersToReopen = NULL;
 
-   wxLogStatus(_("Reopening %lu folders"),
+   wxLogStatus(_("Reopening %lu folders on system resume"),
                (unsigned long)foldersToReopen->size());
 
    for ( MFolderList::iterator i = foldersToReopen->begin();


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.

------------------------------------------------------------------------------
Return on Information:
Google Enterprise Search pays you back
Get the facts.
http://p.sf.net/sfu/google-dev2dev