From 8ba07614a4663500aad191d50917c56409be1e18 Mon Sep 17 00:00:00 2001 From: Paradoxon Date: Sat, 9 Jul 2016 16:07:26 +0200 Subject: [PATCH] WebPositive: dont restore session if a ref is received Signed-off-by: Adrien Destugues Fixes #12850 --- src/apps/webpositive/BrowserApp.cpp | 37 ++++++++++++++++------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/src/apps/webpositive/BrowserApp.cpp b/src/apps/webpositive/BrowserApp.cpp index ef865afe9b..0b4df79d04 100644 --- a/src/apps/webpositive/BrowserApp.cpp +++ b/src/apps/webpositive/BrowserApp.cpp @@ -231,29 +231,32 @@ BrowserApp::ReadyToRun() fLaunchRefsMessage = NULL; } - BMessage archivedWindow; - for (int i = 0; fSession->FindMessage("window", i, &archivedWindow) == B_OK; - i++) { + // If no refs led to a new open page, restore previous session. + if (pagesCreated == 0) { + BMessage archivedWindow; + for (int i = 0; fSession->FindMessage("window", i, &archivedWindow) == B_OK; + i++) { + BRect frame = archivedWindow.FindRect("window frame"); + BString url; + archivedWindow.FindString("tab", 0, &url); + BrowserWindow* window = new(std::nothrow) BrowserWindow(frame, + fSettings, url, fContext); - BRect frame = archivedWindow.FindRect("window frame"); - BString url; - archivedWindow.FindString("tab", 0, &url); - BrowserWindow* window = new(std::nothrow) BrowserWindow(frame, - fSettings, url, fContext); - - if (window != NULL) { - window->Show(); - pagesCreated++; - - for (int j = 1; archivedWindow.FindString("tab", j, &url) == B_OK; - j++) { - printf("Create %d:%d\n", i, j); - _CreateNewTab(window, url, false); + if (window != NULL) { + window->Show(); pagesCreated++; + + for (int j = 1; archivedWindow.FindString("tab", j, &url) == B_OK; + j++) { + printf("Create %d:%d\n", i, j); + _CreateNewTab(window, url, false); + pagesCreated++; + } } } } + // If previous session did not contain any window, create a new empty one. if (pagesCreated == 0) _CreateNewWindow("", fullscreen);