comparison dwt/browser/MozillaDelegate.d @ 340:3f4a5c7d138f

Fixes
author John Reimer <terminal.node@gmail.com>
date Sun, 26 Oct 2008 08:09:00 -0700
parents 44258e0b6687
children 942da4b6558a
comparison
equal deleted inserted replaced
339:c317081df76f 340:3f4a5c7d138f
13 module dwt.browser.MozillaDelegate; 13 module dwt.browser.MozillaDelegate;
14 14
15 import dwt.dwthelper.utils; 15 import dwt.dwthelper.utils;
16 16
17 import dwt.DWT; 17 import dwt.DWT;
18 import dwt.internal.Callback; 18 //import dwt.internal.Callback;
19 import dwt.internal.Converter; 19 import dwt.internal.Converter;
20 import dwt.internal.gtk.GdkEvent; 20 //import dwt.internal.gtk.GdkEvent;
21 import dwt.internal.gtk.OS; 21 import dwt.internal.gtk.OS;
22 import dwt.widgets.Display; 22 import dwt.widgets.Display;
23 import dwt.widgets.Event; 23 import dwt.widgets.Event;
24 import dwt.widgets.Listener; 24 import dwt.widgets.Listener;
25 import dwt.widgets.Widget; 25 import dwt.widgets.Widget;
26
27 import dwt.browser.Browser;
28
29 import dwt.internal.c.glib_object;
26 30
27 class MozillaDelegate { 31 class MozillaDelegate {
28 Browser browser; 32 Browser browser;
29 gpointer mozillaHandle; 33 gpointer mozillaHandle;
30 GtkWidget* embedHandle; 34 GtkWidget* embedHandle;
33 //static Callback eventCallback; 37 //static Callback eventCallback;
34 // static int /*long*/ eventProc; 38 // static int /*long*/ eventProc;
35 static const gpointer STOP_PROPOGATE = cast(gpointer)1; 39 static const gpointer STOP_PROPOGATE = cast(gpointer)1;
36 40
37 static bool IsLinux; 41 static bool IsLinux;
38 static this { 42 static this () {
39 String osName = System.getProperty ("os.name"); //$NON-NLS-1$ 43 String osName = System.getProperty ("os.name"); //$NON-NLS-1$
40 IsLinux = tango.text.Util.containsPattern(osName, "linux"); //$NON-NLS-1$ 44 IsLinux = tango.text.Util.containsPattern(osName, "linux"); //$NON-NLS-1$
41 } 45 }
42 46
43 this (Browser browser) { 47 this (Browser browser) {
52 static extern(C) int eventProc (GtkWidget* handle, GdkEvent* gdkEvent, gpointer pointer) { 56 static extern(C) int eventProc (GtkWidget* handle, GdkEvent* gdkEvent, gpointer pointer) {
53 GtkWidget* parent = OS.gtk_widget_get_parent (handle); 57 GtkWidget* parent = OS.gtk_widget_get_parent (handle);
54 parent = OS.gtk_widget_get_parent (parent); 58 parent = OS.gtk_widget_get_parent (parent);
55 if (parent is null) return 0; 59 if (parent is null) return 0;
56 Widget widget = Display.getCurrent ().findWidget (parent); 60 Widget widget = Display.getCurrent ().findWidget (parent);
57 if (widget !is null && (cast(Browser)widget !is null) { 61 if (widget !is null && (cast(Browser)widget) !is null) {
58 return (cast(Mozilla)(cast(Browser)widget).webBrowser).mozDelegate.gtk_event (handle, gdkEvent, pointer); 62 return (cast(Mozilla)(cast(Browser)widget).webBrowser).mozDelegate.gtk_event (handle, gdkEvent, pointer);
59 } 63 }
60 return 0; 64 return 0;
61 } 65 }
62 66
119 } 123 }
120 124
121 void handleFocus () { 125 void handleFocus () {
122 if (hasFocus) return; 126 if (hasFocus) return;
123 hasFocus = true; 127 hasFocus = true;
124 listener = new Listener () { 128 listener = new class() Listener {
125 public void handleEvent (Event event) { 129 public void handleEvent (Event event) {
126 if (event.widget is browser) return; 130 if (event.widget is browser) return;
127 (cast(Mozilla)(browser.webBrowser)).Deactivate (); 131 (cast(Mozilla)(browser.webBrowser)).Deactivate ();
128 hasFocus = false; 132 hasFocus = false;
129 browser.getDisplay ().removeFilter (DWT.FocusIn, this); 133 browser.getDisplay ().removeFilter (DWT.FocusIn, this);
136 } 140 }
137 141
138 void handleMouseDown () { 142 void handleMouseDown () {
139 int shellStyle = browser.getShell ().getStyle (); 143 int shellStyle = browser.getShell ().getStyle ();
140 if ((shellStyle & DWT.ON_TOP) !is 0 && (((shellStyle & DWT.NO_FOCUS) is 0) || ((browser.getStyle () & DWT.NO_FOCUS) is 0))) { 144 if ((shellStyle & DWT.ON_TOP) !is 0 && (((shellStyle & DWT.NO_FOCUS) is 0) || ((browser.getStyle () & DWT.NO_FOCUS) is 0))) {
141 browser.getDisplay ().asyncExec (new Runnable () { 145 browser.getDisplay ().asyncExec (new class() Runnable {
142 public void run () { 146 public void run () {
143 if (browser is null || browser.isDisposed ()) return; 147 if (browser is null || browser.isDisposed ()) return;
144 (cast(Mozilla)(browser.webBrowser)).Activate (); 148 (cast(Mozilla)(browser.webBrowser)).Activate ();
145 } 149 }
146 }); 150 });