hrev46672 adds 1 changeset to branch 'master' old head: d21e9097b6c992cb761b337b38486627226dee24 new head: dd71f181755e323ef18a99b664d116d1d91e1891 overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=dd71f18+%5Ed21e909 ---------------------------------------------------------------------------- dd71f18: Open bookmarks in the current window * Instead of looking for the first window in the workspace, add the current one to the message. * Fixes #6623. [ Adrien Destugues <pulkomandy@xxxxxxxxxxxxx> ] ---------------------------------------------------------------------------- Revision: hrev46672 Commit: dd71f181755e323ef18a99b664d116d1d91e1891 URL: http://cgit.haiku-os.org/haiku/commit/?id=dd71f18 Author: Adrien Destugues <pulkomandy@xxxxxxxxxxxxx> Date: Tue Jan 14 09:31:41 2014 UTC Ticket: https://dev.haiku-os.org/ticket/6623 ---------------------------------------------------------------------------- 3 files changed, 25 insertions(+), 4 deletions(-) src/apps/webpositive/BrowserApp.cpp | 27 +++++++++++++++++++++++---- src/apps/webpositive/BrowserApp.h | 1 + src/apps/webpositive/BrowserWindow.cpp | 1 + ---------------------------------------------------------------------------- diff --git a/src/apps/webpositive/BrowserApp.cpp b/src/apps/webpositive/BrowserApp.cpp index d2a7bf3..384ab76 100644 --- a/src/apps/webpositive/BrowserApp.cpp +++ b/src/apps/webpositive/BrowserApp.cpp @@ -356,6 +356,10 @@ BrowserApp::_RefsReceived(BMessage* message, int32* _pagesCreated, { int32 pagesCreated = 0; + BrowserWindow* window = NULL; + if (message->FindPointer("window", (void**)&window) != B_OK) + window = NULL; + bool fullscreen; if (message->FindBool("fullscreen", &fullscreen) != B_OK) fullscreen = false; @@ -370,13 +374,13 @@ BrowserApp::_RefsReceived(BMessage* message, int32* _pagesCreated, continue; BString url; url << path.Path(); - _CreateNewPage(url, fullscreen); + _CreateNewPage(url, window, fullscreen); pagesCreated++; } BString url; for (int32 i = 0; message->FindString("url", i, &url) == B_OK; i++) { - _CreateNewPage(url, fullscreen); + _CreateNewPage(url, window, fullscreen); pagesCreated++; } @@ -388,13 +392,28 @@ BrowserApp::_RefsReceived(BMessage* message, int32* _pagesCreated, void -BrowserApp::_CreateNewPage(const BString& url, bool fullscreen) +BrowserApp::_CreateNewPage(const BString& url, BrowserWindow* webWindow, + bool fullscreen) { + // Let's first see if we must target a specific window + if (webWindow && webWindow->Lock()) { + if (webWindow->IsBlankTab()) { + if (url.Length() != 0) + webWindow->CurrentWebView()->LoadURL(url); + } else + webWindow->CreateNewTab(url, true); + webWindow->Activate(); + webWindow->CurrentWebView()->MakeFocus(true); + webWindow->Unlock(); + return; + } + + // In other cases, try to find a suitable one uint32 workspace = 1 << current_workspace(); bool loadedInWindowOnCurrentWorkspace = false; for (int i = 0; BWindow* window = WindowAt(i); i++) { - BrowserWindow* webWindow = dynamic_cast<BrowserWindow*>(window); + webWindow = dynamic_cast<BrowserWindow*>(window); if (!webWindow) continue; if (webWindow->Lock()) { diff --git a/src/apps/webpositive/BrowserApp.h b/src/apps/webpositive/BrowserApp.h index 062e6f0..96b3aef 100644 --- a/src/apps/webpositive/BrowserApp.h +++ b/src/apps/webpositive/BrowserApp.h @@ -59,6 +59,7 @@ private: int32* pagesCreated = NULL, bool* fullscreen = NULL); void _CreateNewPage(const BString& url, + BrowserWindow* window = NULL, bool fullscreen = false); void _CreateNewWindow(const BString& url, bool fullscreen = false); diff --git a/src/apps/webpositive/BrowserWindow.cpp b/src/apps/webpositive/BrowserWindow.cpp index 1775967..3bee1aa 100644 --- a/src/apps/webpositive/BrowserWindow.cpp +++ b/src/apps/webpositive/BrowserWindow.cpp @@ -841,6 +841,7 @@ BrowserWindow::MessageReceived(BMessage* message) if (alert->Go() == 0) break; } + message->AddPointer("window", this); be_app->PostMessage(message); break; }