File indexing completed on 2024-05-19 05:34:08
0001 /* 0002 SPDX-FileCopyrightText: 2016 Smith AR <audoban@openmailbox.org> 0003 SPDX-FileCopyrightText: 2016-2018 Michail Vourlakos <mvourlakos@gmail.com> 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 function wheelActivateNextPrevTask(wheelDelta, eventDelta) { 0008 // magic number 120 for common "one click" 0009 // See: http://qt-project.org/doc/qt-5/qml-qtquick-wheelevent.html#angleDelta-prop 0010 wheelDelta += eventDelta; 0011 var increment = 0; 0012 while (wheelDelta >= 120) { 0013 wheelDelta -= 120; 0014 increment++; 0015 } 0016 while (wheelDelta <= -120) { 0017 wheelDelta += 120; 0018 increment--; 0019 } 0020 while (increment != 0) { 0021 activateNextPrevTask(increment < 0) 0022 increment += (increment < 0) ? 1 : -1; 0023 } 0024 0025 return wheelDelta; 0026 } 0027 0028 function activateTask(index, model, modifiers, task) { 0029 if (modifiers & Qt.ControlModifier) { 0030 tasksModel.requestNewInstance(index); 0031 } else if (task.isGroupParent) { 0032 task.activateNextTask(); 0033 // if (backend.canPresentWindows()) { 0034 // backend.presentWindows(model.LegacyWinIdList); 0035 // } 0036 /*} else if (groupDialog.visible) { 0037 groupDialog.visible = false; 0038 } else { 0039 groupDialog.visualParent = task; 0040 groupDialog.visible = true; 0041 }*/ 0042 } else { 0043 if (model.IsMinimized === true) { 0044 tasksModel.requestToggleMinimized(index); 0045 tasksModel.requestActivate(index); 0046 } else if (model.IsActive === true) { 0047 tasksModel.requestToggleMinimized(index); 0048 } else { 0049 tasksModel.requestActivate(index); 0050 } 0051 } 0052 } 0053 0054 0055 function activateNextPrevTask(next) { 0056 // FIXME TODO: Unnecessarily convoluted and costly; optimize. 0057 0058 var taskIndexList = []; 0059 var activeTaskIndex = tasksModel.activeTask; 0060 0061 for (var i = 0; i < taskList.children.length - 1; ++i) { 0062 var task = taskList.children[i]; 0063 var modelIndex = task.modelIndex(i); 0064 0065 if (task !== undefined){ 0066 if (task.IsLauncher !== true && task.IsStartup !== true) { 0067 if (task.m.IsGroupParent === true) { 0068 for (var j = 0; j < tasksModel.rowCount(modelIndex); ++j) { 0069 taskIndexList.push(tasksModel.makeModelIndex(i, j)); 0070 } 0071 } else { 0072 taskIndexList.push(modelIndex); 0073 } 0074 } 0075 } 0076 } 0077 0078 if (!taskIndexList.length) { 0079 return; 0080 } 0081 0082 var target = taskIndexList[0]; 0083 0084 for (var i = 0; i < taskIndexList.length; ++i) { 0085 if (taskIndexList[i] === activeTaskIndex) 0086 { 0087 if (next && i < (taskIndexList.length - 1)) { 0088 target = taskIndexList[i + 1]; 0089 } else if (!next) { 0090 if (i) { 0091 target = taskIndexList[i - 1]; 0092 } else { 0093 target = taskIndexList[taskIndexList.length - 1]; 0094 } 0095 } 0096 0097 break; 0098 } 0099 } 0100 0101 tasksModel.requestActivate(target); 0102 } 0103 0104 function insertIndexAt(above, x, y) { 0105 if (above && above.itemIndex) { 0106 return above.itemIndex; 0107 } else { 0108 var distance = root.vertical ? y : x; 0109 //var step = root.vertical ? LayoutManager.taskWidth() : LayoutManager.taskHeight(); 0110 var step = appletAbilities.metrics.totals.length; 0111 var stripe = Math.ceil(distance / step); 0112 0113 /* if (stripe === LayoutManager.calculateStripes()) { 0114 return tasksModel.count - 1; 0115 } else { 0116 return stripe * LayoutManager.tasksPerStripe(); 0117 }*/ 0118 0119 return stripe-1; 0120 } 0121 }