commit d4771c5f0db55f49aff74cc047718c4264f11490
parent 6e9167aef10312827e8ea160ec9390d01c3038ce
Author: Dan Stillman <dstillman@zotero.org>
Date: Tue, 19 Feb 2013 16:27:16 -0500
Focus preferences window if already showing
Previously, if the prefwindow was behind another window, nothing would
happen when opening the preferences.
Diffstat:
1 file changed, 24 insertions(+), 6 deletions(-)
diff --git a/chrome/content/zotero/zoteroPane.js b/chrome/content/zotero/zoteroPane.js
@@ -2596,12 +2596,30 @@ var ZoteroPane = new function()
pane: paneID,
action: action
};
- window.openDialog('chrome://zotero/content/preferences/preferences.xul',
- 'zotero-prefs',
- 'chrome,titlebar,toolbar,centerscreen,'
- + Zotero.Prefs.get('browser.preferences.instantApply', true) ? 'dialog=no' : 'modal',
- io
- );
+
+ var win = null;
+ // If window is already open, just focus it
+ if (!action) {
+ var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator);
+ var enumerator = wm.getEnumerator("zotero:pref");
+ if (enumerator.hasMoreElements()) {
+ var win = enumerator.getNext();
+ win.focus();
+ if (paneID) {
+ var pane = win.document.getElementsByAttribute('id', paneID)[0];
+ pane.parentElement.showPane(pane);
+ }
+ }
+ }
+ if (!win) {
+ window.openDialog('chrome://zotero/content/preferences/preferences.xul',
+ 'zotero-prefs',
+ 'chrome,titlebar,toolbar,centerscreen,'
+ + Zotero.Prefs.get('browser.preferences.instantApply', true) ? 'dialog=no' : 'modal',
+ io
+ );
+ }
}