Skip to content

Commit 1cd3ab6

Browse files
committed
fix for click on menu <u> mnemonic not processing
1 parent 0f5729c commit 1cd3ab6

File tree

8 files changed

+32
-18
lines changed

8 files changed

+32
-18
lines changed
293 Bytes
Binary file not shown.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
20200123210716
1+
20200124055240
293 Bytes
Binary file not shown.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
20200123210716
1+
20200124055240
293 Bytes
Binary file not shown.

sources/net.sf.j2s.java.core/src/swingjs/jquery/j2sMenu.js

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
// J2SMenu.js from JSmolMenu.js
22
// Original version for JSmol Bob Hanson 2/17/2014
33
// author: Bob Hanson, hansonr@stolaf.edu
4-
// last edited 1/23/2019 -- fixes for mouse-down effector (mac) operation
5-
4+
// last edited 1/24/2020 = fix for <u> in text
65
// NOTE: If you change this file, then you need to touch and save JQueryUI.java, as only then
76
// will the transpiler copy this file to site/swingjs/j2s/swingjs/jquery/
87

@@ -94,12 +93,13 @@ try{
9493
var doCmd = function(trigger,me,t,n,why) {
9594
why || (why = "");
9695
var event = t;
96+
var target = (!t || !t.target ? null : $(t.target).closest(".ui-j2smenu-item")[0]);
9797
switch(trigger) {
9898
case "onoutn":
9999
me._closeMe();
100100
break;
101101
case "onmoven":
102-
if ($(t && t.target).hasClass("ui-j2smenu")) {
102+
if ($(target).hasClass("ui-j2smenu")) {
103103
// this is the most likely way we will leave, via a mousemove on the border
104104
me._closeMe();
105105
break;
@@ -111,7 +111,7 @@ try{
111111
// BH 2018
112112
// -- added stopPropagation
113113
// -- changed to mouseover from mouseenter, since we have children
114-
var a = e(t.target).closest("li")
114+
var a = e(target).closest("li")
115115
if (a.hasClass(".ui-state-focus"))
116116
return;
117117
if (!a.hasClass("j2s-popup-menu")) {
@@ -128,10 +128,8 @@ try{
128128
break;
129129
case "onrelease":
130130
case "onpress":
131-
// t.preventDefault();
132-
// break;
133131
case "onclick":
134-
var n=e(t.target).closest(".ui-j2smenu-item");
132+
var n=e(target).closest(".ui-j2smenu-item");
135133
if (n.has(".ui-state-disabled").length)
136134
return;
137135
if (trigger != "onclick")
@@ -144,8 +142,7 @@ try{
144142
me.element.trigger("setFocus",[!0]);
145143
me.active&&me.active.parents(".ui-j2smenu").length===1&&clearMe(me.timer, trigger);
146144
}
147-
doCmd("collapseAll", me, 0, 1);
148-
// doCmd("_hide", me, e(".ui-j2smenu"));
145+
doCmd("collapseAll", me, 0, 1);
149146
}
150147
break;
151148
case "clearClickOut":
@@ -166,8 +163,8 @@ try{
166163
doCmd("clearClickOut", me);
167164
return;
168165
}
169-
e(t.target).closest(".j2s-menuBar-menu").length == 0
170-
&& (e(t.target).closest(".ui-j2smenu").length||me.collapseAll(t));
166+
e(target).closest(".j2s-menuBar-menu").length == 0
167+
&& (e(target).closest(".ui-j2smenu").length||me.collapseAll(t));
171168
return;
172169
case "onleave":
173170
me._closeMe("onleave");
@@ -283,7 +280,7 @@ try{
283280
if ( me.closed
284281
//
285282
// || !n && (!someMenuOpen() ||
286-
// ((u=e(t&&t.target)).hasClass("ui-j2smenu-node") || u.hasClass("ui-j2smenu"))
283+
// ((u=e(t&&target)).hasClass("ui-j2smenu-node") || u.hasClass("ui-j2smenu"))
287284
// )
288285
//
289286
)
@@ -325,11 +322,12 @@ try{
325322
t = a;
326323
break;
327324
case "select":
328-
me.active=me.active||e(t.target).closest(".ui-j2smenu-item");
325+
me.active=me.active||e(target).closest(".ui-j2smenu-item");
329326
me.active.has(".ui-j2smenu").length||me.collapseAll(t,!0);
330327
me._trigger("select",t,{item:me.active});
331-
if (!t[0])
328+
if (!t[0]) {
332329
return;
330+
}
333331
break;
334332
case "refresh":
335333
n=me.options.icons.submenu;
@@ -375,7 +373,7 @@ try{
375373
}
376374

377375
var ui = me.activeMenu && me.activeMenu[0] && me.activeMenu[0]["data-ui"];
378-
ui && ui.processJ2SMenuCmd$OA([trigger,me,event,t,n,why]);
376+
ui && ui.processJ2SMenuCmd$OA([trigger,me,event,t,n,target,why]);
379377
}
380378

381379
$.widget("ui.j2smenu",{

sources/net.sf.j2s.java.core/src/swingjs/plaf/JSButtonUI.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,22 @@ protected void createButton() {
109109
setDataComponent(textNode); // needed for mac safari/chrome
110110
setEnabled(c.isEnabled());
111111
}
112+
113+
/**
114+
* We need to also set the data-component object for the mnemonic
115+
*/
116+
@Override
117+
protected DOMNode setJSText(DOMNode obj, String prop, String val) {
118+
DOMNode node = DOMNode.setAttr(obj, prop, val);
119+
if (val.indexOf("<u>") >= 0) {
120+
setDataComponent(DOMNode.firstChild(node));
121+
}
122+
return node;
123+
}
124+
112125

126+
127+
113128
/**
114129
*
115130
* @param type "_item" or "_menu" (unused)

sources/net.sf.j2s.java.core/src/swingjs/plaf/JSPopupMenuUI.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1155,7 +1155,8 @@ public static void processJ2SMenuCmd(Object[] data) {
11551155
Object n = data[4];
11561156
JQueryObject m = j2smenu.activeMenu;
11571157
String mid = (m == null ? null : m.attr("id"));
1158-
DOMNode base = (t == null ? null : t == e ? (DOMNode) DOMNode.getAttr(e, "target") : t.get(0));
1158+
DOMNode target = (DOMNode) data[5];
1159+
DOMNode base = (t == null ? null : target != null ? target : t == e ? (DOMNode) DOMNode.getAttr(e, "target") : t.get(0));
11591160
String id = (base == null ? null : (String) DOMNode.getAttr(base, "id"));
11601161
JComponent c = (base == null ? null : (JComponent) DOMNode.getAttr(base, "data-component"));
11611162
JSComponentUI tui = (base == null ? null : (JSComponentUI) DOMNode.getAttr(base, "data-ui"));

0 commit comments

Comments
 (0)