tasks:fix dolphin context menu with plasma 5.25

--update context menu code in order to be relevant with
plasma 5.25
pull/24/head
Michail Vourlakos 3 years ago
parent bef155238a
commit 48a60c6268

@ -97,42 +97,30 @@ PlasmaComponents.ContextMenu {
} }
function loadDynamicLaunchActions(launcherUrl) { function loadDynamicLaunchActions(launcherUrl) {
var sections = []; var sections = [
{
//From Plasma 5.10 and frameworks 5.34, places are also supported title: i18n("Places"),
if (LatteCore.Environment.frameworksVersion >= 336384 group: "places",
&& (typeof backend.placesActions === "function")) { actions: backend.placesActions(launcherUrl, showAllPlaces, menu)
sections = [ },
{ {
title: i18n("Places"), title: i18n("Recent Files"),
group: "places", group: "recents",
actions: backend.placesActions(launcherUrl, showAllPlaces, menu) actions: backend.recentDocumentActions(launcherUrl, menu)
}, },
{ {
title: i18n("Recent Documents"), title: i18n("Actions"),
group: "recents", group: "actions",
actions: backend.recentDocumentActions(launcherUrl, menu) actions: backend.jumpListActions(launcherUrl, menu)
}, }
{ ]
title: i18n("Actions"),
group: "actions", // C++ can override section heading by returning a QString as first action
actions: backend.jumpListActions(launcherUrl, menu) sections.forEach((section) => {
} if (typeof section.actions[0] === "string") {
]; section.title = section.actions.shift(); // take first
} else { }
sections = [ });
{
title: i18n("Recent Documents"),
group: "recents",
actions: backend.recentDocumentActions(launcherUrl, menu)
},
{
title: i18n("Actions"),
group: "actions",
actions: backend.jumpListActions(launcherUrl, menu)
}
];
}
// QMenu does not limit its width automatically. Even if we set a maximumWidth // QMenu does not limit its width automatically. Even if we set a maximumWidth
// it would just cut off text rather than eliding. So we do this manually. // it would just cut off text rather than eliding. So we do this manually.
@ -140,13 +128,18 @@ PlasmaComponents.ContextMenu {
var maximumWidth = theme.mSize(theme.defaultFont).width * 22; var maximumWidth = theme.mSize(theme.defaultFont).width * 22;
sections.forEach(function (section) { sections.forEach(function (section) {
// Always show the "Actions:" header, since we visually merge
// This section with the one beneath it that shows universal actions
if (section["actions"].length > 0 || section["group"] == "actions") { if (section["actions"].length > 0 || section["group"] == "actions") {
var sectionHeader = newMenuItem(menu); // Don't add the "Actions" header if the menu has nothing but actions
sectionHeader.text = section["title"]; // in it, because then it's redundant (all menus have actions)
sectionHeader.section = true; if (
menu.addMenuItem(sectionHeader, startNewInstanceItem); (section["group"] != "actions") ||
(section["group"] == "actions" && (sections[0]["actions"].length > 0 || sections[1]["actions"].length > 0))
) {
var sectionHeader = newMenuItem(menu);
sectionHeader.text = section["title"];
sectionHeader.section = true;
menu.addMenuItem(sectionHeader, startNewInstanceItem);
}
} }
for (var i = 0; i < section["actions"].length; ++i) { for (var i = 0; i < section["actions"].length; ++i) {
@ -165,7 +158,7 @@ PlasmaComponents.ContextMenu {
} }
if (elided) { if (elided) {
item.action.text += "..."; item.action.text += "";
} }
menu.addMenuItem(item, startNewInstanceItem); menu.addMenuItem(item, startNewInstanceItem);
@ -380,11 +373,11 @@ PlasmaComponents.ContextMenu {
var menuItem = menu.newMenuItem(virtualDesktopsMenu); var menuItem = menu.newMenuItem(virtualDesktopsMenu);
menuItem.text = i18n("Move &To Current Desktop"); menuItem.text = i18n("Move &To Current Desktop");
menuItem.enabled = Qt.binding(function() { menuItem.enabled = Qt.binding(function() {
var vds = menu.get(atm.VirtualDesktops); var vds = menu.get(atm.VirtualDesktops);
return menu.visualParent && (vds !== undefined) && vds.indexOf(virtualDesktopInfo.currentDesktop) == -1; return menu.visualParent && (vds !== undefined) && vds.indexOf(virtualDesktopInfo.currentDesktop) == -1;
}); });
menuItem.clicked.connect(function() { menuItem.clicked.connect(function() {
tasksModel.requestVirtualDesktops(menu.modelIndex, [virtualDesktopInfo.currentDesktop]); tasksModel.requestVirtualDesktops(menu.modelIndex, [virtualDesktopInfo.currentDesktop]);
}); });
menuItem = menu.newMenuItem(virtualDesktopsMenu); menuItem = menu.newMenuItem(virtualDesktopsMenu);
@ -394,7 +387,7 @@ PlasmaComponents.ContextMenu {
return menu.visualParent && menu.visualParent.m.IsOnAllVirtualDesktops === true; return menu.visualParent && menu.visualParent.m.IsOnAllVirtualDesktops === true;
}); });
menuItem.clicked.connect(function() { menuItem.clicked.connect(function() {
tasksModel.requestVirtualDesktops(menu.modelIndex, []); tasksModel.requestVirtualDesktops(menu.modelIndex, []);
}); });
backend.setActionGroup(menuItem.action); backend.setActionGroup(menuItem.action);
@ -407,12 +400,12 @@ PlasmaComponents.ContextMenu {
menuItem.checkable = true; menuItem.checkable = true;
menuItem.checked = Qt.binding((function(i) { menuItem.checked = Qt.binding((function(i) {
return function() { return function() {
return (menu.visualParent && menu.get(atm.VirtualDesktops).indexOf(virtualDesktopInfo.desktopIds[i]) > -1); return (menu.visualParent && menu.get(atm.VirtualDesktops).indexOf(virtualDesktopInfo.desktopIds[i]) > -1);
}; };
})(i)); })(i));
menuItem.clicked.connect((function(i) { menuItem.clicked.connect((function(i) {
return function() { return function() {
return tasksModel.requestVirtualDesktops(menu.modelIndex, [virtualDesktopInfo.desktopIds[i]]); return tasksModel.requestVirtualDesktops(menu.modelIndex, [virtualDesktopInfo.desktopIds[i]]);
}; };
})(i)); })(i));
backend.setActionGroup(menuItem.action); backend.setActionGroup(menuItem.action);
@ -423,7 +416,7 @@ PlasmaComponents.ContextMenu {
menuItem = menu.newMenuItem(virtualDesktopsMenu); menuItem = menu.newMenuItem(virtualDesktopsMenu);
menuItem.text = i18n("&New Desktop"); menuItem.text = i18n("&New Desktop");
menuItem.clicked.connect(function() { menuItem.clicked.connect(function() {
tasksModel.requestNewVirtualDesktop(menu.modelIndex); tasksModel.requestNewVirtualDesktop(menu.modelIndex);
}); });
} }

Loading…
Cancel
Save