PopupMenuItem works, then doesn't
Added by Christian Meyer 7 days ago
Hi all,
I am about to get mad ...
I reboot my Computer, start the Server and selecting the Items in the PopupMenu works. The Dialogs are Created, the Terminal shows the request, also logs whats given in the handler.
Then I change a line within the handler, try again and now the selection of an Item does not trigger the handler.
Terminal shows the request, but no dialog is shown and also no logs from inside the handler.
Then on reboot it works again until I change something completely unrelated...
I don't even know where to start looking.
Sometimes the handler works after trying multiple times...
then it doen't again.
This is the Item create CodeThis is the Item create Code
//Report Item
auto item = addSlot->editMenu()->addItem(
Wt::WString::tr("Collection.Slot.Report.List")
);
// itemhandle was used to help connect both triggered and clicked at the same time for testing
auto itemHandle = [this, addSlot, slot](){
Wt::Dbo::Transaction t(*slot.session());
if(s_SetupRequest.isConnected()) // Signal
{
Wt::log("info") << "Collection" << ": requested Report Connected!";
s_SetupRequest(slot->getListPtr());
}
else
{ // Default handling of Item Click - Show Report in Dialog
auto dialog = addDialog(
Wt::WString::tr(
"Collection.Slot.Report.List"
).arg(
slot->getListPtr()->getName()
)
);
auto report = dialog->contents()->addNew<List::Report>(slot->getListPtr());
report->showHeader(false);
dialog->finished().connect([this, addSlot, dialog](){
// addSlot->editMenu()->select(-1); // tried this from an old forum entry after it started not triggering multiple times
removeDialog(dialog);
});
dialog->show();
Wt::log("info") << "Collection" << ": requested Report not Connected!";
}
};
// both triggered and clicked have the same result
item->triggered().connect(itemHandle);
// item->clicked().connect(itemHandle);
Just tested with Chrome and Firefox.
This worked fine for a while!
Every click triggered the desired action.
Then it started not wanting to trigger twice.
Now it dosn't trigger at all.
Showing the popupMenu on button click works always.
Although I had a problem with the default button->setMenu()
and used my own implementation.
(The popupMenu wouldn't close on blurred by default, unlike in the widget gallery)
Any help and tips where to look are highly anticipated.
I am almost done with this and ready to publish, but this is hopefully understandable a NoGo.
Replies (8)
RE: PopupMenuItem works, then doesn't - Added by Christian Meyer 6 days ago
this is coming through the request:
Dev-Tools Request after clicking Item when nothing happensDev-Tools Request after clicking Item when nothing happens
Wt._p_.response(1603361590);var j58=Wt4_11_4.$('o1kbq4eg'); // This is the PopupMenu
j58.style.display='none';
Wt4_11_4.$('o1kbq4eg').wtObj.setHidden(1);
var j59=Wt4_11_4.$('o1kbq4ee'); // this is the Button that activated it
Wt4_11_4.setHtml(j59,'<i class="bi bi-chevron-down"></i>',false);
Wt4_11_4.$('o1kbq4ee').classList.remove('active');
Dev-Tool Request when Dialog Shows as ExpectedDev-Tool Request when Dialog Shows as Expected
Wt._p_.response(3115086263);Wt4_11_4.WDialog = (function(t,e,i,o,s,n,l,y,f){e.wtObj=this;const p=this,d=e.querySelector(".dialog-layout"),a=t.WT;let r,x,h=-1,u=-1,c=-1,w=-1,g=!1,m=-1,b=-1,z=-1,S=-1;function M(){if(l){const i=a.pxself(e,"left"),o=a.pxself(e,"top");if(i!==h||o!==u){h=i;u=o;t.emit(e,l,h,u)}}}function v(i,o){if(!g&&(i!==c||o!==w)){c=i;w=o;y&&t.emit(e,y,c,w)}}function E(t){const i=t||window.event,o=a.pageCoordinates(i),l=a.windowCoordinates(i),y=a.windowSize();if(l.x>0&&l.x<y.x&&l.y>0&&l.y<y.y){s=n=!1;if("auto"===e.style.right||""===e.style.right){e.style.left=a.px(e,"left")+o.x-r+"px";e.style.right=""}else{e.style.right=a.px(e,"right")+r-o.x+"px";e.style.left="auto"}if("auto"===e.style.bottom||""===e.style.bottom){e.style.top=a.px(e,"top")+o.y-x+"px";e.style.bottom=""}else{e.style.bottom=a.px(e,"bottom")+x-o.y+"px";e.style.top="auto"}r=o.x;x=o.y}}if(i&&o){i.onmousedown=function(t){const e=t||window.event;a.capture(i);const o=a.pageCoordinates(e);r=o.x;x=o.y;i.onmousemove=E};i.onmouseup=function(t){i.onmousemove=null;M();a.capture(null)}}this.centerDialog=function(){const t=a.parsePct(a.css(e,"max-width"),0),o=a.parsePct(a.css(e,"max-height"),0);if(0!==t){const e=a.windowSize(),i=d.firstChild.wtLayout;i&&i.setMaxSize&&i.setMaxSize(e.x*t/100,e.y*o/100)}if(null!==e.parentNode){if("none"!==e.style.display){const t=a.windowSize(),i=e.offsetWidth,o=e.offsetHeight;-1!==m&&(s=!0);-1!==b&&(n=!0);if(s){e.style.left=Math.round((t.x-i)/2+(a.isIE6?document.documentElement.scrollLeft:0))+"px";e.style.marginLeft="0px"}if(n){e.style.top=Math.round((t.y-o)/2+(a.isIE6?document.documentElement.scrollTop:0))+"px";e.style.marginTop="0px"}""!==e.style.position&&(e.style.visibility="visible");M()}}else e=i=null};function C(){return a.windowSize().x*m/100}function D(){return a.windowSize().y*b/100}this.bringToFront=function(){const i=a.maxZIndex();if(i>e.style.zIndex){const o=i+1;e.style.zIndex=o;t.emit(e,f,o)}};this.onresize=function(i,o,l){s=n=!1;g=!l;!function(t,i,o,s){if(s){if(i>0){if(!a.boxSizing(d)){i-=a.px(d,"border-left-width");i-=a.px(d,"border-right-width");i-=a.px(d,"padding-left");i-=a.px(d,"padding-right")}d.style.width=`${i}px`}if(o>0){if(!a.boxSizing(d)){o-=a.px(d,"border-top-width");o-=a.px(d,"border-bottom-width");o-=a.px(d,"padding-top");o-=a.px(d,"padding-bottom")}d.style.height=`${o}px`}}p.centerDialog();e.wtResize&&e.wtResize(e,i,o,!0)}(0,i,o,!0);const y=d.firstChild.wtLayout;y&&y.setMaxSize&&y.setMaxSize(0,0);t.layouts2&&t.layouts2.scheduleAdjust();l&&v(i,o)};d.wtResize=function(t,i,o,s){""===e.style.position&&(e.style.position=a.isIE6?"absolute":"fixed");e.style.visibility="visible";b=a.parsePct(e.style.height,b);m=a.parsePct(e.style.width,m);if(s){e.style.height=Math.max(0,o)+"px";e.style.width=Math.max(0,i)+"px"}v(i,o);p.centerDialog();const n=-1!==m,l=-1!==b;if(n&&l){z=C();S=D();p.onresize(z,S,!0)}else if(n){z=C();p.onresize(z,o,!0)}else if(l){S=D();p.onresize(i,S,!0)}};e.wtPosition=function(){p.centerDialog();t.layouts2&&t.layouts2.adjust()};""!==e.style.width&&(a.parsePx(e.style.width)>0?d.style.width=e.style.width:d.style.width=e.offsetWidth+"px");""!==e.style.height&&(a.parsePx(e.style.height)>0?d.style.height=e.style.height:d.style.height=e.offsetHeight+"px");p.centerDialog()});
Wt4_11_4.FlexLayout = (function(s,e){const t=s.WT;setTimeout((function(){const s=t.getElement(e);if(s)for(const e of s.childNodes){if("none"===e.style.display||e.classList.contains("out")||"resize-sensor"===e.className)continue;const s=t.css(e,"overflow");"visible"!==s&&""!==s||(e.style.overflow="hidden")}}),0);this.adjust=function(){setTimeout((function(){const s=t.getElement(e);if(!s)return;const o=s.childNodes;let n=0;for(const s of o){if("none"===s.style.display||s.classList.contains("out")||"resize-sensor"===s.className)continue;if("0"===s.getAttribute("flg"))continue;const e=t.css(s,"flex-grow");n+=parseFloat(e)}for(const s of o){if("none"===s.style.display||s.classList.contains("out")||"resize-sensor"===s.className)continue;s.resizeSensor&&s.resizeSensor.trigger();let e;if(0===n)e=1;else{if("0"===s.getAttribute("flg"))e=0;else{e=t.css(s,"flex-grow")}}s.style.flexGrow=e}}),0)}});
Wt4_11_4.WPopupWidget = (function(e,n,t,i,o){n.wtPopup=this;const s=this,u=e.WT;let c=null,d=t,l=i,r=null,h=null,a=null;function f(){if(u.isIOS){document.addEventListener("touchstart",p);document.addEventListener("touchend",m)}else document.addEventListener("click",v)}function p(e){const n=e.originalEvent.touches;r=n.length>1?null:{x:n[0].screenX,y:n[0].screenY}}function m(e){if(r){const n=e.originalEvent.changedTouches[0];Math.abs(r.x-n.screenX)<20&&Math.abs(r.y-n.screenY)<20&&v(e)}}function v(e){let t=u.target(e);t===document&&null!==u.WPopupWidget.popupClicked&&(t=u.WPopupWidget.popupClicked);(function(e,n){if(e===n)return!0;for(n=n.parentNode;n;n=n.parentNode)if(e===n)return!0;return!1})(n,t)||s.hide()}this.bindShow=function(e){h=e};this.bindHide=function(e){a=e};this.shown=function(){d&&setTimeout((function(){f()}),0);h&&h()};this.show=function(t,i,o=!0,s=!0){if(""!==n.style.display){n.style.display="";t&&u.positionAtWidget(n.id,t.id,i,!1,o,s);e.emit(n,"shown")}};this.hidden=function(){a&&a();d&&function(){if(u.isIOS){document.removeEventListener("touchstart",p);document.removeEventListener("touchend",m)}else document.removeEventListener("click",v)}()};this.hide=function(){"none"!==n.style.display&&(n.style.display="none");e.emit(n,"hidden");s.hidden()};this.setTransient=function(e,t){d=e;l=t;d&&"none"!==n.style.display&&setTimeout((function(){f()}),0)};n.addEventListener("mouseleave",(function(){clearTimeout(c);l>0&&(c=setTimeout((function(){s.hide()}),l))}));n.addEventListener("mouseenter",(function(){clearTimeout(c)}));o&&this.shown()});
Wt4_11_4.addCss('div.Wt-dialog','left: 0px; top: 0px;');
var j137=Wt4_11_4.$('o1kbq4fe');
var j138=document.createElement('div');j137.appendChild(j138);
j138.setAttribute('id', 'o1kbq4ji');
j138.className='Wt-popup modal Wt-dialog';
j138.style.position='fixed';
j138.style.zIndex='1100';
j138.style.marginTop='0.0px';
j138.style.marginRight='0.0px';
j138.style.marginBottom='0.0px';
j138.style.marginLeft='0.0px';
function f139(event) { var e=event||window.event,o=this;if(o.classList.contains('disabled')){Wt4_11_4.cancelEvent(e);return;}if(o.classList.contains('Wt-no-default')){e.preventDefault();}(function(o,e) { if (Wt4_11_4.WPopupWidget && o.wtPopup) {Wt4_11_4.WPopupWidget.popupClicked = o;document.dispatchEvent(new MouseEvent('click', e));Wt4_11_4.WPopupWidget.popupClicked = null; }})(o,e);Wt4_11_4.cancelEvent(e,0x1);}
j138.onclick=f139;
function f140(event) { var e=event||window.event,o=this;if(e.keyCode && (e.keyCode == 27)){Wt._p_.update(o,'s18a',e,true);}}
j138.onkeydown=f140;
Wt4_11_4.setHtml(j138,'\n \n <div id="o1kbq4jl" class="modal-content dialog-layout movable" style="max-width:999999.0px;display:flex;flex-flow:column;-moz-flex-flow:column;"><div id="o1kbq4jo" flg="0" class="modal-header" style="flex:0 0 auto;-moz-flex:0 0 auto;"><div id="o1kbq4jp">\n <h4 class="modal-title">Report for: Release Steps</h4>\n </div><button id="o1kbq4jt" type="button" class="btn-close btn"></button></div><div id="o1kbq4jq" class="modal-body" style="overflow-x:visible;overflow-y:auto;flex:1 1 auto;-moz-flex:1 1 auto;"><div id="o1kbq4ju">\n <div class="card">\n \n <div class="card-body"> /*Shortened HTML*/ \n </div>\n</div></div>\n </div>\n </div>\n</div></div></div>\n ');
new Wt4_11_4.WDialog(Wt,Wt4_11_4.$('o1kbq4ji'),Wt4_11_4.$('o1kbq4jo'),1,1,1,null,null,"zIndexChanged");
setTimeout(function() {Wt._p_.updateGlobal('o1kbq4jl') }, 0);
try {var ae=document.activeElement;if (ae && ae.blur && ae.nodeName != 'BODY') {document.activeElement.blur();}} catch (e) { };
new Wt4_11_4.WPopupWidget(Wt,Wt4_11_4.$('o1kbq4ji'),false,0,true);
var j141=document.createElement('div');j137.appendChild(j141);
j141.setAttribute('id', 'o1kbq4ls');
j141.setAttribute('data-object-name','dialog-cover');
j141.className='Wt-popup modal-backdrop in';
j141.style.cssText='opacity:0.5';
j141.style.zIndex='1099';
Wt4_11_4.$('o1kbq4jt').onclick = function() {var e=event||window.event,o=this;if(o.classList.contains('disabled')){Wt4_11_4.cancelEvent(e);return;}if(o.classList.contains('Wt-no-default')){e.preventDefault();}Wt._p_.update(o,'s140',e,true);;};
Wt4_11_4.$('o1kbq4lr').onclick = function() {var e=event||window.event,o=this;if(o.classList.contains('disabled')){Wt4_11_4.cancelEvent(e);return;}if(o.classList.contains('Wt-no-default')){e.preventDefault();}Wt._p_.update(o,'s188',e,true);;};
I shortened the HTML Output for the internal Dialog, but kept the js intact.
There is a clear difference
And Trying to open the Dialog in the first Place here is the log on the Server
Server LogServer Log
[2025-Jun-11 18:40:35.346] 14725 - [access] "wthttp: ::ffff:172.19.0.1 POST /todo?wtd=c7LGeNClnSLpYcwt HTTP/1.1 200 920" //Item Selected
[2025-Jun-11 18:40:35.346] 14725 - [info] "WebRequest: took 0.854 ms"
[2025-Jun-11 18:40:36.324] 14725 - [access] "wthttp: ::ffff:172.19.0.1 POST /todo?wtd=c7LGeNClnSLpYcwt HTTP/1.1 200 1208" //Item Selected
[2025-Jun-11 18:40:36.324] 14725 - [info] "WebRequest: took 1.301 ms"
[2025-Jun-11 18:40:37.212] 14725 - [access] "wthttp: ::ffff:172.19.0.1 POST /todo?wtd=c7LGeNClnSLpYcwt HTTP/1.1 200 205" //Item Selected
[2025-Jun-11 18:40:37.212] 14725 - [info] "WebRequest: took 0.78 ms"
[2025-Jun-11 18:40:38.596] 14725 - [access] "wthttp: ::ffff:172.19.0.1 POST /todo?wtd=c7LGeNClnSLpYcwt HTTP/1.1 200 231" //Item Selected
[2025-Jun-11 18:40:38.596] 14725 - [info] "WebRequest: took 0.812 ms"
[2025-Jun-11 18:40:39.432] 14725 - [access] "wthttp: ::ffff:172.19.0.1 POST /todo?wtd=c7LGeNClnSLpYcwt HTTP/1.1 200 206" //Item Selected
[2025-Jun-11 18:40:39.432] 14725 - [info] "WebRequest: took 1.287 ms"
[2025-Jun-11 18:40:40.336] 14725 - [access] "wthttp: ::ffff:172.19.0.1 POST /todo?wtd=c7LGeNClnSLpYcwt HTTP/1.1 200 231" //Item Selected
[2025-Jun-11 18:40:40.336] 14725 - [info] "WebRequest: took 0.882 ms"
[2025-Jun-11 18:40:40.874] 14725 - [access] "wthttp: ::ffff:172.19.0.1 POST /todo?wtd=c7LGeNClnSLpYcwt HTTP/1.1 200 205" //Item Selected
[2025-Jun-11 18:40:40.874] 14725 - [info] "WebRequest: took 0.858 ms"
[2025-Jun-11 18:40:41.506] 14725 - [access] "wthttp: ::ffff:172.19.0.1 POST /todo?wtd=c7LGeNClnSLpYcwt HTTP/1.1 200 231" //Item Selected
[2025-Jun-11 18:40:41.506] 14725 - [info] "WebRequest: took 0.873 ms"
[2025-Jun-11 18:40:41.932] 14725 - [access] "wthttp: ::ffff:172.19.0.1 POST /todo?wtd=c7LGeNClnSLpYcwt HTTP/1.1 200 206" //Item Selected
[2025-Jun-11 18:40:41.932] 14725 - [info] "WebRequest: took 0.776 ms"
[2025-Jun-11 18:40:41.942] 14725 [/todo c7LGeNClnSLpYcwt] [info] "Item Report clicked running ItemHandle"
[2025-Jun-11 18:40:41.942] 14725 [/todo c7LGeNClnSLpYcwt] [debug] "App:TopToDo:addDialog()"
[2025-Jun-11 18:40:41.947] 14725 [/todo c7LGeNClnSLpYcwt] [info] "Collection: requested Report not Connected!"
[2025-Jun-11 18:40:41.947] 14725 [/todo c7LGeNClnSLpYcwt] [info] "Collection: itemHandle Report Called!"
[2025-Jun-11 18:40:41.960] 14725 - [access] "wthttp: ::ffff:172.19.0.1 POST /todo?wtd=c7LGeNClnSLpYcwt HTTP/1.1 200 4489" //Item Selected
[2025-Jun-11 18:40:41.960] 14725 - [info] "WebRequest: took 18.257 ms"
[2025-Jun-11 18:45:33.824] 14725 - [access] "wthttp: ::ffff:172.19.0.1 POST /todo?wtd=c7LGeNClnSLpYcwt HTTP/1.1 200 48" // Dialog Closed
[2025-Jun-11 18:45:33.824] 14725 - [info] "WebRequest: took 0.571 ms"
Closing the Dialog returns this Code:
Wt._p_.response(3115086265);Wt4_11_4.remove('o1kbq4ls');Wt4_11_4.remove('o1kbq4ji');setTimeout(function() {Wt._p_.updateGlobal(null) });
Wt._p_.setFormObjects(['o1kbq4gd','o1kbq4h9','o1kbq4hc']);
Is there anything that comes to mind why this would make sense?
[SOLVED]: PopupMenuItem works, then doesn't - Added by Christian Meyer 6 days ago
On Desktop (Same Machine) with Firefox, Chrome and Brave the Signal is not handled: Dialog not showing.
On Mobile Chrome: Dialogs show up perfectly
On Desktop Opera, Dialogs also show up as wanted and on every try.
All tested with the same running executable.
But then After Consulting with AI a possible problem could be a timing missmatch.
Apparently my Implementation of the triggering PopupMenu button used the blurred()
Signal to close the popupmenu and update the button style.
This aparently closed the Menu to fast for the click to reach the menuitem.
The Solution was to add a singleshot Timer of 1ms to the blurred event that then updated the button and closed the menu.
Now it works as expected
I just need to revisit the button with the popupmenu.
the current implementation has its drawbacks as well ... in some edgecases I was made aware of with the workaround.
I will check the default implementation again, maybe it just works now ...
Thank you for reading, hopefully this helps someone someday
Cheers
Christian
RE: PopupMenuItem works, then doesn't - Added by Matthias Van Ceulebroeck 6 days ago
Hey Christian,
that sounds like a very annoying issue, especially since it's not reliably reproducible (but seemingly random).
I don't have a intimate knowledge of the blur
event, but I suspect you encountered a case where an event did not bubble.
I can see that for a WSuggestionPopup
, we use the blur event, to hide the dropdown (popup), with a delay in JS (using setTimeout()
). That makes me suspect there can be timing related issues with blur
itself.
Is there a specific reason you are using blur
over WPopupMenu::aboutToHide() or WPopupMenu::triggered()?
Best,
Matthias
RE: PopupMenuItem works, then doesn't - Added by Christian Meyer 6 days ago
Hi Matthias,
aboutToHide()
works as well, even better it does not have the edge case that I introduced.
One reason not to use (allthough I did not explicitly test it) was the language in the description of the function.
"Signal emitted when the popup is hidden."
But it does not say how that comes to be.
(After Seletion, after clicking out, navigating awai ...)
I had trouble earlier that the implementation with button->setMenu()
did not hide the popup when opening a new tab in a tabbed widget. The popup would still float about and wouldn't close.
That is one of the reasons.
triggered()
I did not use because it seems that would never trigger if nothing would be selected.
And I want the menu to close when its opened, but nothing selected, and navigated away from the view.
blur()
worked as expected for a long time before it started to show these symptoms and randomness.
RE: PopupMenuItem works, then doesn't - Added by Matthias Van Ceulebroeck 6 days ago
Hey Christian,
did the issue with the popup not closing arise when the button on which the popup appeared was inside the tab widget, or outside?
In both cases is should hide of course, first by dom tree visibility (although we handle popups a little different, but it ought to be consistent), or second by losing focus.
RE: PopupMenuItem works, then doesn't - Added by Christian Meyer 5 days ago
I just tested it with setMenu()
The Button is bound to a template. This Template is repeated on the first Page of a WStackedWidget
. The whole templated Widget reacts to a clicked()
-Event.
The TemplateThe Template
<div class="card">
<div class="card-header d-flex">
<a href="#" class="me-auto align-self-center"> <!-- just make it look like a Link, the whole card reacts to clicked -->
${txt_Title}
</a>
${btn_Menu class="ms-auto btn btn-outline-secondary"} <!-- small button to the right, to open and close the popupmenu -->
</div>
<div class="card-body text-center">
${txt_Body class="card-text"}
</div>
${card_Footer class="class-footer"}
</div>
The click()
triggers the creation of a new closable Item in a WMenu
that is connected to the WStackedWidget
and changes to it.
I now bound the PopupMenu
to the button with setMenu()
and the only interaction I can do with the Button, is open
the PopupMenu.
Clicking away, without selecting an Item does not hide the PopupMenu.
But I also would like to be able to close the popup with a click on the button, or when i do not select an item and click somewhere else.
As the button is nested in a Widget that reacts to clicked()
I had to set btn_Menu->clicked().preventPropagation();
.
Because of that I think I build the other Implementation:
Button Checked variantButton Checked variant
Widget::Widget()
{
btn_Menu = bindNew<Wt::WPushButton>("btn_Menu");
btn_Menu->setCheckable(true);
btn_Menu->setTextFormat(Wt::TextFormat::XHTML);
btn_Menu->setText("<i class=\"bi bi-chevron-down\"></i>");
menu_Edit = addChild(std::make_unique<Wt::WPopupMenu>());
btn_Menu->clicked().preventPropagation();
btn_Menu->clicked().connect(this, &Widget::updateMenuButton);
menu_Edit->aboutToHide().connect([this](){
btn_Menu->setUnChecked();
updateMenuButton();
});
}
void Widget::updateMenuButton()
{
if(btn_Menu->isChecked())
{
btn_Menu->setText("<i class=\"bi bi-chevron-up\"></i>");
menu_Edit->popup(btn_Menu, Wt::Orientation::Vertical);
}
else
{
btn_Menu->setText("<i class=\"bi bi-chevron-down\"></i>");
menu_Edit->setHidden(true);
}
}
With this I can Open and Close the Popup on the button click.
Closing it with blurred()
worked a while as laid out before ...
Maybe it's because of the event propagation prevention that the default functionality does not work.
I am somehow surprised that the aboutToHide Signal works when the button or the Popup loses Focus.
And it doesn't with the default way of setMenu
.
Hope this helps to track it down ...
RE: PopupMenuItem works, then doesn't - Added by Christian Meyer 5 days ago
Returning Everything, and me saying I am surprised -> had it coming
popup does not hide on lost focus anymore!
Now this error showed up in the commandline
Uncaught TypeError: e.originalEvent is undefinedUncaught TypeError: e.originalEvent is undefined
XHRPOST
http://localhost:8090/todo?wtd=Y51xMJVmiIxZLV0q
[HTTP/1.1 200 OK 13ms]
Uncaught TypeError: e.originalEvent is undefined
y http://localhost:8090/todo?wtd=z7kPlclwsvuqFRoD&sid=266601055&scrW=660&scrH=600&tz=120&tzS=Europe/Berlin&htmlHistory=true&deployPath=/todo&request=script&rand=3662246812 line 3050 > eval:1
setHidden http://localhost:8090/todo?wtd=z7kPlclwsvuqFRoD&sid=266601055&scrW=660&scrH=600&tz=120&tzS=Europe/Berlin&htmlHistory=true&deployPath=/todo&request=script&rand=3662246812 line 3050 > eval:1
setHidden http://localhost:8090/todo?wtd=z7kPlclwsvuqFRoD&sid=266601055&scrW=660&scrH=600&tz=120&tzS=Europe/Berlin&htmlHistory=true&deployPath=/todo&request=script&rand=3662246812 line 3050 > eval:1
setTimeout handler*Wt4_11_4.WPopupMenu/this.setHidden http://localhost:8090/todo?wtd=z7kPlclwsvuqFRoD&sid=266601055&scrW=660&scrH=600&tz=120&tzS=Europe/Berlin&htmlHistory=true&deployPath=/todo&request=script&rand=3662246812 line 3050 > eval:1
todo:1:2441
Uncaught TypeError: e.originalEvent is undefined
y http://localhost:8090/todo?wtd=z7kPlclwsvuqFRoD&sid=266601055&scrW=660&scrH=600&tz=120&tzS=Europe/Berlin&htmlHistory=true&deployPath=/todo&request=script&rand=3662246812 line 3050 > eval:1
setHidden http://localhost:8090/todo?wtd=z7kPlclwsvuqFRoD&sid=266601055&scrW=660&scrH=600&tz=120&tzS=Europe/Berlin&htmlHistory=true&deployPath=/todo&request=script&rand=3662246812 line 3050 > eval:1
setHidden http://localhost:8090/todo?wtd=z7kPlclwsvuqFRoD&sid=266601055&scrW=660&scrH=600&tz=120&tzS=Europe/Berlin&htmlHistory=true&deployPath=/todo&request=script&rand=3662246812 line 3050 > eval:1
setTimeout handler*Wt4_11_4.WPopupMenu/this.setHidden http://localhost:8090/todo?wtd=z7kPlclwsvuqFRoD&sid=266601055&scrW=660&scrH=600&tz=120&tzS=Europe/Berlin&htmlHistory=true&deployPath=/todo&request=script&rand=3662246812 line 3050 > eval:1
This error is triggered when I close the popup, or when I click somewhere when its open and is fired as long as the popup is open.
propably the other reason to use the blurred signal ;)
RE: PopupMenuItem works, then doesn't - Added by Matthias Van Ceulebroeck about 16 hours ago
I'll ping this to remind myself to take a look at this later.
I'm not all too sure how much we can do about the propagation itself. But the TypeError
definitely should NOT occur.