Mercurial > projects > dwt-mac
comparison dwt/browser/MozillaDelegate.d @ 125:5583f8eeee6c
Synced mozilla with dwt-linux
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Fri, 16 Jan 2009 12:49:08 +0100 |
parents | 540fa4e9974a |
children |
comparison
equal
deleted
inserted
replaced
124:540fa4e9974a | 125:5583f8eeee6c |
---|---|
19 import dwt.widgets.Display; | 19 import dwt.widgets.Display; |
20 import dwt.widgets.Event; | 20 import dwt.widgets.Event; |
21 import dwt.widgets.Listener; | 21 import dwt.widgets.Listener; |
22 | 22 |
23 import dwt.browser.Browser; | 23 import dwt.browser.Browser; |
24 import dwt.browser.Mozilla; | |
24 import objc = dwt.internal.objc.runtime; | 25 import objc = dwt.internal.objc.runtime; |
25 | 26 |
26 class MozillaDelegate { | 27 class MozillaDelegate { |
27 Browser browser; | 28 Browser browser; |
28 Listener listener; | 29 Listener listener; |
29 boolean hasFocus; | 30 boolean hasFocus; |
30 | 31 |
31 this (Browser browser) { | 32 this (Browser browser) { |
32 super (); | |
33 this.browser = browser; | 33 this.browser = browser; |
34 } | 34 } |
35 | 35 |
36 static Browser findBrowser (objc.id handle) { | 36 static Browser findBrowser (objc.id handle) { |
37 Display display = Display.getCurrent (); | 37 Display display = Display.getCurrent (); |
38 return cast(Browser)display.findWidget (handle); | 38 return cast(Browser)display.findWidget (handle); |
39 } | 39 } |
40 | 40 |
41 static char[] mbcsToWcs (String codePage, byte [] buffer) { | 41 /+static char[] mbcsToWcs (String codePage, byte [] buffer) { |
42 // int encoding = OS.CFStringGetSystemEncoding (); | 42 // int encoding = OS.CFStringGetSystemEncoding (); |
43 // int cfstring = OS.CFStringCreateWithBytes (OS.kCFAllocatorDefault, buffer, buffer.length, encoding, false); | 43 // int cfstring = OS.CFStringCreateWithBytes (OS.kCFAllocatorDefault, buffer, buffer.length, encoding, false); |
44 // char[] chars = null; | 44 // char[] chars = null; |
45 // if (cfstring != 0) { | 45 // if (cfstring != 0) { |
46 // int length = OS.CFStringGetLength (cfstring); | 46 // int length = OS.CFStringGetLength (cfstring); |
52 // } | 52 // } |
53 // OS.CFRelease (cfstring); | 53 // OS.CFRelease (cfstring); |
54 // } | 54 // } |
55 // return chars; | 55 // return chars; |
56 // TODO implement mbcsToWcs | 56 // TODO implement mbcsToWcs |
57 return new String(buffer).toCharArray(); | 57 return new_String(buffer).toCharArray(); |
58 } | 58 }+/ |
59 | 59 |
60 static byte[] wcsToMbcs (String codePage, String string, boolean terminate) { | 60 /+static byte[] wcsToMbcs (String codePage, String string, boolean terminate) { |
61 // char[] chars = new char [string.length()]; | 61 // char[] chars = new char [string.length()]; |
62 // string.getChars (0, chars.length, chars, 0); | 62 // string.getChars (0, chars.length, chars, 0); |
63 // int cfstring = OS.CFStringCreateWithCharacters (OS.kCFAllocatorDefault, chars, chars.length); | 63 // int cfstring = OS.CFStringCreateWithCharacters (OS.kCFAllocatorDefault, chars, chars.length); |
64 // byte[] buffer = null; | 64 // byte[] buffer = null; |
65 // if (cfstring != 0) { | 65 // if (cfstring != 0) { |
76 // } | 76 // } |
77 // return buffer; | 77 // return buffer; |
78 // TODO implement wcsToMbcs | 78 // TODO implement wcsToMbcs |
79 if (terminate) string += "\0"; | 79 if (terminate) string += "\0"; |
80 return string.getBytes(); | 80 return string.getBytes(); |
81 } | 81 }+/ |
82 | 82 |
83 int /*long*/ getHandle () { | 83 objc.id getHandle () { |
84 return browser.view.id; | 84 return browser.view.id; |
85 } | 85 } |
86 | 86 |
87 String getLibraryName () { | 87 String getLibraryName () { |
88 return "libxpcom.dylib"; //$NON-NLS-1$ | 88 return "libxpcom.dylib"; //$NON-NLS-1$ |
93 } | 93 } |
94 | 94 |
95 void handleFocus () { | 95 void handleFocus () { |
96 if (hasFocus) return; | 96 if (hasFocus) return; |
97 hasFocus = true; | 97 hasFocus = true; |
98 ((Mozilla)browser.webBrowser).Activate (); | 98 (cast(Mozilla)browser.webBrowser).Activate (); |
99 browser.setFocus (); | 99 browser.setFocus (); |
100 listener = new Listener () { | 100 listener = new class () Listener { |
101 public void handleEvent (Event event) { | 101 public void handleEvent (Event event) { |
102 if (event.widget == browser) return; | 102 if (event.widget == browser) return; |
103 ((Mozilla)browser.webBrowser).Deactivate (); | 103 (cast(Mozilla)browser.webBrowser).Deactivate (); |
104 hasFocus = false; | 104 hasFocus = false; |
105 browser.getDisplay ().removeFilter (SWT.FocusIn, this); | 105 browser.getDisplay ().removeFilter (DWT.FocusIn, this); |
106 browser.getShell ().removeListener (SWT.Deactivate, this); | 106 browser.getShell ().removeListener (DWT.Deactivate, this); |
107 listener = null; | 107 listener = null; |
108 } | 108 } |
109 | 109 |
110 }; | 110 }; |
111 browser.getDisplay ().addFilter (SWT.FocusIn, listener); | 111 browser.getDisplay ().addFilter (DWT.FocusIn, listener); |
112 browser.getShell ().addListener (SWT.Deactivate, listener); | 112 browser.getShell ().addListener (DWT.Deactivate, listener); |
113 } | 113 } |
114 | 114 |
115 void handleMouseDown () { | 115 void handleMouseDown () { |
116 } | 116 } |
117 | 117 |
124 | 124 |
125 boolean needsSpinup () { | 125 boolean needsSpinup () { |
126 return false; | 126 return false; |
127 } | 127 } |
128 | 128 |
129 void onDispose (int /*long*/ embedHandle) { | 129 void onDispose (objc.id embedHandle) { |
130 if (listener != null) { | 130 if (listener !is null) { |
131 browser.getDisplay ().removeFilter (SWT.FocusIn, listener); | 131 browser.getDisplay ().removeFilter (DWT.FocusIn, listener); |
132 browser.getShell ().removeListener (SWT.Deactivate, listener); | 132 browser.getShell ().removeListener (DWT.Deactivate, listener); |
133 listener = null; | 133 listener = null; |
134 } | 134 } |
135 browser = null; | 135 browser = null; |
136 } | 136 } |
137 | 137 |
138 void setSize (int /*long*/ embedHandle, int width, int height) { | 138 void setSize (objc.id embedHandle, int width, int height) { |
139 // TODO | 139 // TODO |
140 } | 140 } |
141 | 141 |
142 } | 142 } |