[haiku-commits] haiku: hrev46672 - src/apps/webpositive

  • From: pulkomandy@xxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 14 Jan 2014 10:31:52 +0100 (CET)

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;
                }


Other related posts:

  • » [haiku-commits] haiku: hrev46672 - src/apps/webpositive - pulkomandy