Skip to content

Commit 7ad3639

Browse files
authored
Merge pull request #181 from vidartf/cm
Prevent context menu on renderers
2 parents 4ef9b91 + 080ea19 commit 7ad3639

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

js/src/_base/Renderable.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,44 @@ var RenderableView = widgets.DOMWidgetView.extend({
119119
}
120120
},
121121

122+
processPhosphorMessage: function(msg) {
123+
widgets.DOMWidgetView.prototype.processPhosphorMessage.call(this, msg);
124+
switch (msg.type) {
125+
case 'after-attach':
126+
this.el.addEventListener('contextmenu', this, true);
127+
break;
128+
case 'before-detach':
129+
this.el.removeEventListener('contextmenu', this, true);
130+
break;
131+
}
132+
},
133+
134+
handleEvent: function(event) {
135+
switch (event.type) {
136+
case 'contextmenu':
137+
this.handleContextMenu(event);
138+
break;
139+
default:
140+
widgets.DOMWidgetView.prototype.handleEvent.call(this, event);
141+
break;
142+
}
143+
},
144+
145+
handleContextMenu: function(event) {
146+
// Cancel context menu if on renderer:
147+
var candidates = [];
148+
if (this.renderer) {
149+
candidates.push(this.renderer.domElement);
150+
}
151+
if (this.$frozenRenderer) {
152+
candidates.push(this.$frozenRenderer[0]);
153+
}
154+
if (candidates.indexOf(event.target) !== -1) {
155+
event.preventDefault();
156+
event.stopPropagation();
157+
}
158+
},
159+
122160
render: function() {
123161
this.doRender();
124162
},

0 commit comments

Comments
 (0)