WebBrowser/WebBrowserWindow.py

changeset 5783
44a9f08de394
parent 5782
60874802161b
child 5784
362bbcc49ac1
--- a/WebBrowser/WebBrowserWindow.py	Sun Jul 02 19:40:39 2017 +0200
+++ b/WebBrowser/WebBrowserWindow.py	Mon Jul 03 19:23:54 2017 +0200
@@ -109,6 +109,7 @@
     _tabManager = None
     _sessionManager = None
     
+    _performingStartup = True
     _performingShutdown = False
     _lastActiveWindow = None
     
@@ -353,9 +354,36 @@
             syncMgr.syncMessage.connect(self.statusBar().showMessage)
             syncMgr.syncError.connect(self.statusBar().showMessage)
             
+            restoreSessionData = {}
+            if WebBrowserWindow._performingStartup and not home:
+                startupBehavior = Preferences.getWebBrowser("StartupBehavior")
+                if not private and startupBehavior in [3, 4]:
+                    if startupBehavior == 3:
+                        # restore last session
+                        restoreSessionFile = \
+                            self.sessionManager().lastActiveSessionFile()
+                    elif startupBehavior == 4:
+                        # select session
+                        restoreSessionFile = \
+                            self.sessionManager().selectSession()
+                    sessionData = \
+                        self.sessionManager().readSessionFromFile(
+                            restoreSessionFile)
+                    if self.sessionManager().isValidSession(sessionData):
+                        restoreSessionData = sessionData
+                        restoreSession = True
+                else:
+                    if Preferences.getWebBrowser("StartupBehavior") == 0:
+                        home = "eric:blank"
+                    elif Preferences.getWebBrowser("StartupBehavior") == 1:
+                        home = Preferences.getWebBrowser("HomePage")
+                    elif Preferences.getWebBrowser("StartupBehavior") == 2:
+                        home = "eric:speeddial"
+            
             if not restoreSession:
                 self.__tabWidget.newBrowser(home)
                 self.__tabWidget.currentBrowser().setFocus()
+            WebBrowserWindow._performingStartup = False
             
             self.__imagesIcon = ImagesIcon(self)
             self.statusBar().addPermanentWidget(self.__imagesIcon)
@@ -443,7 +471,12 @@
             self.__hideNavigationTimer.timeout.connect(self.__hideNavigation)
             
             self.__forcedClose = False
-            self.sessionManager()
+            
+            if restoreSessionData:
+                self.sessionManager().restoreSessionFromData(
+                    self, restoreSessionData)
+            
+            self.sessionManager().activateTimer()
             
             QTimer.singleShot(0, syncMgr.loadSettings)
     
@@ -2767,6 +2800,13 @@
             if not self.__tabWidget.shallShutDown():
                 return False
         
+        if not self.__fromEric:
+            if not WebBrowserWindow._performingShutdown and \
+                    len(WebBrowserWindow.BrowserWindows) == 1:
+                # shut down the session manager in case the last window is
+                # about to be closed
+                self.sessionManager().shutdown()
+        
         self.__bookmarksToolBar.setModel(None)
         
         self.__virusTotal.close()

eric ide

mercurial