diff options
Diffstat (limited to 'frontends/beos/gui.cpp')
-rw-r--r-- | frontends/beos/gui.cpp | 49 |
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); |