mirror of
https://github.com/yann64/haikuports.git
synced 2026-04-29 19:48:53 +02:00
* The welcome page was not embedded
* Fix layouting problems when stacking windows * Windows are stacked on the active window, rather than the first open one * Also stacks window when middle-clicking a link
This commit is contained in:
@@ -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 <image.h>
|
||||
#include <Resources.h>
|
||||
+#include <String.h>
|
||||
|
||||
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 <fs_attr.h>
|
||||
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;
|
||||
+
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user