summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt/Eclipse SWT OLE Win32
diff options
context:
space:
mode:
authorGrant Gayed <ggayed>2009-01-30 19:19:17 +0000
committerGrant Gayed <ggayed>2009-01-30 19:19:17 +0000
commit5d24937b771810089684ca03e660e8eb90a5f7e2 (patch)
tree674218d9820f0b3868061349f2474fc1f04fbca6 /bundles/org.eclipse.swt/Eclipse SWT OLE Win32
parentddd9017ce8bae73701ac9682652f7f0bf7a3cd78 (diff)
downloadeclipse.platform.swt-5d24937b771810089684ca03e660e8eb90a5f7e2.tar.gz
eclipse.platform.swt-5d24937b771810089684ca03e660e8eb90a5f7e2.tar.xz
eclipse.platform.swt-5d24937b771810089684ca03e660e8eb90a5f7e2.zip
248400 - Backspace does not work flash files viewed in SWT browser when eclipse is minimised and restored
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT OLE Win32')
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleControlSite.java128
1 files changed, 65 insertions, 63 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleControlSite.java b/bundles/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleControlSite.java
index 7c71ede3dd..48213fd7a8 100755
--- a/bundles/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleControlSite.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT OLE Win32/win32/org/eclipse/swt/ole/win32/OleControlSite.java
@@ -64,10 +64,6 @@ public class OleControlSite extends OleClientSite
private Font font;
- // work around for IE destroying the caret
- static int SWT_RESTORECARET;
-
- static final String SHELL_PROG_ID = "Shell.Explorer"; //$NON-NLS-1$
/**
* Create an OleControlSite child widget using the OLE Document type associated with the
@@ -656,65 +652,71 @@ private int OnControlInfoChanged() {
}
return COM.S_OK;
}
-void onFocusIn(Event e) {
- String progID = getProgramID();
- if (progID == null) return;
- if (!progID.startsWith(SHELL_PROG_ID)) {
- super.onFocusIn(e);
- return;
- }
- if (objIOleInPlaceObject == null) return;
- doVerb(OLE.OLEIVERB_UIACTIVATE);
- if (isFocusControl()) return;
- int /*long*/[] phwnd = new int /*long*/[1];
- objIOleInPlaceObject.GetWindow(phwnd);
- if (phwnd[0] == 0) return;
- OS.SetFocus(phwnd[0]);
-}
-void onFocusOut(Event e) {
- if (objIOleInPlaceObject == null) return;
- String progID = getProgramID();
- if (progID == null) return;
- if (!progID.startsWith(SHELL_PROG_ID)) {
- super.onFocusOut(e);
- return;
- }
- /*
- * Bug in Windows. When IE7 loses focus and UIDeactivate()
- * is called, IE destroys the caret even though it is
- * no longer owned by IE. If focus has moved to a control
- * that shows a caret then the caret disappears. The fix
- * is to detect this case and restore the caret.
- */
- int threadId = OS.GetCurrentThreadId();
- GUITHREADINFO lpgui1 = new GUITHREADINFO();
- lpgui1.cbSize = GUITHREADINFO.sizeof;
- OS.GetGUIThreadInfo(threadId, lpgui1);
- objIOleInPlaceObject.UIDeactivate();
- if (lpgui1.hwndCaret != 0) {
- GUITHREADINFO lpgui2 = new GUITHREADINFO();
- lpgui2.cbSize = GUITHREADINFO.sizeof;
- OS.GetGUIThreadInfo(threadId, lpgui2);
- if (lpgui2.hwndCaret == 0 && lpgui1.hwndCaret == OS.GetFocus()) {
- if (SWT_RESTORECARET == 0) {
- SWT_RESTORECARET = OS.RegisterWindowMessage (new TCHAR (0, "SWT_RESTORECARET", true));
- }
- /*
- * If the caret was not restored by SWT, put it back using
- * the information from GUITHREADINFO. Note that this will
- * not be correct when the caret has a bitmap. There is no
- * API to query the bitmap that the caret is using.
- */
- if (OS.SendMessage (lpgui1.hwndCaret, SWT_RESTORECARET, 0, 0) == 0) {
- int width = lpgui1.right - lpgui1.left;
- int height = lpgui1.bottom - lpgui1.top;
- OS.CreateCaret (lpgui1.hwndCaret, 0, width, height);
- OS.SetCaretPos (lpgui1.left, lpgui1.top);
- OS.ShowCaret (lpgui1.hwndCaret);
- }
- }
- }
-}
+
+// The following is intentionally commented, it's not believed that
+// OLEIVERB_UIACTIVATE and UIDeactivate should be invoked for every
+// received focusIn and focusOut, respectively.
+//
+//void onFocusIn(Event e) {
+// String progID = getProgramID();
+// if (progID == null) return;
+// if (!progID.startsWith("Shell.Explorer")) {
+// super.onFocusIn(e);
+// return;
+// }
+// if (objIOleInPlaceObject == null) return;
+// doVerb(OLE.OLEIVERB_UIACTIVATE);
+// if (isFocusControl()) return;
+// int /*long*/[] phwnd = new int /*long*/[1];
+// objIOleInPlaceObject.GetWindow(phwnd);
+// if (phwnd[0] == 0) return;
+// OS.SetFocus(phwnd[0]);
+//}
+//void onFocusOut(Event e) {
+// if (objIOleInPlaceObject == null) return;
+// String progID = getProgramID();
+// if (progID == null) return;
+// if (!progID.startsWith("Shell.Explorer")) {
+// super.onFocusOut(e);
+// return;
+// }
+// /*
+// * Bug in Windows. When IE7 loses focus and UIDeactivate()
+// * is called, IE destroys the caret even though it is
+// * no longer owned by IE. If focus has moved to a control
+// * that shows a caret then the caret disappears. The fix
+// * is to detect this case and restore the caret.
+// */
+// int threadId = OS.GetCurrentThreadId();
+// GUITHREADINFO lpgui1 = new GUITHREADINFO();
+// lpgui1.cbSize = GUITHREADINFO.sizeof;
+// OS.GetGUIThreadInfo(threadId, lpgui1);
+// objIOleInPlaceObject.UIDeactivate();
+// if (lpgui1.hwndCaret != 0) {
+// GUITHREADINFO lpgui2 = new GUITHREADINFO();
+// lpgui2.cbSize = GUITHREADINFO.sizeof;
+// OS.GetGUIThreadInfo(threadId, lpgui2);
+// if (lpgui2.hwndCaret == 0 && lpgui1.hwndCaret == OS.GetFocus()) {
+// if (SWT_RESTORECARET == 0) {
+// SWT_RESTORECARET = OS.RegisterWindowMessage (new TCHAR (0, "SWT_RESTORECARET", true));
+// }
+// /*
+// * If the caret was not restored by SWT, put it back using
+// * the information from GUITHREADINFO. Note that this will
+// * not be correct when the caret has a bitmap. There is no
+// * API to query the bitmap that the caret is using.
+// */
+// if (OS.SendMessage (lpgui1.hwndCaret, SWT_RESTORECARET, 0, 0) == 0) {
+// int width = lpgui1.right - lpgui1.left;
+// int height = lpgui1.bottom - lpgui1.top;
+// OS.CreateCaret (lpgui1.hwndCaret, 0, width, height);
+// OS.SetCaretPos (lpgui1.left, lpgui1.top);
+// OS.ShowCaret (lpgui1.hwndCaret);
+// }
+// }
+// }
+//}
+
private int OnFocus(int fGotFocus) {
return COM.S_OK;
}