commit 6124e1571c1064c5363faa30a4d9038293ebfa3b
parent 04f5f79afbdc3274521a50827610b26d912ddb7b
Author: Simon Kornblith <simon@simonster.com>
Date: Tue, 1 Mar 2011 06:13:43 +0000
bring integration windows to foreground on Windows using ctypes
Diffstat:
1 file changed, 22 insertions(+), 0 deletions(-)
diff --git a/chrome/content/zotero/xpcom/integration.js b/chrome/content/zotero/xpcom/integration.js
@@ -38,6 +38,7 @@ Zotero.Integration = new function() {
var _osascriptFile;
var _inProgress = false;
var _integrationVersionsOK = null;
+ var _winUser32;
this.sessions = {};
@@ -443,6 +444,27 @@ Zotero.Integration = new function() {
} else {
_executeAppleScript('tell application id "'+BUNDLE_IDS[Zotero.appName]+'" to activate');
}
+ } else if(Zotero.isWin) {
+ try {
+ if(!_winUser32) {
+ Components.utils.import("resource://gre/modules/ctypes.jsm");
+ var lib = ctypes.open("user32.dll");
+ Zotero.debug([i for(i in ctypes)]);
+ _winUser32 = new function() {
+ this.FindWindow = lib.declare("FindWindowW", ctypes.default_abi, ctypes.int32_t,
+ ctypes.ustring, ctypes.ustring);
+ this.SetForegroundWindow = lib.declare("SetForegroundWindow", ctypes.default_abi, ctypes.bool,
+ ctypes.int32_t);
+ }
+ }
+
+ var thWnd = _winUser32.FindWindow(Zotero.appName+"MessageWindow", null);
+ if(thWnd) _winUser32.SetForegroundWindow(thWnd);
+ } catch(e) {
+ // Don't throw if we don't succeed
+ Components.utils.reportError(e);
+ return;
+ }
}
}