mirror of
https://github.com/moonlight-stream/moonlight-chrome.git
synced 2025-08-17 16:46:31 +00:00
Merge pull request #158 from mandrichenko/master
Several fixes about chrome application window (size and state)
This commit is contained in:
commit
497b450054
@ -1,8 +1,32 @@
|
|||||||
chrome.app.runtime.onLaunched.addListener(function() {
|
function createWindow(state) {
|
||||||
chrome.app.window.create('index.html', {
|
chrome.app.window.create('index.html', {
|
||||||
state: "normal",
|
state: state,
|
||||||
bounds: {
|
bounds: {
|
||||||
width: 850, height: 500
|
width: 960,
|
||||||
}
|
height: 540
|
||||||
|
}
|
||||||
|
}, function(window) {
|
||||||
|
// workaround:
|
||||||
|
// state = 'normal' in some cases not work (e.g. starting app from 'chrome://extensions' always open window in fullscreen mode)
|
||||||
|
// it requires manually restoring window state to 'normal'
|
||||||
|
if (state == 'normal') {
|
||||||
|
setTimeout(function() { window.restore(); }, 1000);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
}
|
||||||
|
|
||||||
|
chrome.app.runtime.onLaunched.addListener(function() {
|
||||||
|
var windowState = 'normal';
|
||||||
|
|
||||||
|
if (chrome.storage) {
|
||||||
|
// load stored window state
|
||||||
|
chrome.storage.sync.get('windowState', function(item) {
|
||||||
|
windowState = (item && item.windowState)
|
||||||
|
? item.windowState
|
||||||
|
: windowState;
|
||||||
|
createWindow(windowState);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
createWindow(windowState);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
@ -3,6 +3,9 @@ var activePolls = {}; // hosts currently being polled. An associated array of
|
|||||||
var pairingCert;
|
var pairingCert;
|
||||||
var myUniqueid;
|
var myUniqueid;
|
||||||
var api; // `api` should only be set if we're in a host-specific screen. on the initial screen it should always be null.
|
var api; // `api` should only be set if we're in a host-specific screen. on the initial screen it should always be null.
|
||||||
|
var isInGame = false; // flag indicating whether the game stream started
|
||||||
|
var windowState = 'normal'; // chrome's windowState, possible values: 'normal' or 'fullscreen'
|
||||||
|
|
||||||
|
|
||||||
// Called by the common.js module.
|
// Called by the common.js module.
|
||||||
function attachListeners() {
|
function attachListeners() {
|
||||||
@ -31,6 +34,35 @@ function fullscreenChromeWindow() {
|
|||||||
chrome.app.window.current().fullscreen();
|
chrome.app.window.current().fullscreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function loadWindowState() {
|
||||||
|
if (!chrome.storage) { return; }
|
||||||
|
|
||||||
|
chrome.storage.sync.get('windowState', function(item) {
|
||||||
|
// load stored window state
|
||||||
|
windowState = (item && item.windowState)
|
||||||
|
? item.windowState
|
||||||
|
: windowState;
|
||||||
|
|
||||||
|
// subscribe to chrome's windowState events
|
||||||
|
chrome.app.window.current().onFullscreened.addListener(onFullscreened);
|
||||||
|
chrome.app.window.current().onBoundsChanged.addListener(onBoundsChanged);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function onFullscreened() {
|
||||||
|
if (!isInGame && windowState == 'normal') {
|
||||||
|
storeData('windowState', 'fullscreen', null);
|
||||||
|
windowState = 'fullscreen';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onBoundsChanged() {
|
||||||
|
if (!isInGame && windowState == 'fullscreen') {
|
||||||
|
storeData('windowState', 'normal', null);
|
||||||
|
windowState = 'normal';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function changeUiModeForNaClLoad() {
|
function changeUiModeForNaClLoad() {
|
||||||
$('.mdl-layout__header').children().hide();
|
$('.mdl-layout__header').children().hide();
|
||||||
$("#main-content").children().not("#listener, #naclSpinner").hide();
|
$("#main-content").children().not("#listener, #naclSpinner").hide();
|
||||||
@ -529,6 +561,8 @@ function startGame(host, appID) {
|
|||||||
|
|
||||||
function playGameMode() {
|
function playGameMode() {
|
||||||
console.log("entering play game mode");
|
console.log("entering play game mode");
|
||||||
|
isInGame = true;
|
||||||
|
|
||||||
$(".mdl-layout__header").hide();
|
$(".mdl-layout__header").hide();
|
||||||
$("#main-content").children().not("#listener, #loadingSpinner").hide();
|
$("#main-content").children().not("#listener, #loadingSpinner").hide();
|
||||||
$("#main-content").addClass("fullscreen");
|
$("#main-content").addClass("fullscreen");
|
||||||
@ -585,6 +619,8 @@ function stopGameWithConfirmation() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function stopGame(host, callbackFunction) {
|
function stopGame(host, callbackFunction) {
|
||||||
|
isInGame = false;
|
||||||
|
|
||||||
if (!host.paired) {
|
if (!host.paired) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -695,6 +731,8 @@ function onWindowLoad(){
|
|||||||
// don't show the game selection div
|
// don't show the game selection div
|
||||||
$('#gameSelection').css('display', 'none');
|
$('#gameSelection').css('display', 'none');
|
||||||
|
|
||||||
|
loadWindowState();
|
||||||
|
|
||||||
if(chrome.storage) {
|
if(chrome.storage) {
|
||||||
// load stored resolution prefs
|
// load stored resolution prefs
|
||||||
chrome.storage.sync.get('resolution', function(previousValue) {
|
chrome.storage.sync.get('resolution', function(previousValue) {
|
||||||
|
@ -30,7 +30,11 @@ function handleMessage(msg) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
showApps(api);
|
showApps(api);
|
||||||
chrome.app.window.current().restore();
|
|
||||||
|
isInGame = false;
|
||||||
|
|
||||||
|
// restore main window from 'fullscreen' to 'normal' mode (if required)
|
||||||
|
(windowState == 'normal') && chrome.app.window.current().restore();
|
||||||
});
|
});
|
||||||
|
|
||||||
} else if(msg.data === 'Connection Established') {
|
} else if(msg.data === 'Connection Established') {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user