Author: stippi Date: Tue Apr 13 23:15:23 2010 New Revision: 414 URL: http://mmlr.dyndns.org/changeset/414 Log: * Add a flag "activate" to WindowFeatures and set it to true by default. It's supposed to allow specifying whether the new window/page shall be activated or not. * In ContextMenuController, when creating a new page from a link, specify that it shall not be activated. * Handle the new flag in the WebKit layer. -> "Open link in tab" from the context menu no longer selects the new tab, but opens it "in the background". Modified: webkit/trunk/WebCore/page/ContextMenuController.cpp webkit/trunk/WebCore/page/WindowFeatures.h webkit/trunk/WebKit/haiku/API/WebPage.cpp webkit/trunk/WebKit/haiku/API/WebPage.h webkit/trunk/WebKit/haiku/API/WebWindow.cpp webkit/trunk/WebKit/haiku/API/WebWindow.h webkit/trunk/WebKit/haiku/WebCoreSupport/ChromeClientHaiku.cpp webkit/trunk/WebKit/haiku/WebPositive/BrowserWindow.cpp webkit/trunk/WebKit/haiku/WebPositive/BrowserWindow.h Modified: webkit/trunk/WebCore/page/ContextMenuController.cpp ============================================================================== --- webkit/trunk/WebCore/page/ContextMenuController.cpp Tue Apr 13 23:12:29 2010 (r413) +++ webkit/trunk/WebCore/page/ContextMenuController.cpp Tue Apr 13 23:15:23 2010 (r414) @@ -138,6 +138,7 @@ { if (Page* oldPage = frame->page()) { WindowFeatures features; + features.activate = false; if (Page* newPage = oldPage->chrome()->createWindow(frame, FrameLoadRequest(ResourceRequest(urlToLoad, frame->loader()->outgoingReferrer())), features)) newPage->chrome()->show(); } Modified: webkit/trunk/WebCore/page/WindowFeatures.h ============================================================================== --- webkit/trunk/WebCore/page/WindowFeatures.h Tue Apr 13 23:12:29 2010 (r413) +++ webkit/trunk/WebCore/page/WindowFeatures.h Tue Apr 13 23:15:23 2010 (r414) @@ -48,6 +48,7 @@ , resizable(true) , fullscreen(false) , dialog(false) + , activate(true) { } @@ -76,6 +77,7 @@ bool fullscreen; bool dialog; + bool activate; }; } // namespace WebCore Modified: webkit/trunk/WebKit/haiku/API/WebPage.cpp ============================================================================== --- webkit/trunk/WebKit/haiku/API/WebPage.cpp Tue Apr 13 23:12:29 2010 (r413) +++ webkit/trunk/WebKit/haiku/API/WebPage.cpp Tue Apr 13 23:15:23 2010 (r414) @@ -465,7 +465,8 @@ return fPage; } -WebCore::Page* BWebPage::createNewPage(BRect frame, bool modalDialog, bool resizable) +WebCore::Page* BWebPage::createNewPage(BRect frame, bool modalDialog, + bool resizable, bool activate) { // Creating the BWebView in the application thread is exactly what we need anyway. BWebView* view = new BWebView("web view"); @@ -475,10 +476,9 @@ message.AddPointer("view", view); if (frame.IsValid()) message.AddRect("frame", frame); - if (modalDialog) - message.AddBool("modal", modalDialog); - if (!resizable) - message.AddBool("resizable", resizable); + message.AddBool("modal", modalDialog); + message.AddBool("resizable", resizable); + message.AddBool("activate", activate); // Block until some window has embedded this view. BMessage reply; Modified: webkit/trunk/WebKit/haiku/API/WebPage.h ============================================================================== --- webkit/trunk/WebKit/haiku/API/WebPage.h Tue Apr 13 23:12:29 2010 (r413) +++ webkit/trunk/WebKit/haiku/API/WebPage.h Tue Apr 13 23:15:23 2010 (r414) @@ -147,7 +147,8 @@ WebCore::Page* page() const; WebCore::Page* createNewPage(BRect frame = BRect(), - bool modalDialog = false, bool resizable = true); + bool modalDialog = false, bool resizable = true, + bool activate = true); BRect windowFrame(); BRect windowBounds(); Modified: webkit/trunk/WebKit/haiku/API/WebWindow.cpp ============================================================================== --- webkit/trunk/WebKit/haiku/API/WebWindow.cpp Tue Apr 13 23:12:29 2010 (r413) +++ webkit/trunk/WebKit/haiku/API/WebWindow.cpp Tue Apr 13 23:15:23 2010 (r414) @@ -126,8 +126,11 @@ bool resizable; if (message->FindBool("resizable", &resizable) != B_OK) resizable = true; + bool activate; + if (message->FindBool("activate", &activate) != B_OK) + activate = true; - NewPageCreated(view, windowFrame, modalDialog, resizable); + NewPageCreated(view, windowFrame, modalDialog, resizable, activate); break; } case CLOSE_WINDOW_REQUESTED: @@ -303,7 +306,7 @@ } void BWebWindow::NewPageCreated(BWebView* view, BRect windowFrame, - bool modalDialog, bool resizable) + bool modalDialog, bool resizable, bool activate) { if (!windowFrame.IsValid()) windowFrame = Frame().OffsetByCopy(10, 10); Modified: webkit/trunk/WebKit/haiku/API/WebWindow.h ============================================================================== --- webkit/trunk/WebKit/haiku/API/WebWindow.h Tue Apr 13 23:12:29 2010 (r413) +++ webkit/trunk/WebKit/haiku/API/WebWindow.h Tue Apr 13 23:15:23 2010 (r414) @@ -60,7 +60,7 @@ virtual void CloseWindowRequested(BWebView* view); virtual void NewPageCreated(BWebView* view, BRect windowFrame, bool modalDialog, - bool resizable); + bool resizable, bool activate); virtual void LoadNegotiating(const BString& url, BWebView* view); virtual void LoadCommitted(const BString& url, Modified: webkit/trunk/WebKit/haiku/WebCoreSupport/ChromeClientHaiku.cpp ============================================================================== --- webkit/trunk/WebKit/haiku/WebCoreSupport/ChromeClientHaiku.cpp Tue Apr 13 23:12:29 2010 (r413) +++ webkit/trunk/WebKit/haiku/WebCoreSupport/ChromeClientHaiku.cpp Tue Apr 13 23:15:23 2010 (r414) @@ -157,7 +157,8 @@ //printf(" frame: "); windowFrame.PrintToStream(); - WebCore::Page* page = m_webPage->createNewPage(windowFrame, features.dialog, features.resizable); + WebCore::Page* page = m_webPage->createNewPage(windowFrame, features.dialog, features.resizable, + features.activate); if (!page) return 0; Modified: webkit/trunk/WebKit/haiku/WebPositive/BrowserWindow.cpp ============================================================================== --- webkit/trunk/WebKit/haiku/WebPositive/BrowserWindow.cpp Tue Apr 13 23:12:29 2010 (r413) +++ webkit/trunk/WebKit/haiku/WebPositive/BrowserWindow.cpp Tue Apr 13 23:15:23 2010 (r414) @@ -810,14 +810,14 @@ void BrowserWindow::NewPageCreated(BWebView* view, BRect windowFrame, - bool modalDialog, bool resizable) + bool modalDialog, bool resizable, bool activate) { if (windowFrame.IsValid()) { BrowserWindow* window = new BrowserWindow(windowFrame, fAppSettings, DoNotHaveToolbar, view); window->Show(); } else - CreateNewTab(BString(), true, view); + CreateNewTab(BString(), activate, view); } Modified: webkit/trunk/WebKit/haiku/WebPositive/BrowserWindow.h ============================================================================== --- webkit/trunk/WebKit/haiku/WebPositive/BrowserWindow.h Tue Apr 13 23:12:29 2010 (r413) +++ webkit/trunk/WebKit/haiku/WebPositive/BrowserWindow.h Tue Apr 13 23:15:23 2010 (r414) @@ -94,7 +94,7 @@ virtual void CloseWindowRequested(BWebView* view); virtual void NewPageCreated(BWebView* view, BRect windowFrame, bool modalDialog, - bool resizable); + bool resizable, bool activate); virtual void LoadNegotiating(const BString& url, BWebView* view); virtual void LoadCommitted(const BString& url,