Comments (1)
My attempt at a workaround.
Add an object listeners
that keeps track of the added handlers in bridge. When calling windowManager.eventEmitter.addListener
, store the function inside listeners
.
I tried returning the handler within listeners
, but it gets turned into "remoteFunction". Hence, instead of returning the handler itself, I am returning the index of the handler inside listeners
. Then instead of using splice
or something to remove it, I set it to null. If you are constantly adding and removing handlers, the object may get too big, but it's a working solution.
'bridge': {
/**
* The event listeners
* */
listeners : {},
/**
* Sets the callback to trigger whenever an event is emitted
* @param event The name of the event
* @param callback The callback to trigger, this callback will be given the data passed (if any), and
* the name of the targeted window and finally the name of the window that triggered/emitted the event
* @return the handler that add into the event listeners array
* */
'on': function(event, callback){
let id = 0;
if(this.listeners[event]){
id = this.listeners[event].length;
} else {
this.listeners[event] = [null]
}
windowManager.eventEmitter.addListener(event, this.listeners[event][id] = function(event){
callback.call(null, event.data, event.target, event.emittedBy);
});
return id;
},
/**
* Remove a event listener returned by windowManger.bridge.on
* or windowManager.bridge.addListener
* @param event The name of the event
* @param id the index of the listen handler returned by
* windowManager.bridge.on
*/
'removeListener': function(event, id) {
let handler;
if(this.listeners[event] && this.listeners[event].length > id){
handler = this.listeners[event][id];
}
if(handler){
windowManager.eventEmitter.removeListener(event, handler);
this.listeners[event][id] = undefined;
}
},
'removeListeners': function(event) {
this.listeners[event] = undefined;
windowManager.eventEmitter.removeAllListeners(event);
},
from electron-window-manager.
Related Issues (20)
- importList doesnt seem to work.
- Hiding Windows
- Feature Request: Ability to get the current window's name HOT 1
- clone doesnt work with windows.json properties...
- Layout path not work HOT 2
- Unable to load the application interface HOT 5
- annot find module 'remote' HOT 4
- Issue with webview HOT 1
- Detached DevTools Window not working
- typescript types
- Invalid Menu on Linux HOT 2
- create a window and open it hidden HOT 2
- setProxy possible
- NPM version outdated HOT 4
- How to redirect to specific Angular route?
- Unable to load the application interface -> Error with windowManager.createNew() HOT 1
- Attach an existed window to window manager HOT 1
- Z-Index of windows
- How to handle duplicate ipcMain.on methods after multiple Windows of the same instance?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from electron-window-manager.