summaryrefslogtreecommitdiff
path: root/frontends/beos/gui.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'frontends/beos/gui.cpp')
-rw-r--r--frontends/beos/gui.cpp49
1 files changed, 36 insertions, 13 deletions
diff --git a/frontends/beos/gui.cpp b/frontends/beos/gui.cpp
index 19f8eac49..cbfe352c8 100644
--- a/frontends/beos/gui.cpp
+++ b/frontends/beos/gui.cpp
@@ -42,6 +42,9 @@
#include <Roster.h>
#include <Screen.h>
#include <String.h>
+#ifdef __HAIKU__
+#include <LocaleRoster.h>
+#endif
extern "C" {
@@ -519,9 +522,18 @@ static BPath get_messages_path()
BPath p;
f.FindPath(B_FIND_PATH_APPS_DIRECTORY, "netsurf/res", p);
- // TODO: use Haiku's BLocale stuff
- BString lang(getenv("LC_MESSAGES"));
- lang.Truncate(2);
+ BString lang;
+#ifdef __HAIKU__
+ BMessage preferredLangs;
+ if (BLocaleRoster::Default()->GetPreferredLanguages(&preferredLangs) == B_OK) {
+ preferredLangs.FindString("language", 0, &lang);
+ lang.Truncate(2);
+ }
+#endif
+ if (lang.Length() < 1) {
+ lang.SetTo(getenv("LC_MESSAGES"));
+ lang.Truncate(2);
+ }
BDirectory d(p.Path());
if (!d.Contains(lang.String(), B_DIRECTORY_NODE))
lang = "en";
@@ -738,12 +750,12 @@ void nsbeos_gui_poll(void)
unsigned int fd_count = 0;
bigtime_t next_schedule = 0;
- /* get any active fetcher fd */
- fetch_fdset(&read_fd_set, &write_fd_set, &exc_fd_set, &max_fd);
-
/* run the scheduler */
schedule_run();
+ /* get any active fetcher fd */
+ fetch_fdset(&read_fd_set, &write_fd_set, &exc_fd_set, &max_fd);
+
// our own event pipe
FD_SET(sEventPipe[0], &read_fd_set);
@@ -778,7 +790,7 @@ void nsbeos_gui_poll(void)
if (len == sizeof(void *)) {
NSLOG(netsurf, DEEPDEBUG,
"gui_poll: BMessage.what %-4.4s\n",
- &(message->what));
+ (char *)&(message->what));
nsbeos_dispatch_event(message);
}
}
@@ -822,7 +834,9 @@ void nsbeos_gui_view_source(struct hlcache_handle *content)
BPath path;
status_t err;
size_t size;
- const char *source = content_get_source_data(content, &size);
+ const uint8_t *source;
+
+ source = content_get_source_data(content, &size);
if (!content || !source) {
beos_warn_user("MiscError", "No document source");
@@ -979,12 +993,11 @@ static struct gui_fetch_table beos_fetch_table = {
static struct gui_misc_table beos_misc_table = {
beos_schedule,
- beos_warn_user,
gui_quit,
gui_launch_url,
- NULL, //cert_verify
- gui_401login_open,
+ NULL, //401login
NULL, // pdf_password (if we have Haru support)
+ NULL, // present_cookies
};
@@ -1040,9 +1053,19 @@ int main(int argc, char** argv)
BResources resources;
resources.SetToImage((const void*)main);
size_t size = 0;
-
+
+ BString lang;
+#ifdef __HAIKU__
+ BMessage preferredLangs;
+ if (BLocaleRoster::Default()->GetPreferredLanguages(&preferredLangs) == B_OK) {
+ preferredLangs.FindString("language", 0, &lang);
+ }
+#endif
+ if (lang.Length() < 1)
+ lang.SetTo(getenv("LC_MESSAGES"));
+
char path[12];
- sprintf(path,"%.2s/Messages", getenv("LC_MESSAGES"));
+ sprintf(path,"%.2s/Messages", lang.String());
NSLOG(netsurf, INFO, "Loading messages from resource %s\n", path);
const uint8_t* res = (const uint8_t*)resources.LoadResource('data', path, &size);