* Revised the application startup to check how many windows have been created at
all. Open a blank page if no pages have been created from the arguments passed to the application. * If no pages have been created yet, don't offset the last known window frame. This fixes windows shifting over the screen from session to session. git-svn-id: http://svn.haiku-os.org/webpositive/webkit/trunk@397 94f232f2-1747-11df-bad5-a5bfde151594
This commit is contained in:
parent
c373752f78
commit
845ec8e102
@ -162,11 +162,13 @@ BrowserApp::ReadyToRun()
|
|||||||
|
|
||||||
fInitialized = true;
|
fInitialized = true;
|
||||||
|
|
||||||
|
int32 pagesCreated = 0;
|
||||||
if (fLaunchRefsMessage) {
|
if (fLaunchRefsMessage) {
|
||||||
RefsReceived(fLaunchRefsMessage);
|
_RefsReceived(fLaunchRefsMessage, &pagesCreated);
|
||||||
delete fLaunchRefsMessage;
|
delete fLaunchRefsMessage;
|
||||||
fLaunchRefsMessage = 0;
|
fLaunchRefsMessage = 0;
|
||||||
} else {
|
}
|
||||||
|
if (pagesCreated == 0) {
|
||||||
BrowserWindow* window = new BrowserWindow(fLastWindowFrame, fSettings);
|
BrowserWindow* window = new BrowserWindow(fLastWindowFrame, fSettings);
|
||||||
window->Show();
|
window->Show();
|
||||||
}
|
}
|
||||||
@ -236,22 +238,7 @@ BrowserApp::RefsReceived(BMessage* message)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
entry_ref ref;
|
_RefsReceived(message);
|
||||||
for (int32 i = 0; message->FindRef("refs", i, &ref) == B_OK; i++) {
|
|
||||||
BEntry entry(&ref, true);
|
|
||||||
if (!entry.Exists())
|
|
||||||
continue;
|
|
||||||
BPath path;
|
|
||||||
if (entry.GetPath(&path) != B_OK)
|
|
||||||
continue;
|
|
||||||
BString url;
|
|
||||||
url << path.Path();
|
|
||||||
_CreateNewPage(url);
|
|
||||||
}
|
|
||||||
|
|
||||||
BString url;
|
|
||||||
for (int32 i = 0; message->FindString("url", i, &url) == B_OK; i++)
|
|
||||||
_CreateNewPage(url);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -295,6 +282,36 @@ BrowserApp::QuitRequested()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
BrowserApp::_RefsReceived(BMessage* message, int32* _pagesCreated)
|
||||||
|
{
|
||||||
|
int32 pagesCreated = 0;
|
||||||
|
|
||||||
|
entry_ref ref;
|
||||||
|
for (int32 i = 0; message->FindRef("refs", i, &ref) == B_OK; i++) {
|
||||||
|
BEntry entry(&ref, true);
|
||||||
|
if (!entry.Exists())
|
||||||
|
continue;
|
||||||
|
BPath path;
|
||||||
|
if (entry.GetPath(&path) != B_OK)
|
||||||
|
continue;
|
||||||
|
BString url;
|
||||||
|
url << path.Path();
|
||||||
|
_CreateNewPage(url);
|
||||||
|
pagesCreated++;
|
||||||
|
}
|
||||||
|
|
||||||
|
BString url;
|
||||||
|
for (int32 i = 0; message->FindString("url", i, &url) == B_OK; i++) {
|
||||||
|
_CreateNewPage(url);
|
||||||
|
pagesCreated++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_pagesCreated != NULL)
|
||||||
|
*_pagesCreated = pagesCreated;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
BrowserApp::_CreateNewPage(const BString& url)
|
BrowserApp::_CreateNewPage(const BString& url)
|
||||||
{
|
{
|
||||||
@ -323,7 +340,10 @@ BrowserApp::_CreateNewPage(const BString& url)
|
|||||||
void
|
void
|
||||||
BrowserApp::_CreateNewWindow(const BString& url)
|
BrowserApp::_CreateNewWindow(const BString& url)
|
||||||
{
|
{
|
||||||
fLastWindowFrame.OffsetBy(20, 20);
|
// Offset the window frame unless this is the first window created in the
|
||||||
|
// session.
|
||||||
|
if (fWindowCount > 0)
|
||||||
|
fLastWindowFrame.OffsetBy(20, 20);
|
||||||
if (!BScreen().Frame().Contains(fLastWindowFrame))
|
if (!BScreen().Frame().Contains(fLastWindowFrame))
|
||||||
fLastWindowFrame.OffsetTo(50, 50);
|
fLastWindowFrame.OffsetTo(50, 50);
|
||||||
|
|
||||||
|
@ -53,6 +53,8 @@ public:
|
|||||||
virtual bool QuitRequested();
|
virtual bool QuitRequested();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void _RefsReceived(BMessage* message,
|
||||||
|
int32* pagesCreated = NULL);
|
||||||
void _CreateNewPage(const BString& url);
|
void _CreateNewPage(const BString& url);
|
||||||
void _CreateNewWindow(const BString& url);
|
void _CreateNewWindow(const BString& url);
|
||||||
void _CreateNewTab(BrowserWindow* window,
|
void _CreateNewTab(BrowserWindow* window,
|
||||||
|
Loading…
Reference in New Issue
Block a user