Support Article
Pressing CTRL+ALT+DEL closes the active tab
SA-12312
Summary
When an item (rule or work object) is loaded in a tab, either in the designer studio or an end-user portal, and CTRL+ALT+DEL is pressed to lock the screen, then the item is getting closed. Sometimes this will only happen after the actions menu is opened, but sometimes it can occur as soon as the item is loaded. This has been shown to happen in multiple 7.1.5 environments, but does not appear to happen in a 7.1.7 or 7.1.8 environment.
On the 7.1.5 environment, this has been shown to occur on IE8, IE9 and Chrome.
Error Messages
No Error Message.
Steps to Reproduce
Open a work item in an end-user portal, or a rule such as an activity in the designer studio. Press the actions menu. Press CTRL+ALT+DEL to lock the screen. On unlocking the screen, the work item tab will be closed.
Root Cause
The root cause of this problem is a defect in Pegasystems’ code/rules.
Till ML5 the close event is applied on ctrl+Alt+Del which is then changed to Alt+Del in ML6
Resolution
This issue is resolved in ML6
For ML5 and below it can be fixed through the following local change:
1. Save the userworkform HTML Fragment rule in applcation ruleset.
2. copy the below code into userworkform
<script>
pega.u.d.tabContentAccessibilityHandler = function(ev){
var AccessKeyMap = pega.ui.accessibility.AccessKeyMap;
var tabObj = arguments[1], tabPos = "Top",
liElement = tabObj.get("element");
var pegaTabbedDiv = liElement.parentElement;
while (pegaTabbedDiv && pegaTabbedDiv.id.indexOf("PEGA_TABBED") < 0) {
pegaTabbedDiv = pegaTabbedDiv.parentElement;
}
if (pegaTabbedDiv != null) {
tabPos = pegaTabbedDiv.getAttribute("data-pos");
}
if (tabPos == "" && $("body").hasClass("screen-layout-body")) {
pegaTabbedDiv = $(".dc-main").children().eq(0)[0];
if (pegaTabbedDiv && pegaTabbedDiv.id.indexOf("PEGA_TABBED") >= 0) {
tabPos = pegaTabbedDiv.getAttribute("data-pos");
}
}
switch (ev.type) {
case 'keyup':
if (ev[AccessKeyMap.CLOSE_TAB.modifier1]
&& !ev['ctrlKey']
&& AccessKeyMap.CLOSE_TAB.keyCode == ev.keyCode
&& tabObj.attribs && tabObj.attribs.close == 'yes') {
pega.u.d.doClose.call(pega.u.d, arguments[0]);
} else if (ev[AccessKeyMap.PREVIOUS_TAB_CONTENT.modifier1] && AccessKeyMap.PREVIOUS_TAB_CONTENT.keyCode == ev.keyCode) {
pega.util.Event.preventDefault(ev); // For handling in FF and Chrome.
pega.util.Event.stopPropagation(ev);
var prevLiElement = $(liElement).prev();
if (prevLiElement.length != 0) {
prevLiElement[0].focus();
prevLiElement[0].click();
} else if (prevLiElement.length == 0) {
if (tabPos == "Top") {
$(liElement).parent().children().eq(-2)[0].click();
} else {
$(liElement).parent().children().eq(-1)[0].click();
}
}
} else if (ev[AccessKeyMap.NEXT_TAB_CONTENT.modifier1] && AccessKeyMap.NEXT_TAB_CONTENT.keyCode == ev.keyCode) {
pega.util.Event.preventDefault(ev); // For handling in FF and Chrome.
pega.util.Event.stopPropagation(ev);
var nextLiElement = $(liElement).next();
if (nextLiElement.length > 0 && nextLiElement[0].id != "") {
nextLiElement[0].focus();
nextLiElement[0].click();
} else {
$(liElement).parent().children().eq(0)[0].click();
}
}
break;
}
}
</script>
Published July 17, 2015 - Updated October 8, 2020
Have a question? Get answers now.
Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.