Mercurial > projects > dwt-linux
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 }); |