Merge branch 'master' of github.com:symphonyoss/SymphonyElectron

This commit is contained in:
Vishwas Shashidhar 2020-01-21 23:50:34 +05:30
commit bb0aa52d0e
6 changed files with 103 additions and 5 deletions

16
.github/workflows/backport.yml vendored Normal file
View File

@ -0,0 +1,16 @@
name: Backport
on:
pull_request:
types:
- closed
- labeled
jobs:
backport:
runs-on: ubuntu-18.04
name: Backport
steps:
- name: Backport
uses: tibdex/backport@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}

19
.github/workflows/label.yml vendored Normal file
View File

@ -0,0 +1,19 @@
# This workflow will triage pull requests and apply a label based on the
# paths that are modified in the pull request.
#
# To use this workflow, you will need to set up a .github/labeler.yml
# file with configuration. For more information, see:
# https://github.com/actions/labeler/blob/master/README.md
name: Labeler
on: [pull_request]
jobs:
label:
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v2
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"

19
.github/workflows/stale.yml vendored Normal file
View File

@ -0,0 +1,19 @@
name: Mark stale issues and pull requests
on:
schedule:
- cron: "0 0 * * *"
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: 'Stale issue message'
stale-pr-message: 'Stale pull request message'
stale-issue-label: 'no-issue-activity'
stale-pr-label: 'no-pr-activity'

13
entitlements.mac.plist Normal file
View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key><true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key><true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key><true/>
<key>com.apple.security.device.audio-input</key><true/>
<key>com.apple.security.device.camera</key><true/>
<key>com.apple.security.files.user-selected.read-write</key><true/>
<key>com.apple.security.network.client</key><true/>
</dict>
</plist>

View File

@ -1,7 +1,7 @@
{ {
"name": "symphony", "name": "symphony",
"productName": "Symphony", "productName": "Symphony",
"version": "6.0.0", "version": "6.1.0",
"clientVersion": "2.0.1", "clientVersion": "2.0.1",
"buildNumber": "0", "buildNumber": "0",
"searchAPIVersion": "1.55.3", "searchAPIVersion": "1.55.3",
@ -52,7 +52,9 @@
], ],
"mac": { "mac": {
"category": "public.app-category.business", "category": "public.app-category.business",
"icon": "images/icon.icns" "icon": "images/icon.icns",
"entitlements": "entitlements.mac.plist",
"entitlementsInherit": "entitlements.mac.plist"
}, },
"win": { "win": {
"icon": "images/icon.ico", "icon": "images/icon.ico",

View File

@ -144,10 +144,13 @@ export const activate = (windowName: string, shouldFocus: boolean = true): void
/** /**
* Sets always on top property based on isAlwaysOnTop * Sets always on top property based on isAlwaysOnTop
* *
* @param shouldSetAlwaysOnTop * @param shouldSetAlwaysOnTop {boolean} - Whether to enable always on top or not
* @param shouldActivateMainWindow * @param shouldActivateMainWindow {boolean} - Whether to active main window
*/ */
export const updateAlwaysOnTop = async (shouldSetAlwaysOnTop: boolean, shouldActivateMainWindow: boolean = true): Promise<void> => { export const updateAlwaysOnTop = async (
shouldSetAlwaysOnTop: boolean,
shouldActivateMainWindow: boolean = true,
): Promise<void> => {
logger.info(`window-actions: Should we set always on top? ${shouldSetAlwaysOnTop}!`); logger.info(`window-actions: Should we set always on top? ${shouldSetAlwaysOnTop}!`);
const browserWins: ICustomBrowserWindow[] = BrowserWindow.getAllWindows() as ICustomBrowserWindow[]; const browserWins: ICustomBrowserWindow[] = BrowserWindow.getAllWindows() as ICustomBrowserWindow[];
await config.updateUserConfig({ alwaysOnTop: shouldSetAlwaysOnTop }); await config.updateUserConfig({ alwaysOnTop: shouldSetAlwaysOnTop });
@ -198,6 +201,18 @@ export const handleKeyPress = (key: number): void => {
} }
}; };
/**
* Sets the window to always on top based
* on fullscreen state
*/
const setSpecificAlwaysOnTop = () => {
const browserWindow = BrowserWindow.getFocusedWindow();
if (isMac && browserWindow && windowExists(browserWindow) && browserWindow.isAlwaysOnTop()) {
// Set the focused window's always on top level based on fullscreen state
browserWindow.setAlwaysOnTop(true, browserWindow.isFullScreen() ? 'modal-panel' : 'floating');
}
};
/** /**
* Monitors window actions * Monitors window actions
* *
@ -223,6 +238,13 @@ export const monitorWindowActions = (window: BrowserWindow): void => {
if ((window as ICustomBrowserWindow).winName === apiName.mainWindowName) { if ((window as ICustomBrowserWindow).winName === apiName.mainWindowName) {
window.on('restore', throttledWindowRestore); window.on('restore', throttledWindowRestore);
} }
// Workaround for an issue with MacOS + AlwaysOnTop
// Issue: SDA-1665
if (isMac) {
window.on('enter-full-screen', setSpecificAlwaysOnTop);
window.on('leave-full-screen', setSpecificAlwaysOnTop);
}
}; };
/** /**
@ -246,6 +268,13 @@ export const removeWindowEventListener = (window: BrowserWindow): void => {
window.removeListener('leave-full-screen', throttledWindowChanges); window.removeListener('leave-full-screen', throttledWindowChanges);
window.removeListener('unmaximize', throttledWindowChanges); window.removeListener('unmaximize', throttledWindowChanges);
// Workaround for and issue with MacOS + AlwaysOnTop
// Issue: SDA-1665
if (isMac) {
window.removeListener('enter-full-screen', setSpecificAlwaysOnTop);
window.removeListener('leave-full-screen', setSpecificAlwaysOnTop);
}
}; };
/** /**