Changed the display selector code.

This commit is contained in:
Ylian Saint-Hilaire 2019-04-27 15:36:11 -07:00
parent be93a87e72
commit 40c6508bba
5 changed files with 21 additions and 24 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "meshcentral", "name": "meshcentral",
"version": "0.3.3-d", "version": "0.3.3-e",
"keywords": [ "keywords": [
"Remote Management", "Remote Management",
"Intel AMT", "Intel AMT",

View File

@ -189,7 +189,7 @@ var CreateAgentRemoteDesktop = function (canvasid, scrolldiv) {
obj.ProcessDataEx = function (str) { obj.ProcessDataEx = function (str) {
if (obj.accumulator != null) { if (obj.accumulator != null) {
str = obj.accumulator + str; str = obj.accumulator + str;
console.log('KVM using accumulated data, total size is now ' + str.length + ' bytes.'); //console.log('KVM using accumulated data, total size is now ' + str.length + ' bytes.');
obj.accumulator = null; obj.accumulator = null;
} }
if (obj.debugmode > 1) { console.log("KRecv(" + str.length + "): " + rstr2hex(str.substring(0, Math.min(str.length, 40)))); } if (obj.debugmode > 1) { console.log("KRecv(" + str.length + "): " + rstr2hex(str.substring(0, Math.min(str.length, 40)))); }
@ -202,7 +202,7 @@ var CreateAgentRemoteDesktop = function (canvasid, scrolldiv) {
cmdsize = ReadInt(str, 4); cmdsize = ReadInt(str, 4);
//console.log('JUMBO cmd=' + command + ', cmdsize=' + cmdsize + ', data received=' + str.length); //console.log('JUMBO cmd=' + command + ', cmdsize=' + cmdsize + ', data received=' + str.length);
if ((cmdsize + 8) > str.length) { if ((cmdsize + 8) > str.length) {
console.log('KVM accumulator set to ' + str.length + ' bytes, need ' + cmdsize + ' bytes.'); //console.log('KVM accumulator set to ' + str.length + ' bytes, need ' + cmdsize + ' bytes.');
obj.accumulator = str; obj.accumulator = str;
return; return;
} }
@ -212,7 +212,7 @@ var CreateAgentRemoteDesktop = function (canvasid, scrolldiv) {
if ((cmdsize != str.length) && (obj.debugmode > 0)) { console.log(cmdsize, str.length, cmdsize == str.length); } if ((cmdsize != str.length) && (obj.debugmode > 0)) { console.log(cmdsize, str.length, cmdsize == str.length); }
if ((command >= 18) && (command != 65)) { console.error("Invalid KVM command " + command + " of size " + cmdsize); console.log("Invalid KVM data", str.length, rstr2hex(str.substring(0, 40)) + '...'); return; } if ((command >= 18) && (command != 65)) { console.error("Invalid KVM command " + command + " of size " + cmdsize); console.log("Invalid KVM data", str.length, rstr2hex(str.substring(0, 40)) + '...'); return; }
if (cmdsize > str.length) { if (cmdsize > str.length) {
console.log('KVM accumulator set to ' + str.length + ' bytes, need ' + cmdsize + ' bytes.'); //console.log('KVM accumulator set to ' + str.length + ' bytes, need ' + cmdsize + ' bytes.');
obj.accumulator = str; obj.accumulator = str;
return; return;
} }
@ -249,17 +249,16 @@ var CreateAgentRemoteDesktop = function (canvasid, scrolldiv) {
obj.send(String.fromCharCode(0x00, 0x0E, 0x00, 0x04)); obj.send(String.fromCharCode(0x00, 0x0E, 0x00, 0x04));
break; break;
case 11: // GetDisplays case 11: // GetDisplays
var myOptions = [], dcount = ((str.charCodeAt(4) & 0xFF) << 8) + (str.charCodeAt(5) & 0xFF); var selectedDisplay = 0, displays = { }, dcount = ((str.charCodeAt(4) & 0xFF) << 8) + (str.charCodeAt(5) & 0xFF);
if (dcount > 0) { if (dcount > 0) {
// Many displays present // Many displays present
var selitem = 0, seldisp = ((str.charCodeAt(6 + (dcount * 2)) & 0xFF) << 8) + (str.charCodeAt(7 + (dcount * 2)) & 0xFF); selectedDisplay = ((str.charCodeAt(6 + (dcount * 2)) & 0xFF) << 8) + (str.charCodeAt(7 + (dcount * 2)) & 0xFF);
for (var i = 0; i < dcount; i++) { for (var i = 0; i < dcount; i++) {
var disp = ((str.charCodeAt(6 + (i * 2)) & 0xFF) << 8) + (str.charCodeAt(7 + (i * 2)) & 0xFF); var disp = ((str.charCodeAt(6 + (i * 2)) & 0xFF) << 8) + (str.charCodeAt(7 + (i * 2)) & 0xFF);
if (disp == 65535) { myOptions.push('All Displays'); } else { myOptions.push('Display ' + disp); } if (disp == 65535) { displays[disp] = 'All Displays'; } else { displays[disp] = 'Display ' + disp; }
if (disp == seldisp) selitem = i;
} }
} }
if (obj.onDisplayinfo != null) { obj.onDisplayinfo(obj, myOptions, selitem); } if (obj.onDisplayinfo != null) { obj.onDisplayinfo(obj, displays, selectedDisplay); }
break; break;
case 12: // SetDisplay case 12: // SetDisplay
//console.log('SetDisplayConfirmed'); //console.log('SetDisplayConfirmed');

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -467,7 +467,7 @@
</div> </div>
<div id=deskarea4 class="areaFoot"> <div id=deskarea4 class="areaFoot">
<div class="toright2"> <div class="toright2">
<select id=termdisplays style="display:none" onchange=deskSetDisplay(event) onclick=deskGetDisplayNumbers(event)></select>&nbsp; <select id=termdisplays style="display:none" onchange=deskSetDisplay(event)></select>&nbsp;
<input id=DeskToolsButton type=button value=Tools title="Toggle tools view" onkeypress="return false" onkeydown="return false" onclick="toggleDeskTools()">&nbsp; <input id=DeskToolsButton type=button value=Tools title="Toggle tools view" onkeypress="return false" onkeydown="return false" onclick="toggleDeskTools()">&nbsp;
<span id=DeskChatButton class="deskarea" title="Open chat window to this computer"><img src='images/icon-chat.png' onclick=deviceChat() height=16 width=16 style=padding-top:2px /></span> <span id=DeskChatButton class="deskarea" title="Open chat window to this computer"><img src='images/icon-chat.png' onclick=deviceChat() height=16 width=16 style=padding-top:2px /></span>
<span id=DeskNotifyButton title="Display a notification on the remote computer"><img src='images/icon-notify.png' onclick=deviceToastFunction() height=16 width=16 style=padding-top:2px /></span> <span id=DeskNotifyButton title="Display a notification on the remote computer"><img src='images/icon-notify.png' onclick=deviceToastFunction() height=16 width=16 style=padding-top:2px /></span>
@ -4781,22 +4781,20 @@
Q("Desk")['toBlob'](function (blob) { saveAs(blob, n + ".jpg"); }); Q("Desk")['toBlob'](function (blob) { saveAs(blob, n + ".jpg"); });
} }
function deskDisplayInfo(sender, info, selDisplay) { function deskDisplayInfo(sender, displays, selDisplay) {
var txt = Q('termdisplays').value; var displayCount = 0, displaySelector = '';
if (info.length > 0) { var options = ''; for (var x in info) { options += '<option' + ((selDisplay == x) ? ' selected' : '') + '>' + info[x] + '</option>'; } QH('termdisplays', options); } for (var i in displays) {
QV('termdisplays', info.length > 1); displayCount++;
if ((deskPreferedStickyDisplay != selDisplay) && (info.length > deskPreferedStickyDisplay)) { desktop.m.SetDisplay(deskPreferedStickyDisplay); } displaySelector += '<option' + ((selDisplay == i) ? ' selected' : '') + ' value=' + i + '>' + displays[i] + '</option>';
if ((deskPreferedStickyDisplay == i) && (selDisplay != deskPreferedStickyDisplay)) { desktop.m.SetDisplay(i); }
}
QH('termdisplays', displaySelector);
QV('termdisplays', displayCount > 1);
} }
function deskGetDisplayNumbers(e) { desktop.m.GetDisplayNumbers(); } function deskGetDisplayNumbers(e) { desktop.m.GetDisplayNumbers(); }
var deskPreferedStickyDisplay = 0; var deskPreferedStickyDisplay = 0;
function deskSetDisplay(e) { function deskSetDisplay(e) { desktop.m.SetDisplay(deskPreferedStickyDisplay = parseInt(Q('termdisplays').value)); }
var display = 0, txt = Q('termdisplays').value;
if (txt == "All Displays") display = 65535; else display = parseInt(txt.substring(8));
deskPreferedStickyDisplay = display;
desktop.m.SetDisplay(display);
}
// Double click detection. This is important for MacOS. // Double click detection. This is important for MacOS.
var dblClickDetectArgs = { t:0, x:0, y:0 }; var dblClickDetectArgs = { t:0, x:0, y:0 };