From 88e373028cbb4d49b0098b89e1c26e1a92966e9b Mon Sep 17 00:00:00 2001 From: stippi Date: Sun, 14 Mar 2010 10:27:39 +0000 Subject: [PATCH] * Made BWebPage download related methods and listener member static. * Introduced BWebPage::RequestDownload() public API (expected to run synchronous). * Added necessary wiring for "Download this link" in context menus. * Restarting downloads works in principle, although with some quirks. (Sometimes it appears the "Desktop" is being downloaded...) git-svn-id: http://svn.haiku-os.org/webpositive/webkit/trunk@310 94f232f2-1747-11df-bad5-a5bfde151594 --- src/apps/webpositive/BrowserApp.cpp | 10 +++++----- src/apps/webpositive/BrowserWindow.cpp | 13 +++++-------- src/apps/webpositive/BrowserWindow.h | 2 -- src/apps/webpositive/DownloadWindow.cpp | 2 +- 4 files changed, 11 insertions(+), 16 deletions(-) diff --git a/src/apps/webpositive/BrowserApp.cpp b/src/apps/webpositive/BrowserApp.cpp index 29fe7b6ccd..e4b4c10d15 100644 --- a/src/apps/webpositive/BrowserApp.cpp +++ b/src/apps/webpositive/BrowserApp.cpp @@ -124,7 +124,7 @@ BrowserApp::ReadyToRun() BWebSettings::SetPersistentStoragePath(path.Path()); } - + BString mainSettingsPath(kApplicationName); mainSettingsPath << "/Application"; fSettings = new SettingsMessage(B_USER_SETTINGS_DIRECTORY, @@ -148,6 +148,8 @@ BrowserApp::ReadyToRun() fDownloadWindow = new DownloadWindow(downloadWindowFrame, showDownloads); fSettingsWindow = new SettingsWindow(settingsWindowFrame, fSettings); + BWebPage::SetDownloadListener(BMessenger(fDownloadWindow)); + fInitialized = true; if (fLaunchRefsMessage) { @@ -155,8 +157,7 @@ BrowserApp::ReadyToRun() delete fLaunchRefsMessage; fLaunchRefsMessage = 0; } else { - BrowserWindow* window = new BrowserWindow(fLastWindowFrame, - BMessenger(fDownloadWindow)); + BrowserWindow* window = new BrowserWindow(fLastWindowFrame); window->Show(); } PostMessage(PRELOAD_BROWSING_HISTORY); @@ -313,8 +314,7 @@ BrowserApp::_CreateNewWindow(const BString& url) if (!BScreen().Frame().Contains(fLastWindowFrame)) fLastWindowFrame.OffsetTo(50, 50); - BrowserWindow* window = new BrowserWindow(fLastWindowFrame, - BMessenger(fDownloadWindow)); + BrowserWindow* window = new BrowserWindow(fLastWindowFrame); window->Show(); if (url.Length()) window->CurrentWebView()->LoadURL(url.String()); diff --git a/src/apps/webpositive/BrowserWindow.cpp b/src/apps/webpositive/BrowserWindow.cpp index 4b0ef6b758..6f09e9bc74 100644 --- a/src/apps/webpositive/BrowserWindow.cpp +++ b/src/apps/webpositive/BrowserWindow.cpp @@ -195,13 +195,11 @@ private: // #pragma mark - BrowserWindow -BrowserWindow::BrowserWindow(BRect frame, const BMessenger& downloadListener, - ToolbarPolicy toolbarPolicy) +BrowserWindow::BrowserWindow(BRect frame, ToolbarPolicy toolbarPolicy) : BWebWindow(frame, kApplicationName, B_DOCUMENT_WINDOW_LOOK, B_NORMAL_WINDOW_FEEL, - B_AUTO_UPDATE_SIZE_LIMITS | B_ASYNCHRONOUS_CONTROLS), - fDownloadListener(downloadListener) + B_AUTO_UPDATE_SIZE_LIMITS | B_ASYNCHRONOUS_CONTROLS) { BMessage* newTabMessage = new BMessage(NEW_TAB); newTabMessage->AddString("url", ""); @@ -373,7 +371,7 @@ BrowserWindow::BrowserWindow(BRect frame, const BMessenger& downloadListener, snprintf(numStr, sizeof(numStr), "%d", (int) i); AddShortcut(numStr[0], B_COMMAND_KEY, selectTab); } - + be_app->PostMessage(WINDOW_OPENED); } @@ -538,7 +536,7 @@ BrowserWindow::MessageReceived(BMessage* message) && fTabManager->CountTabs() > index) { fTabManager->SelectTab(index); } - + break; } @@ -629,7 +627,6 @@ BrowserWindow::CreateNewTab(const BString& url, bool select, BWebView* webView) // Executed in app thread (new BWebPage needs to be created in app thread). if (!webView) webView = new BWebView("web view"); - webView->WebPage()->SetDownloadListener(fDownloadListener); fTabManager->AddTab(webView, "New tab"); @@ -675,7 +672,7 @@ BrowserWindow::NewWindowRequested(const BString& url, bool primaryAction) } -void +void BrowserWindow::NewPageCreated(BWebView* view) { CreateNewTab(BString(), true, view); diff --git a/src/apps/webpositive/BrowserWindow.h b/src/apps/webpositive/BrowserWindow.h index e52048f128..0b2c4788ea 100644 --- a/src/apps/webpositive/BrowserWindow.h +++ b/src/apps/webpositive/BrowserWindow.h @@ -66,7 +66,6 @@ enum { class BrowserWindow : public BWebWindow { public: BrowserWindow(BRect frame, - const BMessenger& downloadListener, ToolbarPolicy = HaveToolbar); virtual ~BrowserWindow(); @@ -121,7 +120,6 @@ private: void _ShutdownTab(int32 index); private: - BMessenger fDownloadListener; BMenu* fGoMenu; IconButton* fBackButton; IconButton* fForwardButton; diff --git a/src/apps/webpositive/DownloadWindow.cpp b/src/apps/webpositive/DownloadWindow.cpp index 44e5fa936e..60d9701e9b 100644 --- a/src/apps/webpositive/DownloadWindow.cpp +++ b/src/apps/webpositive/DownloadWindow.cpp @@ -257,7 +257,7 @@ public: break; } case RESTART_DOWNLOAD: - // TODO: + BWebPage::RequestDownload(m_url); break; case CANCEL_DOWNLOAD: