From 5c0f13f2392af54d4a954c1ab9b0b3d742adecab Mon Sep 17 00:00:00 2001 From: "jihye424.kim" Date: Wed, 9 Dec 2015 14:41:01 +0900 Subject: [PATCH] custom widget: ignore unpaired 'mouse up' event - bug: if select file with double click from file dialog, unexpected button will be clicked of emulator manager -- after double click event, mouse up event occurred in windows -- custom widget raise selection event when received mouse up event -- ubuntu, mac os does not happen - fix: match mouse down event with mouse up event -- if does not receive mouse down event, mouse up event will be thrown out Change-Id: Ie7b1f5f5feac227cfc0f3d62fc179d748e5ec14c Signed-off-by: jihye424.kim --- .../manager/ui/detail/item/template/CheckSubViewItem.java | 6 ++++++ src/org/tizen/emulator/manager/ui/list/TreeListView.java | 5 +++++ src/org/tizen/emulator/manager/ui/widgets/CustomSpinner.java | 4 ++++ src/org/tizen/emulator/manager/ui/widgets/ImageButton.java | 5 +++++ src/org/tizen/emulator/manager/ui/widgets/ImageCombo.java | 8 ++++++-- src/org/tizen/emulator/manager/ui/widgets/VMButton.java | 5 +++++ 6 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/org/tizen/emulator/manager/ui/detail/item/template/CheckSubViewItem.java b/src/org/tizen/emulator/manager/ui/detail/item/template/CheckSubViewItem.java index 15ca569..30ce063 100644 --- a/src/org/tizen/emulator/manager/ui/detail/item/template/CheckSubViewItem.java +++ b/src/org/tizen/emulator/manager/ui/detail/item/template/CheckSubViewItem.java @@ -351,6 +351,10 @@ public class CheckSubViewItem extends DetailSubViewItem { // label.setFocus(); // redraw(); } else if (event.type == SWT.MouseUp && titleLabelMouseEnable) { + if (clickedLabel != label) { + // ignore unpaired 'mouse up' event + return; + } if (labelRect.contains(event.x, event.y)) { if (clickedLabel == label) { label.redraw(); @@ -358,6 +362,8 @@ public class CheckSubViewItem extends DetailSubViewItem { label.notifyListeners(SWT.Selection, new Event()); //notifyListeners(SWT.DefaultSelection, new Event()); } + // reset label; + clickedLabel = null; } } else if (event.type == SWT.MouseEnter && titleLabelMouseEnable) { // label.setCursor(handCursor); diff --git a/src/org/tizen/emulator/manager/ui/list/TreeListView.java b/src/org/tizen/emulator/manager/ui/list/TreeListView.java index f7bf016..bdc54eb 100644 --- a/src/org/tizen/emulator/manager/ui/list/TreeListView.java +++ b/src/org/tizen/emulator/manager/ui/list/TreeListView.java @@ -134,6 +134,11 @@ public class TreeListView extends AbstractListView { @Override public void mouseUp(MouseEvent e) { + if (!isLaunchButton) { + // ignore unpaired 'mouse up' event + return; + } + if (vmsTree.getSelection() != null && vmsTree.getSelection().length > 0) { TreeItem item = vmsTree.getSelection()[0]; if (item.getData() instanceof PropertyContent) { diff --git a/src/org/tizen/emulator/manager/ui/widgets/CustomSpinner.java b/src/org/tizen/emulator/manager/ui/widgets/CustomSpinner.java index 8e61d6e..c578f64 100644 --- a/src/org/tizen/emulator/manager/ui/widgets/CustomSpinner.java +++ b/src/org/tizen/emulator/manager/ui/widgets/CustomSpinner.java @@ -333,6 +333,10 @@ public class CustomSpinner extends Composite { break; case SWT.MouseUp: + if (!isArrowPressed) { + // ignore unpaired 'mouse up' event + return; + } // Stop long press worker isArrowPressed = false; if (longPressWorker.isAlive()) { diff --git a/src/org/tizen/emulator/manager/ui/widgets/ImageButton.java b/src/org/tizen/emulator/manager/ui/widgets/ImageButton.java index d4e3d66..e8690d4 100644 --- a/src/org/tizen/emulator/manager/ui/widgets/ImageButton.java +++ b/src/org/tizen/emulator/manager/ui/widgets/ImageButton.java @@ -405,6 +405,11 @@ public class ImageButton extends Canvas { } redraw(); } else if (event.type == SWT.MouseUp) { + if (state != WSTATE.PUSH && state != WSTATE.SELECTED_PUSH) { + // mouse down -> mouse up + // ignore unpaired 'mouse up' event + return; + } Rectangle rect = button.getClientArea(); if (rect.contains(event.x, event.y)) { if (checkStyle(style, SWT.RADIO)) { diff --git a/src/org/tizen/emulator/manager/ui/widgets/ImageCombo.java b/src/org/tizen/emulator/manager/ui/widgets/ImageCombo.java index 995e3d1..4c8aba6 100644 --- a/src/org/tizen/emulator/manager/ui/widgets/ImageCombo.java +++ b/src/org/tizen/emulator/manager/ui/widgets/ImageCombo.java @@ -274,7 +274,7 @@ public class ImageCombo extends Canvas { case SWT.MouseHover: { if (!isOutOfBounds(event.x, event.y)) { - if ((event.stateMask & SWT.BUTTON1) != 0) { + if (event.button == 1) { // check mouse left button is pushed or not changeComboState(WSTATE.PUSH); } else { changeComboState(WSTATE.HOVER); @@ -286,6 +286,10 @@ public class ImageCombo extends Canvas { changeComboState(WSTATE.PUSH); break; case SWT.MouseUp: + if (state != WSTATE.PUSH) { + // ignore unpaired 'mouse up' event + return; + } changeComboState(WSTATE.HOVER); if (popup.isDispose()) { popup.open(); @@ -298,7 +302,7 @@ public class ImageCombo extends Canvas { if (isOutOfBounds(event.x, event.y)) { changeComboState(WSTATE.NORMAL); } else { - if ((event.stateMask & SWT.BUTTON1) != 0) { + if (event.button == 1) { // check mouse left button is pushed or not changeComboState(WSTATE.PUSH); } else { changeComboState(WSTATE.HOVER); diff --git a/src/org/tizen/emulator/manager/ui/widgets/VMButton.java b/src/org/tizen/emulator/manager/ui/widgets/VMButton.java index 6b974d2..36e2b35 100644 --- a/src/org/tizen/emulator/manager/ui/widgets/VMButton.java +++ b/src/org/tizen/emulator/manager/ui/widgets/VMButton.java @@ -379,6 +379,11 @@ public class VMButton extends ImageButton { } redraw(); } else if (event.type == SWT.MouseUp) { + if (state != WSTATE.PUSH && state != WSTATE.SELECTED_PUSH) { + // mouse down -> mouse up + // ignore unpaired 'mouse up' event + return; + } Rectangle rect = button.getClientArea(); if (rect.contains(event.x, event.y)) { notifyListeners(SWT.Selection, new Event()); -- 2.7.4