KeyPressMask | KeyReleaseMask | ButtonPressMask |
ButtonReleaseMask | EnterWindowMask | LeaveWindowMask |
PointerMotionMask | ButtonMotionMask | ConfigureNotify | FocusChangeMask;
- *((Window*)window) = XCreateWindow(display, RootWindow(display, screen_num), 10, 10, 500, 300, 0,
+ *((Window*)window) = XCreateWindow(display, RootWindow(display, screen_num), 10, 10, 10, 10, 0,
colorDepth, InputOutput, CopyFromParent,
CWColormap | CWBitGravity | CWEventMask, &xswa);
jint org::xwt::plat::POSIX::_getScreenWidth() { return WidthOfScreen(DefaultScreenOfDisplay(display)); }
jint org::xwt::plat::POSIX::_getScreenHeight() { return HeightOfScreen(DefaultScreenOfDisplay(display)); }
-jstring org::xwt::plat::POSIX::getBrowserEnvString() {
- char* envstr = getenv("BROWSER");
+jstring org::xwt::plat::POSIX::getEnv(jstring key) {
+ int len = JvGetStringUTFLength(key);
+ char buf[len + 1];
+ JvGetStringUTFRegion(key, 0, len, buf);
+ buf[len] = '\0';
+ char* envstr = getenv(buf);
return envstr == NULL ? NULL : JvNewStringLatin1(envstr);
}
selectionWindow = XCreateWindow(display, RootWindow(display, screen_num), 0, 0, 1, 1, 0, colorDepth, InputOutput, CopyFromParent, 0, NULL);
visual = DefaultVisual(display, screen_num);
char buf[255];
- sprintf(buf, "X11 DISPLAY: %s", JvNewStringLatin1(XDisplayString(display)));
+ sprintf(buf, "X11 DISPLAY: %s", XDisplayString(display));
org::xwt::util::Log::log(this->getClass(), JvNewStringLatin1(buf));
sprintf(buf, "X11 SHM: %s", shm_supported ? "enabled" : "disabled");
org::xwt::util::Log::log(this->getClass(), JvNewStringLatin1(buf));
JArray<java::lang::String*>* org::xwt::plat::POSIX::listNativeFonts() {
int numfonts;
- char** xfonts = XListFonts(display, "-*-*-*-*-*-*-*-*-*-*-*-*-*-*", 0xFFFFFFFF, &numfonts);
+ char** xfonts = XListFonts(display, "-*-*-*-*-normal-*-*-*-*-*-*-*-*-*", 0xFFFFFFFF, &numfonts);
JArray<java::lang::String*>* fonts = (JArray<java::lang::String*>*)JvNewObjectArray(numfonts, &(::java::lang::String::class$), NULL);
java::lang::String** jfonts = (java::lang::String**)(elements(fonts));
for(int i=0; i<numfonts; i++)
protected native void eventThread();
private native void natInit();
- /** returns the $BROWSER environment variable, since System.getenv() is useless */
- private static native String getBrowserEnvString();
+ /** returns the $BROWSER environment variable, since System.getEnv() is useless */
+ private static native String getEnv(String key);
/** spawns a process which is immune to SIGHUP */
private static native void spawnChildProcess(String[] command);
+ protected synchronized HTTP.ProxyInfo _detectProxy() {
+
+ HTTP.ProxyInfo ret = new HTTP.ProxyInfo();
+
+ ret.httpProxyHost = getEnv("http_proxy");
+ if (ret.httpProxyHost != null) {
+ if (ret.httpProxyHost.startsWith("http://")) ret.httpProxyHost = ret.httpProxyHost.substring(7);
+ if (ret.httpProxyHost.endsWith("/")) ret.httpProxyHost = ret.httpProxyHost.substring(0, ret.httpProxyHost.length() - 1);
+ if (ret.httpProxyHost.indexOf(':') != -1) {
+ ret.httpProxyPort = Integer.parseInt(ret.httpProxyHost.substring(ret.httpProxyHost.indexOf(':') + 1));
+ ret.httpProxyHost = ret.httpProxyHost.substring(0, ret.httpProxyHost.indexOf(':'));
+ } else {
+ ret.httpProxyPort = 80;
+ }
+ }
+
+ ret.httpsProxyHost = getEnv("https_proxy");
+ if (ret.httpsProxyHost != null) {
+ if (ret.httpsProxyHost.startsWith("https://")) ret.httpsProxyHost = ret.httpsProxyHost.substring(7);
+ if (ret.httpsProxyHost.endsWith("/")) ret.httpsProxyHost = ret.httpsProxyHost.substring(0, ret.httpsProxyHost.length() - 1);
+ if (ret.httpsProxyHost.indexOf(':') != -1) {
+ ret.httpsProxyPort = Integer.parseInt(ret.httpsProxyHost.substring(ret.httpsProxyHost.indexOf(':') + 1));
+ ret.httpsProxyHost = ret.httpsProxyHost.substring(0, ret.httpsProxyHost.indexOf(':'));
+ } else {
+ ret.httpsProxyPort = 80;
+ }
+ }
+
+ ret.socksProxyHost = getEnv("socks_proxy");
+ if (ret.socksProxyHost != null) {
+ if (ret.socksProxyHost.startsWith("socks://")) ret.socksProxyHost = ret.socksProxyHost.substring(7);
+ if (ret.socksProxyHost.endsWith("/")) ret.socksProxyHost = ret.socksProxyHost.substring(0, ret.socksProxyHost.length() - 1);
+ if (ret.socksProxyHost.indexOf(':') != -1) {
+ ret.socksProxyPort = Integer.parseInt(ret.socksProxyHost.substring(ret.socksProxyHost.indexOf(':') + 1));
+ ret.socksProxyHost = ret.socksProxyHost.substring(0, ret.socksProxyHost.indexOf(':'));
+ } else {
+ ret.socksProxyPort = 80;
+ }
+ }
+
+ String noproxy = getEnv("no_proxy");
+ if (noproxy != null) {
+ StringTokenizer st = new StringTokenizer(noproxy, ",");
+ ret.excluded = new String[st.countTokens()];
+ for(int i=0; st.hasMoreTokens(); i++) ret.excluded[i] = st.nextToken();
+ }
+
+ if (ret.httpProxyHost == null && ret.socksProxyHost == null) return null;
+ return ret;
+ }
+
protected void _newBrowserWindow(String url) {
- String browserString = getBrowserEnvString();
+ String browserString = getEnv("BROWSER");
if (browserString == null) {
browserString = "netscape " + url;
} else if (browserString.indexOf("%s") != -1) {
public void initFonts() {
// use the font list to build nativeFontList
String[] fonts = listNativeFonts();
+
for(int k=0; k<fonts.length; k++) {
String s = fonts[k].toLowerCase();
StringTokenizer st = new StringTokenizer(s, "-", false);
try {
for(int i=0; st.hasMoreTokens(); i++) font[i] = st.nextToken();
+
+ // limit to iso8559 until we can do I18N properly....
+ if (font.length > 13) {
+ if (!font[13].equals("iso8559")) continue;
+ if (font.length < 15 || !font[14].equals("1")) continue;
+ }
+
String name = font[1];
String size = font[6];
- String slant = font[3].equals("i") ? "i" : "";
+ String slant = (font[3].equals("i") || font[3].equals("o")) ? "i" : "";
String bold = font[2].equals("bold") ? "b" : "";
String tail = s.substring(1 + font[0].length() + 1 + font[1].length() + 1 + font[2].length() + 1 +
font[3].length() + 1 + font[4].length() + 1);