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
|
diff --git a/beos/Makefile.target b/beos/Makefile.target
|
||||||
index b1d1eaa..461ecbc 100644
|
index b1d1eaa..461ecbc 100644
|
||||||
--- a/beos/Makefile.target
|
--- a/beos/Makefile.target
|
||||||
@@ -44,6 +57,33 @@ index b1d1eaa..461ecbc 100644
|
|||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# Package target
|
# 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
|
diff --git a/beos/gui.cpp b/beos/gui.cpp
|
||||||
index b275616..3f7e943 100644
|
index b275616..3f7e943 100644
|
||||||
--- a/beos/gui.cpp
|
--- a/beos/gui.cpp
|
||||||
@@ -221,10 +261,18 @@ index 32860de..90cadde 100644
|
|||||||
a->Go(NULL);
|
a->Go(NULL);
|
||||||
|
|
||||||
diff --git a/beos/res.rdef b/beos/res.rdef
|
diff --git a/beos/res.rdef b/beos/res.rdef
|
||||||
index b047bd0..b9aa589 100644
|
index b047bd0..b41130a 100644
|
||||||
--- a/beos/res.rdef
|
--- a/beos/res.rdef
|
||||||
+++ b/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"
|
$"7F793EDCE3F417BB10DA0B"
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -269,7 +317,7 @@ index b047bd0..b9aa589 100644
|
|||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
diff --git a/beos/scaffolding.cpp b/beos/scaffolding.cpp
|
diff --git a/beos/scaffolding.cpp b/beos/scaffolding.cpp
|
||||||
index 4003b09..c9a9d15 100644
|
index 4003b09..6389e75 100644
|
||||||
--- a/beos/scaffolding.cpp
|
--- a/beos/scaffolding.cpp
|
||||||
+++ b/beos/scaffolding.cpp
|
+++ b/beos/scaffolding.cpp
|
||||||
@@ -22,7 +22,9 @@
|
@@ -22,7 +22,9 @@
|
||||||
@@ -304,29 +352,89 @@ index 4003b09..c9a9d15 100644
|
|||||||
#include <fs_attr.h>
|
#include <fs_attr.h>
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#include "content/content.h"
|
#include "content/content.h"
|
||||||
@@ -571,6 +581,12 @@ NSBrowserWindow::NSBrowserWindow(BRect frame, struct beos_scaffolding *scaf)
|
@@ -458,7 +468,7 @@ NSBaseView::MessageReceived(BMessage *message)
|
||||||
: BWindow(frame, "NetSurf", B_DOCUMENT_WINDOW, 0),
|
nsbeos_pipe_message_top(message, NULL, fScaffolding);
|
||||||
fScaffolding(scaf)
|
break;
|
||||||
|
default:
|
||||||
|
- message->PrintToStream();
|
||||||
|
+ //message->PrintToStream();
|
||||||
|
BView::MessageReceived(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -539,6 +549,7 @@ void
|
||||||
|
NSBaseView::AllAttached()
|
||||||
{
|
{
|
||||||
+#if defined(__HAIKU__)
|
BView::AllAttached();
|
||||||
+ if (stack == NULL)
|
+
|
||||||
+ stack = new BWindowStack(this);
|
struct beos_scaffolding *g = fScaffolding;
|
||||||
+ else
|
if (!g)
|
||||||
+ stack->AddWindow(this);
|
return;
|
||||||
+#endif
|
@@ -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
|
// #pragma mark - implementation
|
||||||
|
|
||||||
int32 nsbeos_replicant_main_thread(void *_arg)
|
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;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -417,7 +525,32 @@ index 4003b09..c9a9d15 100644
|
|||||||
nsbeos_scaffolding *nsbeos_new_scaffolding(struct gui_window *toplevel)
|
nsbeos_scaffolding *nsbeos_new_scaffolding(struct gui_window *toplevel)
|
||||||
{
|
{
|
||||||
struct beos_scaffolding *g = (struct beos_scaffolding *)malloc(sizeof(*g));
|
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 = g->top_view->Bounds();
|
||||||
rect.bottom = rect.top + TOOLBAR_HEIGHT - 1;
|
rect.bottom = rect.top + TOOLBAR_HEIGHT - 1;
|
||||||
rect.right = rect.right - DRAGGER_WIDTH;
|
rect.right = rect.right - DRAGGER_WIDTH;
|
||||||
@@ -433,7 +566,7 @@ index 4003b09..c9a9d15 100644
|
|||||||
rect = g->tool_bar->Bounds();
|
rect = g->tool_bar->Bounds();
|
||||||
rect.right = TOOLBAR_HEIGHT;
|
rect.right = TOOLBAR_HEIGHT;
|
||||||
rect.InsetBySelf(5, 5);
|
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 = new BMessage('back');
|
||||||
message->AddPointer("scaffolding", g);
|
message->AddPointer("scaffolding", g);
|
||||||
@@ -474,30 +607,28 @@ index 4003b09..c9a9d15 100644
|
|||||||
g->tool_bar->AddChild(g->home_button);
|
g->tool_bar->AddChild(g->home_button);
|
||||||
nButtons++;
|
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);
|
g->popup_menu->Go(where);
|
||||||
}
|
}
|
||||||
+
|
+
|
||||||
diff --git a/beos/scaffolding.h b/beos/scaffolding.h
|
diff --git a/beos/scaffolding.h b/beos/scaffolding.h
|
||||||
index ae78391..d456c0c 100644
|
index ae78391..bd13230 100644
|
||||||
--- a/beos/scaffolding.h
|
--- a/beos/scaffolding.h
|
||||||
+++ b/beos/scaffolding.h
|
+++ b/beos/scaffolding.h
|
||||||
@@ -29,6 +29,8 @@ extern "C" {
|
@@ -61,11 +61,15 @@ virtual ~NSBrowserWindow();
|
||||||
#include "desktop/plotters.h"
|
virtual void DispatchMessage(BMessage *message, BHandler *handler);
|
||||||
}
|
virtual void MessageReceived(BMessage *message);
|
||||||
|
virtual bool QuitRequested(void);
|
||||||
|
+void WindowActivated(bool active);
|
||||||
|
|
||||||
+class BWindowStack;
|
struct beos_scaffolding *Scaffolding() const { return fScaffolding; };
|
||||||
+
|
|
||||||
typedef struct beos_scaffolding nsbeos_scaffolding;
|
|
||||||
|
|
||||||
class NSBaseView : public BView {
|
|
||||||
@@ -66,6 +68,8 @@ struct beos_scaffolding *Scaffolding() const { return fScaffolding; };
|
|
||||||
|
|
||||||
|
+static BWindow* activeWindow;
|
||||||
private:
|
private:
|
||||||
struct beos_scaffolding *fScaffolding;
|
struct beos_scaffolding *fScaffolding;
|
||||||
+
|
+
|
||||||
+ static BWindowStack* stack;
|
+
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user