summaryrefslogtreecommitdiff
path: root/chrome/content
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/content')
-rw-r--r--chrome/content/topmenuservice.js26
1 files changed, 20 insertions, 6 deletions
diff --git a/chrome/content/topmenuservice.js b/chrome/content/topmenuservice.js
index 96d0e6c..30b66eb 100644
--- a/chrome/content/topmenuservice.js
+++ b/chrome/content/topmenuservice.js
@@ -62,11 +62,20 @@ function WindowProxy(window) {
}
this.srcWindow = window;
- this.srcMenuBar = null;
- this.observer = null;
- this.appMenuBar = null;
+ this.srcMenuBar = menubars[0];
+
+ // A hack to heuristically detect if we must export this menubar.
+ var srcMenuBarParent = this.srcMenuBar.parentNode;
+ if (srcMenuBarParent.firstChild !== this.srcMenuBar) {
+ // This menu is not the first child on the parent item.
+ // Do not export this menubar.
+ this.srcWindow = null;
+ this.srcMenuBar = null;
+ return;
+ }
+
+
this.gdkWindow = getTopLevelGdkWindow(window);
- this.accelGroup = null;
this.flags = {};
this.updateFlags();
@@ -780,11 +789,15 @@ WindowProxy.prototype.fakeCommandEvent = function(item) {
WindowProxy.prototype.unload = function() {
this.setMenuBarVisibility(true);
- topmenu_client.topmenu_client_disconnect_window(this.gdkWindow);
+ if (this.gdkWindow) {
+ topmenu_client.topmenu_client_disconnect_window(this.gdkWindow);
+ }
}
WindowProxy.prototype.dispose = function() {
- window.document.removeEventListener("keypress", this.callbacks.keypress);
+ if (this.srcWindow) {
+ this.srcWindow.document.removeEventListener("keypress", this.callbacks.keypress);
+ }
if (this.monitor) {
if (this.monitorConnectionId) {
gobject.g_signal_handler_disconnect(this.monitor, this.monitorConnectionId);
@@ -810,6 +823,7 @@ WindowProxy.prototype.dispose = function() {
}
this.gdkWindow = null;
+ this.srcMenuBar = null;
this.srcWindow = null;
this.menus = null;
this.items = null;