[WIP] Fix context menu freezing newIDE rendering

This commit is contained in:
Florian Rival
2017-05-06 16:47:45 +02:00
parent c728044260
commit eeaab6d12f
7 changed files with 24 additions and 21 deletions

View File

@@ -94,8 +94,8 @@ var Event = React.createClass({
}
if (!event.isFolded()) {
// eslint-disable-next-line
elements.push(
// eslint-disable-next-line
React.createElement(EventsList, {
eventsList: event.getSubEvents(),
key: 'subEvents',

View File

@@ -1,4 +1,4 @@
import React, { Component } from 'react';
import React from 'react';
import Menu from 'material-ui/Menu';
import Popover from 'material-ui/Popover';
import ElectronMenuImplementation from './ElectronMenuImplementation';

View File

@@ -3,23 +3,21 @@ const electron = optionalRequire('electron');
export default class ElectronMenuImplementation {
buildFromTemplate(template) {
if (!electron) return;
const { Menu } = electron.remote;
this.menu = Menu.buildFromTemplate(template);
this.menuTemplate = template;
return undefined;
}
showMenu(dimensions) {
if (!electron) return;
if (this.menu) {
setTimeout(() =>
this.menu.popup(
Math.round(dimensions.left),
Math.round(dimensions.top + dimensions.height)
));
}
const { Menu } = electron.remote;
const browserWindow = electron.remote.getCurrentWindow();
this.menu = Menu.buildFromTemplate(this.menuTemplate);
this.menu.popup(browserWindow, {
x: Math.round(dimensions.left),
y: Math.round(dimensions.top + dimensions.height),
async: true, // Ensure the UI is not blocked on macOS.
});
}
getMenuProps() {

View File

@@ -1,7 +1,5 @@
import React, { Component } from 'react';
import IconMenu from 'material-ui/IconMenu';
import MenuItem from 'material-ui/MenuItem';
import Divider from 'material-ui/Divider';
import ReactDOM from 'react-dom';
import ElectronMenuImplementation from './ElectronMenuImplementation';
import MaterialUIMenuImplementation from './MaterialUIMenuImplementation';
@@ -37,7 +35,9 @@ export default class GDIconMenu extends Component {
}
}
_onTouchTap = () => {
_onTouchTap = (e) => {
e.preventDefault();
e.stopPropagation();
if (!this.iconMenu) return;
const node = ReactDOM.findDOMNode(this.iconMenu);

View File

@@ -20,12 +20,16 @@ export default class Window {
}
const browserWindow = electron.remote.getCurrentWindow();
try {
browserWindow.setBounds({
x: Math.round(x / scaleFactor),
y: Math.round(y / scaleFactor),
width: Math.round(width / scaleFactor),
height: Math.round(height / scaleFactor),
});
} catch(err) {
console.warn("Unable to change window bounds", err);
}
this.show();
}

View File

@@ -1,5 +1,6 @@
var app = require('electron').app; // Module to control application life.
var BrowserWindow = require('electron').BrowserWindow; // Module to create native browser window.
var electron = require('electron');
var app = electron.app; // Module to control application life.
var BrowserWindow = electron.BrowserWindow; // Module to create native browser window.
var parseArgs = require('minimist');
var isDev = require('electron-is').dev();
@@ -70,4 +71,4 @@ app.on('ready', function() {
// when you should delete the corresponding element.
mainWindow = null;
});
});
});

View File

@@ -17,7 +17,7 @@
}
},
"devDependencies": {
"electron": "1.4.16",
"electron": "1.6.8",
"electron-builder": "16.8.2",
"minimist": "^1.2.0",
"shelljs": "^0.7.7"