Bug 545874 - [Win32] Remove emulated Link widget code (regression fix)
Fix NPE in WM_GETDLGCODE for links without text.
Change-Id: Idd46512f44e8a5acc6d1fb4f891277923b85e088
Signed-off-by: Nikita Nemkin <nikita@nemkin.ru>
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Link.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Link.java
index dd4fea7..ac3355e 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Link.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Link.java
@@ -203,6 +203,8 @@
void createWidget () {
super.createWidget ();
text = "";
+ ids = new String[0];
+ mnemonics = new char[0];
}
@Override
@@ -270,12 +272,10 @@
@Override
boolean mnemonicHit (char key) {
- if (mnemonics != null) {
- char uckey = Character.toUpperCase (key);
- for (int i = 0; i < mnemonics.length; i++) {
- if (uckey == mnemonics[i]) {
- return setFocus () && setFocusItem (i);
- }
+ char uckey = Character.toUpperCase (key);
+ for (int i = 0; i < mnemonics.length; i++) {
+ if (uckey == mnemonics[i]) {
+ return setFocus () && setFocusItem (i);
}
}
return false;
@@ -283,12 +283,10 @@
@Override
boolean mnemonicMatch (char key) {
- if (mnemonics != null) {
- char uckey = Character.toUpperCase (key);
- for (int i = 0; i < mnemonics.length; i++) {
- if (uckey == mnemonics[i]) {
- return true;
- }
+ char uckey = Character.toUpperCase (key);
+ for (int i = 0; i < mnemonics.length; i++) {
+ if (uckey == mnemonics[i]) {
+ return true;
}
}
return false;
@@ -643,7 +641,7 @@
LRESULT WM_KILLFOCUS (long /*int*/ wParam, long /*int*/ lParam) {
int focusItem = getFocusItem();
LRESULT result = super.WM_KILLFOCUS(wParam, lParam);
- setFocusItem(focusItem);
+ if (focusItem != -1) setFocusItem(focusItem);
return result;
}