Mercurial > projects > dwt2
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; |