comparison org.eclipse.swt.gtk.linux.x86/src/org/eclipse/swt/browser/Mozilla.d @ 120:536e43f63c81

Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661 ===D2=== * added [Try]Immutable/Const/Shared templates to work with differenses in D1/D2 instead of version statements used these templates to work with strict type storage rules of dmd-2.053 * com.ibm.icu now also compilable with D2, but not tested yet * small fixes Snippet288 - shared data is in TLS ===Phobos=== * fixed critical bugs in Phobos implemention completely incorrect segfault prone fromStringz (Linux's port ruthless killer) terrible, incorrect StringBuffer realization (StyledText killer) * fixed small bugs as well Snippet72 - misprint in the snippet * implemented missed functionality for Phobos ByteArrayOutputStream implemented (image loading available) formatting correctly works for all DWT's cases As a result, folowing snippets now works with Phobos (Snippet### - what is fixed): Snippet24, 42, 111, 115, 130, 235, 276 - bad string formatting Snippet48, 282 - crash on image loading Snippet163, 189, 211, 213, 217, 218, 222 - crash on copy/cut in StyledText Snippet244 - hang-up ===Tango=== * few changes for the latest Tango trunc-r5661 * few small performance improvments ===General=== * implMissing-s for only one version changed to implMissingInTango/InPhobos * incorrect calls to Format in toString-s fixed * fixed loading \uXXXX characters in ResourceBundle * added good UTF-8 support for StyledText, TextLayout (Win32) and friends UTF functions revised and tested. It is now in java.nonstandard.*Utf modules StyledText and TextLayout (Win32) modules revised for UTF-8 support * removed small diferences in most identical files in *.swt.* folders *.swt.internal.image, *.swt.events and *.swt.custom are identical in Win32/Linux32 now 179 of 576 (~31%) files in *.swt.* folders are fully identical * Win32: snippets now have right subsystem, pretty icons and native system style controls * small fixes in snippets Snippet44 - it's not Snippet44 Snippet212 - functions work with different images and offsets arrays Win32: Snippet282 - crash on close if the button has an image Snippet293 - setGrayed is commented and others Win32: As a result, folowing snippets now works Snippet68 - color doesn't change Snippet163, 189, 211, 213, 217, 218, 222 - UTF-8 issues (see above) Snippet193 - no tabel headers
author Denis Shelomovskij <verylonglogin.reg@gmail.com>
date Sat, 09 Jul 2011 15:50:20 +0300
parents 70388b0e6dad
children
comparison
equal deleted inserted replaced
119:d00e8db0a568 120:536e43f63c81
14 14
15 import java.lang.all; 15 import java.lang.all;
16 16
17 17
18 version(Tango){ 18 version(Tango){
19 import tango.text.locale.Core; 19 import tango.text.locale.Core;
20 import tango.sys.Environment; 20 import tango.sys.Environment;
21 import tango.stdc.string; 21 import tango.stdc.string;
22 } else { // Phobos 22 } else { // Phobos
23 import std.process: Environment = environment;
23 } 24 }
24 25
25 //import org.eclipse.swt.internal.c.gtk; 26 //import org.eclipse.swt.internal.c.gtk;
26 27
27 import org.eclipse.swt.SWT; 28 import org.eclipse.swt.SWT;
316 if (rc !is XPCOM.NS_OK) { 317 if (rc !is XPCOM.NS_OK) {
317 mozillaPath = mozillaPath.substring (0, mozillaPath.lastIndexOf (SEPARATOR_OS)); 318 mozillaPath = mozillaPath.substring (0, mozillaPath.lastIndexOf (SEPARATOR_OS));
318 if (Device.DEBUG) getDwtLogger().error (__FILE__, __LINE__, "cannot use detected XULRunner: {}", mozillaPath); //$NON-NLS-1$ 319 if (Device.DEBUG) getDwtLogger().error (__FILE__, __LINE__, "cannot use detected XULRunner: {}", mozillaPath); //$NON-NLS-1$
319 320
320 /* attempt to XPCOMGlueStartup the GRE pointed at by MOZILLA_FIVE_HOME */ 321 /* attempt to XPCOMGlueStartup the GRE pointed at by MOZILLA_FIVE_HOME */
321 version(Tango){ 322 auto ptr = Environment.get(XPCOM.MOZILLA_FIVE_HOME);
322 auto ptr = Environment.get(XPCOM.MOZILLA_FIVE_HOME); 323
323 } else { // Phobos
324 implMissing(__FILE__, __LINE__);
325 String ptr;
326 }
327
328 if (ptr is null) { 324 if (ptr is null) {
329 IsXULRunner = false; 325 IsXULRunner = false;
330 } else { 326 } else {
331 mozillaPath = ptr; 327 mozillaPath = ptr;
332 /* 328 /*
372 " [Could not detect registered XULRunner to use]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 368 " [Could not detect registered XULRunner to use]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
373 SWT.error (SWT.ERROR_NO_HANDLES, null, errorString); 369 SWT.error (SWT.ERROR_NO_HANDLES, null, errorString);
374 } 370 }
375 371
376 /* attempt to use the GRE pointed at by MOZILLA_FIVE_HOME */ 372 /* attempt to use the GRE pointed at by MOZILLA_FIVE_HOME */
377 version(Tango){ 373 auto mozFiveHome = Environment.get(XPCOM.MOZILLA_FIVE_HOME);
378 auto mozFiveHome = Environment.get(XPCOM.MOZILLA_FIVE_HOME);
379 } else { // Phobos
380 implMissing(__FILE__, __LINE__);
381 String mozFiveHome;
382 }
383 if (mozFiveHome !is null) { 374 if (mozFiveHome !is null) {
384 mozillaPath = mozFiveHome; 375 mozillaPath = mozFiveHome;
385 } else { 376 } else {
386 browser.dispose (); 377 browser.dispose ();
387 SWT.error (SWT.ERROR_NO_HANDLES, null, " [Unknown Mozilla path (MOZILLA_FIVE_HOME not set)]"); //$NON-NLS-1$ 378 SWT.error (SWT.ERROR_NO_HANDLES, null, " [Unknown Mozilla path (MOZILLA_FIVE_HOME not set)]"); //$NON-NLS-1$
650 641
651 version(Tango){ 642 version(Tango){
652 String language = Culture.current.twoLetterLanguageName (); 643 String language = Culture.current.twoLetterLanguageName ();
653 String country = Region.current.twoLetterRegionName (); 644 String country = Region.current.twoLetterRegionName ();
654 } else { // Phobos 645 } else { // Phobos
655 implMissing(__FILE__, __LINE__); 646 implMissingInPhobos();
656 String language = "en"; 647 String language = "en";
657 String country = "us"; 648 String country = "us";
658 } 649 }
659 String stringBuffer = language._idup(); 650 String stringBuffer = language._idup();
660 651
1459 static void error (int code ) { 1450 static void error (int code ) {
1460 error ( code, "NOT GIVEN", 0 ); 1451 error ( code, "NOT GIVEN", 0 );
1461 } 1452 }
1462 1453
1463 extern(D) 1454 extern(D)
1464 static String error (int code, CString file, int line) { 1455 static void error (int code, String file, int line) {
1465 getDwtLogger().info( __FILE__, __LINE__, "File: {} Line: {}", file, line); 1456 getDwtLogger().info( __FILE__, __LINE__, "File: {} Line: {}", file, line);
1466 throw new SWTError ("XPCOM error " ~ Integer.toString(code)); //$NON-NLS-1$ 1457 throw new SWTError ("XPCOM error " ~ Integer.toString(code)); //$NON-NLS-1$
1467 } 1458 }
1468 1459
1469 extern(D) 1460 extern(D)
2699 if (rc !is XPCOM.NS_OK) error (rc, __FILE__, __LINE__); 2690 if (rc !is XPCOM.NS_OK) error (rc, __FILE__, __LINE__);
2700 if (categoryManager is null) error (XPCOM.NS_NOINTERFACE, __FILE__, __LINE__); 2691 if (categoryManager is null) error (XPCOM.NS_NOINTERFACE, __FILE__, __LINE__);
2701 2692
2702 //nsICategoryManager categoryManager = new nsICategoryManager (result[0]); 2693 //nsICategoryManager categoryManager = new nsICategoryManager (result[0]);
2703 //result[0] = 0; 2694 //result[0] = 0;
2704 CCharPtr categoryBytes = "Gecko-Content-Viewers"; //$NON-NLS-1$ 2695 auto categoryBytes = "Gecko-Content-Viewers".ptr; //$NON-NLS-1$
2705 char* result; 2696 char* result;
2706 rc = categoryManager.GetCategoryEntry (categoryBytes, aContentType, &result); 2697 rc = categoryManager.GetCategoryEntry (categoryBytes, aContentType, &result);
2707 categoryManager.Release (); 2698 categoryManager.Release ();
2708 /* if no viewer for the content type is registered then rc is XPCOM.NS_ERROR_NOT_AVAILABLE */ 2699 /* if no viewer for the content type is registered then rc is XPCOM.NS_ERROR_NOT_AVAILABLE */
2709 preferred = rc is XPCOM.NS_OK; 2700 preferred = rc is XPCOM.NS_OK;