mirror of
https://github.com/netsurf-browser/netsurf
synced 2025-03-30 10:53:00 +03:00
- fix for copying selection to clipboard
- fix some leaks - prepare for about box (use about html from rsrc: but it's broken yet) - if more than 1 refs received at the same time, open the extra ones in a new window. svn path=/trunk/netsurf/; revision=5511
This commit is contained in:
parent
ea205ecf23
commit
8710d3a814
@ -173,6 +173,13 @@ void
|
||||
NSBrowserApplication::ArgvReceived(int32 argc, char **argv)
|
||||
{
|
||||
CALLED();
|
||||
NSBrowserWindow *win = nsbeos_find_last_window();
|
||||
if (!win) {
|
||||
return;
|
||||
}
|
||||
win->Unlock();
|
||||
BMessage *message = DetachCurrentMessage();
|
||||
nsbeos_pipe_message_top(message, win, win->Scaffolding());
|
||||
}
|
||||
|
||||
|
||||
@ -191,6 +198,13 @@ NSBrowserApplication::RefsReceived(BMessage *message)
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
NSBrowserApplication::AboutRequested()
|
||||
{
|
||||
nsbeos_pipe_message(new BMessage(B_ABOUT_REQUESTED), NULL, NULL);
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
NSBrowserApplication::QuitRequested()
|
||||
{
|
||||
|
@ -40,6 +40,7 @@ virtual void MessageReceived(BMessage *message);
|
||||
virtual void RefsReceived(BMessage *message);
|
||||
virtual void ArgvReceived(int32 argc, char **argv);
|
||||
|
||||
virtual void AboutRequested();
|
||||
virtual bool QuitRequested();
|
||||
};
|
||||
|
||||
|
@ -35,7 +35,8 @@ resource(202, "adblock.css") #'data' import "res/adblock.css";
|
||||
resource(203, "ca-bundle.txt") #'data' import "res/ca-bundle.txt";
|
||||
resource(204, "messages") #'data' import "res/messages";
|
||||
resource(205, "Aliases") #'data' import "res/Aliases";
|
||||
/* resource(206, "netsurf.xpm") #'data' import "res/netsurf.xpm"; */
|
||||
/* resource(206, "about.en.html") #'data' import "res/about.en.html"; */
|
||||
/* resource(210, "netsurf.xpm") #'data' import "res/netsurf.xpm"; */
|
||||
|
||||
/* throbber */
|
||||
resource(400, "throbber0.png") #'data' import "res/throbber/throbber0.png";
|
||||
|
@ -327,6 +327,7 @@ void
|
||||
NSBrowserWindow::MessageReceived(BMessage *message)
|
||||
{
|
||||
switch (message->what) {
|
||||
case B_ARGV_RECEIVED:
|
||||
case B_REFS_RECEIVED:
|
||||
DetachCurrentMessage();
|
||||
nsbeos_pipe_message_top(message, this, fScaffolding);
|
||||
@ -393,41 +394,53 @@ void nsbeos_scaffolding_dispatch_event(nsbeos_scaffolding *scaffold, BMessage *m
|
||||
}
|
||||
case B_REFS_RECEIVED:
|
||||
{
|
||||
int32 i;
|
||||
entry_ref ref;
|
||||
|
||||
if (message->FindRef("refs", &ref) < B_OK)
|
||||
break;
|
||||
for (i = 0; message->FindRef("refs", i, &ref) >= B_OK; i++) {
|
||||
BString url("file://");
|
||||
BPath path(&ref);
|
||||
if (path.InitCheck() < B_OK)
|
||||
break;
|
||||
|
||||
BString url("file://");
|
||||
BPath path(&ref);
|
||||
if (path.InitCheck() < B_OK)
|
||||
break;
|
||||
BNode node(path.Path());
|
||||
if (node.InitCheck() < B_OK)
|
||||
break;
|
||||
if (node.IsSymLink()) {
|
||||
// dereference the symlink
|
||||
BEntry entry(path.Path(), true);
|
||||
if (entry.InitCheck() < B_OK)
|
||||
break;
|
||||
if (entry.GetPath(&path) < B_OK)
|
||||
break;
|
||||
if (node.SetTo(path.Path()) < B_OK)
|
||||
break;
|
||||
}
|
||||
|
||||
BNode node(path.Path());
|
||||
if (node.InitCheck() < B_OK)
|
||||
break;
|
||||
if (node.IsSymLink()) {
|
||||
// dereference the symlink
|
||||
BEntry entry(path.Path(), true);
|
||||
if (entry.InitCheck() < B_OK)
|
||||
break;
|
||||
if (entry.GetPath(&path) < B_OK)
|
||||
break;
|
||||
if (node.SetTo(path.Path()) < B_OK)
|
||||
break;
|
||||
attr_info ai;
|
||||
if (node.GetAttrInfo("META:url", &ai) >= B_OK) {
|
||||
char data[(size_t)ai.size + 1];
|
||||
memset(data, 0, (size_t)ai.size + 1);
|
||||
if (node.ReadAttr("META:url", B_STRING_TYPE, 0LL, data, (size_t)ai.size) < 4)
|
||||
break;
|
||||
url = data;
|
||||
} else
|
||||
url << path.Path();
|
||||
|
||||
if (/*message->WasDropped() &&*/ i == 0)
|
||||
browser_window_go(bw, url.String(), 0, true);
|
||||
else
|
||||
browser_window_create(url.String(), bw, NULL, false, false);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case B_ARGV_RECEIVED:
|
||||
{
|
||||
int32 i;
|
||||
BString url;
|
||||
for (i = 1; message->FindString("argv", i, &url) >= B_OK; i++) {
|
||||
browser_window_create(url.String(), bw, NULL, false, false);
|
||||
}
|
||||
|
||||
attr_info ai;
|
||||
if (node.GetAttrInfo("META:url", &ai) >= B_OK) {
|
||||
char data[(size_t)ai.size + 1];
|
||||
memset(data, 0, (size_t)ai.size + 1);
|
||||
if (node.ReadAttr("META:url", B_STRING_TYPE, 0LL, data, (size_t)ai.size) < 4)
|
||||
break;
|
||||
url = data;
|
||||
} else
|
||||
url << path.Path();
|
||||
|
||||
browser_window_go(bw, url.String(), 0, true);
|
||||
break;
|
||||
}
|
||||
case B_COPY:
|
||||
|
@ -140,6 +140,7 @@ NSBrowserFrameView::MessageReceived(BMessage *message)
|
||||
{
|
||||
switch (message->what) {
|
||||
case B_SIMPLE_DATA:
|
||||
case B_ARGV_RECEIVED:
|
||||
case B_REFS_RECEIVED:
|
||||
case B_COPY:
|
||||
case B_CUT:
|
||||
@ -650,10 +651,12 @@ void nsbeos_dispatch_event(BMessage *message)
|
||||
|
||||
if (gui && gui != z) {
|
||||
LOG(("discarding event for destroyed gui_window"));
|
||||
delete message;
|
||||
return;
|
||||
}
|
||||
if (scaffold && (!y || scaffold != y->scaffold)) {
|
||||
LOG(("discarding event for destroyed scaffolding"));
|
||||
delete message;
|
||||
return;
|
||||
}
|
||||
|
||||
@ -671,6 +674,16 @@ void nsbeos_dispatch_event(BMessage *message)
|
||||
// from the BApplication
|
||||
netsurf_quit = true;
|
||||
break;
|
||||
case B_ABOUT_REQUESTED:
|
||||
{
|
||||
//BAlert *alert;
|
||||
//XXX: i18n-ize
|
||||
/* XXX: doesn't work yet! bug in rsrc:/
|
||||
BString url("rsrc:/about.en.html,text/html");
|
||||
browser_window_create(url.String(), NULL, NULL, true, false);
|
||||
*/
|
||||
break;
|
||||
}
|
||||
case _UPDATE_:
|
||||
if (gui && view)
|
||||
nsbeos_window_expose_event(view, gui, message);
|
||||
@ -1765,7 +1778,9 @@ bool gui_empty_clipboard(void)
|
||||
|
||||
bool gui_add_to_clipboard(const char *text, size_t length, bool space)
|
||||
{
|
||||
current_selection << text;
|
||||
BString s;
|
||||
s.SetTo(text, length);
|
||||
current_selection << s;
|
||||
if (space)
|
||||
current_selection << " ";
|
||||
return true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user