fix restoreWindowPositionAndSize on dual-screen

This commit is contained in:
foudfou 2012-02-04 14:18:20 +01:00
parent 414bbf42aa
commit e96699d530
3 changed files with 25 additions and 33 deletions

View File

@ -114,41 +114,10 @@ firetray.Handler = {
});
firetray.VersionChange.watch();
// TEST - check Screens and Monitors !
try {
Cu.import("resource://firetray/ctypes/x11.jsm");
Cu.import("resource://firetray/ctypes/xinerama.jsm");
LOG("XINERAMA: "+xinerama.XineramaIsActive(x11.current.Display));
Cu.import("resource://firetray/ctypes/gdk.jsm");
LOG("SCREENS: "+gdk.gdk_display_get_n_screens(gdk.gdk_display_get_default()));
// GdkScreen *screen = gtk_widget_get_screen (widget);
// gint i = gdk_screen_get_monitor_at_window (screen,
// widget->window);
// let dl = gdk.gdk_display_list_devices(gdk.gdk_display_get_default()); // "should not be freed"
// LOG("LENGTH="+gobject.g_list_length(dl));
// let mozt_func = gobject.GFunc_t(firetray.Handler.glist_foreach);
// gobject.g_list_foreach(dl, mozt_func, null);
} catch(x) {ERROR(x);}
this.initialized = true;
return true;
},
// TEST
glist_foreach: function(a1, a2) {
LOG("glist_foreach: "+a1);
let gdkDev = ctypes.cast(a1, gdk.GdkDevice.ptr);
let devName = gdk.gdk_device_get_name(gdkDev);
LOG(devName.readString());
LOG(gdk.gdk_device_get_source(gdkDev));
LOG(gdk.gdk_device_get_mode(gdkDev));
},
shutdown: function() {
firetray.PrefListener.unregister();

View File

@ -0,0 +1,23 @@
/* -*- Mode: javascript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
var EXPORTED_SYMBOLS = [ "xinerama" ];
const XINERAMA_LIBNAME = "Xinerama";
const XINERAMA_ABIS = [ 1 ];
const Cu = Components.utils;
const Cc = Components.classes;
const Ci = Components.interfaces;
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/ctypes.jsm");
Cu.import("resource://firetray/ctypes/ctypes-utils.jsm");
Cu.import("resource://firetray/logging.jsm");
Cu.import("resource://firetray/ctypes/x11.jsm");
function xinerama_defines(lib) {
lib.lazy_bind("XineramaIsActive", x11.Bool, x11.Display.ptr);
}
new ctypes_library(XINERAMA_LIBNAME, XINERAMA_ABIS, xinerama_defines, this);

View File

@ -195,11 +195,11 @@ firetray.Window = {
firetray.Handler.windows[xid].savedY = gy.value;
firetray.Handler.windows[xid].savedWidth = gwidth.value;
firetray.Handler.windows[xid].savedHeight = gheight.value;
LOG("save: gx="+gx+", gy="+gy+", gwidth="+gwidth+", gheight="+gheight);
LOG("save: gx="+gx.value+", gy="+gy.value+", gwidth="+gwidth.value+", gheight="+gheight.value);
},
restoreWindowPositionAndSize: function(xid) {
if (!firetray.Handler.windows[xid].savedX)
if ("undefined" === typeof(firetray.Handler.windows[xid].savedX))
return; // windows[xid].saved* may not be initialized
LOG("restore: x="+firetray.Handler.windows[xid].savedX+", y="+firetray.Handler.windows[xid].savedY+", w="+firetray.Handler.windows[xid].savedWidth+", h="+firetray.Handler.windows[xid].savedHeight);