]> source.dussan.org Git - vaadin-framework.git/commit
V7: Improve VMenuBar click handling logic (#11362)
authorAnastasia Smirnova <anasmi@utu.fi>
Fri, 14 Dec 2018 09:13:01 +0000 (11:13 +0200)
committerOlli Tietäväinen <ollit@vaadin.com>
Fri, 14 Dec 2018 09:13:01 +0000 (11:13 +0200)
commitc9dc0d64ecade71574be9f494e7c5eec2d190ff5
treebf519bc14220053857f2a78116ec9fc3ff0bb620
parent89c9173052ebea22476dff07899f11bbd31136c3
V7: Improve VMenuBar click handling logic (#11362)

* Improve VMenuBar click handling logic

Backport to V7:
During `updateFromUIDL` inside MenuBarConnector we empty and re-instantiate the components of MenuBar. When we are modifying the Menubar from the BlurEventListener of another component, we ,by this, remove widgets, therefore clickEvent is not fired and the action of the MenuItem is not proceed as a result. (The BlurEvent is fired before the click event in the chain of events. )

To improve the situation, we catch onMouseDown event , which is fired before BlurEvent,by assigning mouseDown flag to true. Then if no click event has yet happened, we delay the execution of update inside `updateFromUIDL` by default 500 ms. Then if click event occurs, it proceeds normally. The time can be increased/decreased using setter.

There is no delay, if we are clicking on the MenuBar as usual or no Blur listener is set.

This change allows setting descriptions preserving the action from the MenuItem

(cherry picked from commit 22cc85c76f28a762685204911ad66f95bda2d296)

* Improve VMenuBar click handling logic

Add missing files from the first commit

Backported to V7:
(cherry picked from commit 22cc85c)
client/src/main/java/com/vaadin/client/ui/VMenuBar.java
client/src/main/java/com/vaadin/client/ui/menubar/MenuBarConnector.java
server/src/main/java/com/vaadin/ui/MenuBar.java
shared/src/main/java/com/vaadin/shared/ui/menubar/MenuBarState.java
uitest/src/main/java/com/vaadin/tests/components/menubar/MenuBarChangeFromEventListener.java [new file with mode: 0644]
uitest/src/test/java/com/vaadin/tests/components/menubar/MenuBarChangeFromEventListenerTest.java [new file with mode: 0644]