* 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:
committed by
Alexandre Deckner
parent
f41f967668
commit
ea8b6f3fd1
@@ -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)
|
||||||
{
|
{
|
||||||
@@ -1122,7 +1123,7 @@ void
|
|||||||
BrowserWindow::_UpdateTabGroupVisibility()
|
BrowserWindow::_UpdateTabGroupVisibility()
|
||||||
{
|
{
|
||||||
if (Lock()) {
|
if (Lock()) {
|
||||||
//fTabGroup->SetVisible(fTabManager->CountTabs() > 1);
|
// fTabGroup->SetVisible(fTabManager->CountTabs() > 1);
|
||||||
fTabManager->SetCloseButtonsAvailable(fTabManager->CountTabs() > 1);
|
fTabManager->SetCloseButtonsAvailable(fTabManager->CountTabs() > 1);
|
||||||
Unlock();
|
Unlock();
|
||||||
}
|
}
|
||||||
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user