diff --git a/www-client/netsurf/patches/netsurf-2.HEAD.patch b/www-client/netsurf/patches/netsurf-2.HEAD.patch index 2ad77a4ea..0493278ef 100644 --- a/www-client/netsurf/patches/netsurf-2.HEAD.patch +++ b/www-client/netsurf/patches/netsurf-2.HEAD.patch @@ -1,3 +1,16 @@ +diff --git a/Makefile b/Makefile +index c80378c..428aa74 100644 +--- a/Makefile ++++ b/Makefile +@@ -453,7 +453,7 @@ ifeq ($(TARGET),beos) + $(Q)$(BEOS_SETVER) $(EXETARGET) \ + -app $(VERSION_MAJ) $(VERSION_MIN) 0 d 0 \ + -short "NetSurf $(VERSION_FULL)" \ +- -long "NetSurf $(VERSION_FULL) © 2003 - 2008 The NetSurf Developers" ++ -long "NetSurf $(VERSION_FULL) © 2003 - 2012 The NetSurf Developers" + $(VQ)echo " MIMESET: $(EXETARGET)" + $(Q)$(BEOS_MIMESET) $(EXETARGET) + endif diff --git a/beos/Makefile.target b/beos/Makefile.target index b1d1eaa..461ecbc 100644 --- a/beos/Makefile.target @@ -44,6 +57,33 @@ index b1d1eaa..461ecbc 100644 # ---------------------------------------------------------------------------- # Package target +diff --git a/beos/fetch_rsrc.cpp b/beos/fetch_rsrc.cpp +index 79dea4e..563f431 100644 +--- a/beos/fetch_rsrc.cpp ++++ b/beos/fetch_rsrc.cpp +@@ -48,6 +48,7 @@ extern "C" { + + #include + #include ++#include + + struct fetch_rsrc_context { + struct fetch *parent_fetch; +@@ -209,8 +210,13 @@ static bool fetch_rsrc_process(struct fetch_rsrc_context *c) + else + found = gAppResources->HasResource(type, c->name); + if (!found) { ++ BString error("Cannot locate resource: "); ++ if (id) ++ error << id; ++ else ++ error << c->name; + msg.type = FETCH_ERROR; +- msg.data.error = "Cannot locate rsrc: URL"; ++ msg.data.error = error.String(); + fetch_rsrc_send_callback(&msg, c); + return false; + } diff --git a/beos/gui.cpp b/beos/gui.cpp index b275616..3f7e943 100644 --- a/beos/gui.cpp @@ -221,10 +261,18 @@ index 32860de..90cadde 100644 a->Go(NULL); diff --git a/beos/res.rdef b/beos/res.rdef -index b047bd0..b9aa589 100644 +index b047bd0..b41130a 100644 --- a/beos/res.rdef +++ b/beos/res.rdef -@@ -397,3 +397,43 @@ resource(101, "BEOS:V:STD_ICON") #'zICO' array { +@@ -32,6 +32,7 @@ resource(408, "throbber8.png") #'data' import "res/throbber/throbber8.png"; + /* */ + resource(500, "credits.html") #'data' import "res/en/credits.html,faf"; + resource(501, "licence.html") #'data' import "res/en/licence.html,faf"; ++resource(502, "welcome.html") #'data' import "res/en/welcome.html,faf"; + + + resource(1, "BEOS:APP_FLAGS") (#'APPF') $"01000000"; +@@ -397,3 +398,43 @@ resource(101, "BEOS:V:STD_ICON") #'zICO' array { $"7F793EDCE3F417BB10DA0B" }; @@ -269,7 +317,7 @@ index b047bd0..b9aa589 100644 +}; + diff --git a/beos/scaffolding.cpp b/beos/scaffolding.cpp -index 4003b09..c9a9d15 100644 +index 4003b09..6389e75 100644 --- a/beos/scaffolding.cpp +++ b/beos/scaffolding.cpp @@ -22,7 +22,9 @@ @@ -304,29 +352,89 @@ index 4003b09..c9a9d15 100644 #include extern "C" { #include "content/content.h" -@@ -571,6 +581,12 @@ NSBrowserWindow::NSBrowserWindow(BRect frame, struct beos_scaffolding *scaf) - : BWindow(frame, "NetSurf", B_DOCUMENT_WINDOW, 0), - fScaffolding(scaf) +@@ -458,7 +468,7 @@ NSBaseView::MessageReceived(BMessage *message) + nsbeos_pipe_message_top(message, NULL, fScaffolding); + break; + default: +- message->PrintToStream(); ++ //message->PrintToStream(); + BView::MessageReceived(message); + } + } +@@ -539,6 +549,7 @@ void + NSBaseView::AllAttached() { -+#if defined(__HAIKU__) -+ if (stack == NULL) -+ stack = new BWindowStack(this); -+ else -+ stack->AddWindow(this); -+#endif + BView::AllAttached(); ++ + struct beos_scaffolding *g = fScaffolding; + if (!g) + return; +@@ -576,6 +587,8 @@ NSBrowserWindow::NSBrowserWindow(BRect frame, struct beos_scaffolding *scaf) + + NSBrowserWindow::~NSBrowserWindow() + { ++ if(activeWindow == this) ++ activeWindow = NULL; } -@@ -621,6 +637,8 @@ NSBrowserWindow::QuitRequested(void) +@@ -621,6 +634,16 @@ NSBrowserWindow::QuitRequested(void) } -+BWindowStack* NSBrowserWindow::stack = NULL; ++void ++NSBrowserWindow::WindowActivated(bool active) ++{ ++ if(active) ++ activeWindow = this; ++ else if(activeWindow == this) ++ activeWindow = NULL; ++} ++ + // #pragma mark - implementation int32 nsbeos_replicant_main_thread(void *_arg) -@@ -1659,6 +1677,90 @@ static BMenuItem *make_menu_item(const char *name, BMessage *message) +@@ -686,6 +709,10 @@ void nsbeos_scaffolding_update_colors(nsbeos_scaffolding *g) + } + + ++/*static*/ BWindow* ++NSBrowserWindow::activeWindow = NULL; ++ ++ + void nsbeos_scaffolding_dispatch_event(nsbeos_scaffolding *scaffold, BMessage *message) + { + int width, height; +@@ -907,6 +934,7 @@ void nsbeos_scaffolding_dispatch_event(nsbeos_scaffolding *scaffold, BMessage *m + text = scaffold->url_bar->Text(); + scaffold->url_bar->UnlockLooper(); + ++ NSBrowserWindow::activeWindow = scaffold->window; + browser_window_create(text.String(), bw, NULL, false, false); + break; + } +@@ -1570,7 +1598,19 @@ void nsbeos_attach_toplevel_view(nsbeos_scaffolding *g, BView *view) + message->AddPointer("scaffolding", g); + g->window->AddShortcut('H', 0, message, view); + ++ ++#if defined(__HAIKU__) ++ // Make sure the window is layouted and answering to events, but do not ++ // show it before it is actually resized ++ g->window->Hide(); ++ g->window->Show(); ++ ++ if(NSBrowserWindow::activeWindow) { ++ BWindowStack(NSBrowserWindow::activeWindow).AddWindow(g->window); ++ } ++#endif + g->window->Show(); ++ + } else { + if (g->top_view->Looper()) + g->top_view->UnlockLooper(); +@@ -1659,6 +1699,90 @@ static BMenuItem *make_menu_item(const char *name, BMessage *message) return item; } @@ -417,7 +525,32 @@ index 4003b09..c9a9d15 100644 nsbeos_scaffolding *nsbeos_new_scaffolding(struct gui_window *toplevel) { struct beos_scaffolding *g = (struct beos_scaffolding *)malloc(sizeof(*g)); -@@ -2038,14 +2140,13 @@ nsbeos_scaffolding *nsbeos_new_scaffolding(struct gui_window *toplevel) +@@ -1676,7 +1800,6 @@ nsbeos_scaffolding *nsbeos_new_scaffolding(struct gui_window *toplevel) + + g->window = NULL; + g->menu_bar = NULL; +- g->window = NULL; + + if (replicated && !replicant_view) { + warn_user("Error: No subwindow allowed when replicated.", NULL); +@@ -1685,7 +1808,6 @@ nsbeos_scaffolding *nsbeos_new_scaffolding(struct gui_window *toplevel) + + + if (!replicant_view) { +- + BRect frame(0, 0, 600-1, 500-1); + if (nsoption_int(window_width) > 0) { + frame.Set(0, 0, nsoption_int(window_width) - 1, nsoption_int(window_height) - 1); +@@ -1696,7 +1818,7 @@ nsbeos_scaffolding *nsbeos_new_scaffolding(struct gui_window *toplevel) + NSBrowserWindow *win = nsbeos_find_last_window(); + if (win) { + pos = win->Frame().LeftTop(); +- win->Unlock(); ++ win->UnlockLooper(); + } + pos += BPoint(20, 20); + BScreen screen; +@@ -2038,14 +2160,13 @@ nsbeos_scaffolding *nsbeos_new_scaffolding(struct gui_window *toplevel) rect = g->top_view->Bounds(); rect.bottom = rect.top + TOOLBAR_HEIGHT - 1; rect.right = rect.right - DRAGGER_WIDTH; @@ -433,7 +566,7 @@ index 4003b09..c9a9d15 100644 rect = g->tool_bar->Bounds(); rect.right = TOOLBAR_HEIGHT; rect.InsetBySelf(5, 5); -@@ -2054,35 +2155,35 @@ nsbeos_scaffolding *nsbeos_new_scaffolding(struct gui_window *toplevel) +@@ -2054,35 +2175,35 @@ nsbeos_scaffolding *nsbeos_new_scaffolding(struct gui_window *toplevel) message = new BMessage('back'); message->AddPointer("scaffolding", g); @@ -474,30 +607,28 @@ index 4003b09..c9a9d15 100644 g->tool_bar->AddChild(g->home_button); nButtons++; -@@ -2407,3 +2508,4 @@ void nsbeos_scaffolding_popup_menu(nsbeos_scaffolding *g, BPoint where) +@@ -2407,3 +2528,4 @@ void nsbeos_scaffolding_popup_menu(nsbeos_scaffolding *g, BPoint where) { g->popup_menu->Go(where); } + diff --git a/beos/scaffolding.h b/beos/scaffolding.h -index ae78391..d456c0c 100644 +index ae78391..bd13230 100644 --- a/beos/scaffolding.h +++ b/beos/scaffolding.h -@@ -29,6 +29,8 @@ extern "C" { - #include "desktop/plotters.h" - } +@@ -61,11 +61,15 @@ virtual ~NSBrowserWindow(); + virtual void DispatchMessage(BMessage *message, BHandler *handler); + virtual void MessageReceived(BMessage *message); + virtual bool QuitRequested(void); ++void WindowActivated(bool active); -+class BWindowStack; -+ - typedef struct beos_scaffolding nsbeos_scaffolding; - - class NSBaseView : public BView { -@@ -66,6 +68,8 @@ struct beos_scaffolding *Scaffolding() const { return fScaffolding; }; + struct beos_scaffolding *Scaffolding() const { return fScaffolding; }; ++static BWindow* activeWindow; private: struct beos_scaffolding *fScaffolding; + -+ static BWindowStack* stack; ++ };