Bugfix/multi monitor issues (#154)
* VNC-212 Fix monitors addition issue * Add control input visibility for display button
This commit is contained in:
parent
784667aa08
commit
e7a2f06dae
32
app/ui.js
32
app/ui.js
|
|
@ -1458,6 +1458,9 @@ const UI = {
|
||||||
}
|
}
|
||||||
url += '/' + path;
|
url += '/' + path;
|
||||||
|
|
||||||
|
UI.monitors = [];
|
||||||
|
UI.sortedMonitors = [];
|
||||||
|
UI.showControlInput('noVNC_displays_button')
|
||||||
UI.rfb = new RFB(document.getElementById('noVNC_container'),
|
UI.rfb = new RFB(document.getElementById('noVNC_container'),
|
||||||
document.getElementById('noVNC_keyboardinput'),
|
document.getElementById('noVNC_keyboardinput'),
|
||||||
url,
|
url,
|
||||||
|
|
@ -1604,6 +1607,7 @@ const UI = {
|
||||||
UI.updateVisualState('disconnecting');
|
UI.updateVisualState('disconnecting');
|
||||||
|
|
||||||
clearInterval(UI._sessionTimeoutInterval);
|
clearInterval(UI._sessionTimeoutInterval);
|
||||||
|
UI.hideControlInput('noVNC_displays_button');
|
||||||
},
|
},
|
||||||
|
|
||||||
reconnect() {
|
reconnect() {
|
||||||
|
|
@ -1657,6 +1661,8 @@ const UI = {
|
||||||
UI.connected = false;
|
UI.connected = false;
|
||||||
|
|
||||||
UI.rfb = undefined;
|
UI.rfb = undefined;
|
||||||
|
UI.monitors = [];
|
||||||
|
UI.sortedMonitors = [];
|
||||||
|
|
||||||
if (!e.detail.clean) {
|
if (!e.detail.clean) {
|
||||||
UI.updateVisualState('disconnected');
|
UI.updateVisualState('disconnected');
|
||||||
|
|
@ -1969,11 +1975,13 @@ const UI = {
|
||||||
|
|
||||||
openDisplays() {
|
openDisplays() {
|
||||||
document.getElementById('noVNC_displays').classList.add("noVNC_open");
|
document.getElementById('noVNC_displays').classList.add("noVNC_open");
|
||||||
if (UI.monitors.length < 1 ) {
|
if (UI.monitors.length < 1 && UI.rfb) {
|
||||||
let screenPlan = UI.rfb.getScreenPlan();
|
let screenPlan = UI.rfb.getScreenPlan();
|
||||||
UI.initMonitors(screenPlan)
|
UI.initMonitors(screenPlan);
|
||||||
|
}
|
||||||
|
if (UI.monitors.length > 0) {
|
||||||
|
UI.displayMonitors()
|
||||||
}
|
}
|
||||||
UI.displayMonitors()
|
|
||||||
},
|
},
|
||||||
|
|
||||||
closeDisplays() {
|
closeDisplays() {
|
||||||
|
|
@ -2106,6 +2114,9 @@ const UI = {
|
||||||
recenter() {
|
recenter() {
|
||||||
const monitors = UI.sortedMonitors
|
const monitors = UI.sortedMonitors
|
||||||
UI.removeSpaces()
|
UI.removeSpaces()
|
||||||
|
if (!monitors.length) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
const { startLeft, startTop } = UI.getSizes(monitors)
|
const { startLeft, startTop } = UI.getSizes(monitors)
|
||||||
|
|
||||||
for (var i = 0; i < monitors.length; i++) {
|
for (var i = 0; i < monitors.length; i++) {
|
||||||
|
|
@ -2183,11 +2194,12 @@ const UI = {
|
||||||
},
|
},
|
||||||
|
|
||||||
getSizes(monitors) {
|
getSizes(monitors) {
|
||||||
const { canvasWidth, canvasHeight } = UI.multiMonitorSettings()
|
const { canvasWidth, canvasHeight } = UI.multiMonitorSettings();
|
||||||
let top = monitors[0].y
|
|
||||||
let left = monitors[0].x
|
let top = monitors[0].y;
|
||||||
let width = monitors[0].w
|
let left = monitors[0].x;
|
||||||
let height = monitors[0].h
|
let width = monitors[0].w;
|
||||||
|
let height = monitors[0].h;
|
||||||
for (var i = 0; i < monitors.length; i++) {
|
for (var i = 0; i < monitors.length; i++) {
|
||||||
var m = monitors[i];
|
var m = monitors[i];
|
||||||
if (m.x < left) {
|
if (m.x < left) {
|
||||||
|
|
@ -3017,12 +3029,12 @@ const UI = {
|
||||||
UI.sendMessage('sharedSessionUserJoin', e.detail)
|
UI.sendMessage('sharedSessionUserJoin', e.detail)
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
sharedSessionUserLeft(e) {
|
sharedSessionUserLeft(e) {
|
||||||
Log.Info('shared session user left: ' + e.detail)
|
Log.Info('shared session user left: ' + e.detail)
|
||||||
UI.sendMessage('sharedSessionUserLeft', e.detail)
|
UI.sendMessage('sharedSessionUserLeft', e.detail)
|
||||||
},
|
},
|
||||||
|
|
||||||
//Helper to add options to dropdown.
|
//Helper to add options to dropdown.
|
||||||
addOption(selectbox, text, value) {
|
addOption(selectbox, text, value) {
|
||||||
const optn = document.createElement("OPTION");
|
const optn = document.createElement("OPTION");
|
||||||
|
|
|
||||||
|
|
@ -473,7 +473,7 @@ export default class Display {
|
||||||
for (let i=1; i<this._screens.length; i++) {
|
for (let i=1; i<this._screens.length; i++) {
|
||||||
this.screens[i].screenIndex = i;
|
this.screens[i].screenIndex = i;
|
||||||
if (i > 0) {
|
if (i > 0) {
|
||||||
this._screens[i].channel.postMessage({ eventType: "registered", screenIndex: i });
|
this._screens[i].channel?.postMessage({ eventType: "registered", screenIndex: i });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return removed;
|
return removed;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue