annotate dwt/browser/MozillaDelegate.d @ 156:969e7de37c3d default tip

Fixes to get dwt to work with dmd and ldc
author Jacob Carlborg <doob@me.com>
date Wed, 08 Jul 2009 21:56:44 +0200
parents 5583f8eeee6c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 36
diff changeset
1 /*******************************************************************************
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 36
diff changeset
2 * Copyright (c) 2003, 2008 IBM Corporation and others.
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
7 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
8 * Contributors:
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
10 *
13
f565d3a95c0a Ported dwt.internal
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 0
diff changeset
11 * Port to the D programming language:
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 36
diff changeset
12 * Jacob Carlborg <doob@me.com>
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
13 *******************************************************************************/
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
14 module dwt.browser.MozillaDelegate;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
15
124
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
16 import dwt.dwthelper.utils;
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
17
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
18 import dwt.DWT;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
19 import dwt.widgets.Display;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
20 import dwt.widgets.Event;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
21 import dwt.widgets.Listener;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
22
124
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
23 import dwt.browser.Browser;
125
5583f8eeee6c Synced mozilla with dwt-linux
Jacob Carlborg <doob@me.com>
parents: 124
diff changeset
24 import dwt.browser.Mozilla;
124
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
25 import objc = dwt.internal.objc.runtime;
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
26
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
27 class MozillaDelegate {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
28 Browser browser;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
29 Listener listener;
124
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
30 boolean hasFocus;
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
31
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
32 this (Browser browser) {
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
33 this.browser = browser;
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
34 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
35
124
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
36 static Browser findBrowser (objc.id handle) {
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
37 Display display = Display.getCurrent ();
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
38 return cast(Browser)display.findWidget (handle);
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
39 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
40
125
5583f8eeee6c Synced mozilla with dwt-linux
Jacob Carlborg <doob@me.com>
parents: 124
diff changeset
41 /+static char[] mbcsToWcs (String codePage, byte [] buffer) {
124
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
42 // int encoding = OS.CFStringGetSystemEncoding ();
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
43 // int cfstring = OS.CFStringCreateWithBytes (OS.kCFAllocatorDefault, buffer, buffer.length, encoding, false);
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
44 // char[] chars = null;
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
45 // if (cfstring != 0) {
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
46 // int length = OS.CFStringGetLength (cfstring);
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
47 // chars = new char [length];
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
48 // if (length != 0) {
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
49 // CFRange range = new CFRange ();
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
50 // range.length = length;
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
51 // OS.CFStringGetCharacters (cfstring, range, chars);
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
52 // }
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
53 // OS.CFRelease (cfstring);
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
54 // }
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
55 // return chars;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 36
diff changeset
56 // TODO implement mbcsToWcs
125
5583f8eeee6c Synced mozilla with dwt-linux
Jacob Carlborg <doob@me.com>
parents: 124
diff changeset
57 return new_String(buffer).toCharArray();
5583f8eeee6c Synced mozilla with dwt-linux
Jacob Carlborg <doob@me.com>
parents: 124
diff changeset
58 }+/
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
59
125
5583f8eeee6c Synced mozilla with dwt-linux
Jacob Carlborg <doob@me.com>
parents: 124
diff changeset
60 /+static byte[] wcsToMbcs (String codePage, String string, boolean terminate) {
124
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
61 // char[] chars = new char [string.length()];
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
62 // string.getChars (0, chars.length, chars, 0);
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
63 // int cfstring = OS.CFStringCreateWithCharacters (OS.kCFAllocatorDefault, chars, chars.length);
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
64 // byte[] buffer = null;
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
65 // if (cfstring != 0) {
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
66 // CFRange range = new CFRange ();
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
67 // range.length = chars.length;
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
68 // int encoding = OS.CFStringGetSystemEncoding ();
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
69 // int[] size = new int[1];
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
70 // int numChars = OS.CFStringGetBytes (cfstring, range, encoding, (byte)'?', true, null, 0, size);
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
71 // buffer = new byte [size[0] + (terminate ? 1 : 0)];
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
72 // if (numChars != 0) {
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
73 // numChars = OS.CFStringGetBytes (cfstring, range, encoding, (byte)'?', true, buffer, size[0], size);
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
74 // }
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
75 // OS.CFRelease (cfstring);
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
76 // }
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
77 // return buffer;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 36
diff changeset
78 // TODO implement wcsToMbcs
124
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
79 if (terminate) string += "\0";
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
80 return string.getBytes();
125
5583f8eeee6c Synced mozilla with dwt-linux
Jacob Carlborg <doob@me.com>
parents: 124
diff changeset
81 }+/
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
82
125
5583f8eeee6c Synced mozilla with dwt-linux
Jacob Carlborg <doob@me.com>
parents: 124
diff changeset
83 objc.id getHandle () {
124
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
84 return browser.view.id;
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
85 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
86
124
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
87 String getLibraryName () {
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
88 return "libxpcom.dylib"; //$NON-NLS-1$
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
89 }
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
90
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
91 String getSWTInitLibraryName () {
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
92 return "swt-xulrunner"; //$NON-NLS-1$
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
93 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
94
124
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
95 void handleFocus () {
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
96 if (hasFocus) return;
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
97 hasFocus = true;
125
5583f8eeee6c Synced mozilla with dwt-linux
Jacob Carlborg <doob@me.com>
parents: 124
diff changeset
98 (cast(Mozilla)browser.webBrowser).Activate ();
124
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
99 browser.setFocus ();
125
5583f8eeee6c Synced mozilla with dwt-linux
Jacob Carlborg <doob@me.com>
parents: 124
diff changeset
100 listener = new class () Listener {
124
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
101 public void handleEvent (Event event) {
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
102 if (event.widget == browser) return;
125
5583f8eeee6c Synced mozilla with dwt-linux
Jacob Carlborg <doob@me.com>
parents: 124
diff changeset
103 (cast(Mozilla)browser.webBrowser).Deactivate ();
124
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
104 hasFocus = false;
125
5583f8eeee6c Synced mozilla with dwt-linux
Jacob Carlborg <doob@me.com>
parents: 124
diff changeset
105 browser.getDisplay ().removeFilter (DWT.FocusIn, this);
5583f8eeee6c Synced mozilla with dwt-linux
Jacob Carlborg <doob@me.com>
parents: 124
diff changeset
106 browser.getShell ().removeListener (DWT.Deactivate, this);
124
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
107 listener = null;
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
108 }
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
109
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
110 };
125
5583f8eeee6c Synced mozilla with dwt-linux
Jacob Carlborg <doob@me.com>
parents: 124
diff changeset
111 browser.getDisplay ().addFilter (DWT.FocusIn, listener);
5583f8eeee6c Synced mozilla with dwt-linux
Jacob Carlborg <doob@me.com>
parents: 124
diff changeset
112 browser.getShell ().addListener (DWT.Deactivate, listener);
124
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
113 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
114
124
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
115 void handleMouseDown () {
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
116 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
117
124
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
118 boolean hookEnterExit () {
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
119 return true;
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
120 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
121
124
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
122 void init () {
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
123 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
124
124
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
125 boolean needsSpinup () {
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
126 return false;
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
127 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
128
125
5583f8eeee6c Synced mozilla with dwt-linux
Jacob Carlborg <doob@me.com>
parents: 124
diff changeset
129 void onDispose (objc.id embedHandle) {
5583f8eeee6c Synced mozilla with dwt-linux
Jacob Carlborg <doob@me.com>
parents: 124
diff changeset
130 if (listener !is null) {
5583f8eeee6c Synced mozilla with dwt-linux
Jacob Carlborg <doob@me.com>
parents: 124
diff changeset
131 browser.getDisplay ().removeFilter (DWT.FocusIn, listener);
5583f8eeee6c Synced mozilla with dwt-linux
Jacob Carlborg <doob@me.com>
parents: 124
diff changeset
132 browser.getShell ().removeListener (DWT.Deactivate, listener);
124
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
133 listener = null;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
134 }
124
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
135 browser = null;
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
136 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
137
125
5583f8eeee6c Synced mozilla with dwt-linux
Jacob Carlborg <doob@me.com>
parents: 124
diff changeset
138 void setSize (objc.id embedHandle, int width, int height) {
124
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
139 // TODO
540fa4e9974a Ported dwt.internal.theme
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
140 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
141
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
142 }