* Reworked closing a page programatically. BWebPage no longer sends a plain

B_QUIT_REQUESTED, instead BWebWindow has a new hook and derived classes can
  implement it.
* Some refactoring in BrowserWindow to move code from MessageReceived into
  separate methods for easier debugging and cleaner code.

git-svn-id: http://svn.haiku-os.org/webpositive/webkit/trunk@378 94f232f2-1747-11df-bad5-a5bfde151594
This commit is contained in:
stippi
2012-07-03 15:38:51 +02:00
committed by Alexandre Deckner
parent f41f967668
commit ea8b6f3fd1
2 changed files with 38 additions and 15 deletions
+35 -14
View File
@@ -650,20 +650,7 @@ printf(" file ok\n");
int32 index; int32 index;
if (message->FindInt32("tab index", &index) != B_OK) if (message->FindInt32("tab index", &index) != B_OK)
index = -1; index = -1;
BWebView* webView = dynamic_cast<BWebView*>(fTabManager->ViewForTab(index)); _TabChanged(index);
if (webView == CurrentWebView())
break;
SetCurrentWebView(webView);
if (webView)
_UpdateTitle(webView->MainFrameTitle());
else
_UpdateTitle("");
if (webView) {
fURLTextControl->SetText(webView->MainFrameURL());
// Trigger update of the interface to the new page, by requesting
// to resend all notifications.
webView->WebPage()->ResendNotifications();
}
break; break;
} }
@@ -876,6 +863,20 @@ BrowserWindow::NewPageCreated(BWebView* view)
} }
void
BrowserWindow::CloseWindowRequested(BWebView* view)
{
int32 index = fTabManager->TabForView(view);
if (index < 0) {
// Tab is already gone.
return;
}
BMessage message(CLOSE_TAB);
message.AddInt32("tab index", index);
PostMessage(&message, this);
}
void void
BrowserWindow::LoadNegotiating(const BString& url, BWebView* view) BrowserWindow::LoadNegotiating(const BString& url, BWebView* view)
{ {
@@ -1141,6 +1142,26 @@ BrowserWindow::_ShutdownTab(int32 index)
} }
void
BrowserWindow::_TabChanged(int32 index)
{
BWebView* webView = dynamic_cast<BWebView*>(fTabManager->ViewForTab(index));
if (webView == CurrentWebView())
return;
SetCurrentWebView(webView);
if (webView)
_UpdateTitle(webView->MainFrameTitle());
else
_UpdateTitle("");
if (webView) {
fURLTextControl->SetText(webView->MainFrameURL());
// Trigger update of the interface to the new page, by requesting
// to resend all notifications.
webView->WebPage()->ResendNotifications();
}
}
status_t status_t
BrowserWindow::_BookmarkPath(BPath& path) const BrowserWindow::_BookmarkPath(BPath& path) const
{ {
+2
View File
@@ -87,6 +87,7 @@ private:
BWebView* view); BWebView* view);
virtual void NewWindowRequested(const BString& url, virtual void NewWindowRequested(const BString& url,
bool primaryAction); bool primaryAction);
virtual void CloseWindowRequested(BWebView* view);
virtual void NewPageCreated(BWebView* view); virtual void NewPageCreated(BWebView* view);
virtual void LoadNegotiating(const BString& url, virtual void LoadNegotiating(const BString& url,
BWebView* view); BWebView* view);
@@ -121,6 +122,7 @@ private:
void _UpdateTitle(const BString &title); void _UpdateTitle(const BString &title);
void _UpdateTabGroupVisibility(); void _UpdateTabGroupVisibility();
void _ShutdownTab(int32 index); void _ShutdownTab(int32 index);
void _TabChanged(int32 index);
status_t _BookmarkPath(BPath& path) const; status_t _BookmarkPath(BPath& path) const;
void _CreateBookmark(); void _CreateBookmark();