diff options
author | Daniel Friesel <derf@derf.homelinux.org> | 2010-02-05 18:10:04 +0100 |
---|---|---|
committer | Daniel Friesel <derf@derf.homelinux.org> | 2010-02-05 18:10:04 +0100 |
commit | 98148110a6624b06bd8b060250328718386309a7 (patch) | |
tree | ab39936d4c3f3972b4c6a082198090f797670f83 | |
parent | 99c6590b3793197d8c60618ab6cf6a5e028d5e92 (diff) |
Apply 05_xinerama.patch from Debian
-rw-r--r-- | src/keyevents.c | 4 | ||||
-rw-r--r-- | src/menu.c | 4 | ||||
-rw-r--r-- | src/winwidget.c | 4 |
3 files changed, 4 insertions, 8 deletions
diff --git a/src/keyevents.c b/src/keyevents.c index 803b71c..376a33a 100644 --- a/src/keyevents.c +++ b/src/keyevents.c @@ -385,10 +385,6 @@ feh_event_handle_keypress(XEvent * ev) if (opt.xinerama && xinerama_screens) { int i, rect[4]; - /* FIXME: this doesn't do what it should; XGetGeometry always - * returns x,y == 0,0. I think that's due to the hints being passed - * (or more specifically, a missing hint) to X in winwidget_create - */ winwidget_get_geometry(winwid, rect); /* printf("window: (%d, %d)\n", rect[0], rect[1]); printf("found %d screens.\n", num_xinerama_screens); */ @@ -2071,10 +2071,6 @@ feh_menu_cb_opt_fullscreen(feh_menu * m, if (opt.xinerama && xinerama_screens) { int i, rect[4]; - /* FIXME: this doesn't do what it should; XGetGeometry always - * returns x,y == 0,0. I think that's due to the hints being passed - * (or more specifically, a missing hint) to X in winwidget_create - */ winwidget_get_geometry(m->fehwin, rect); /* printf("window: (%d, %d)\n", rect[0], rect[1]); printf("found %d screens.\n", num_xinerama_screens); */ diff --git a/src/winwidget.c b/src/winwidget.c index 38d6db6..fe98e85 100644 --- a/src/winwidget.c +++ b/src/winwidget.c @@ -1034,6 +1034,7 @@ int winwidget_get_height(winwidget winwid) { void winwidget_get_geometry(winwidget winwid, int *rect) { int bw, bp; + Window child; D_ENTER(4); if (!rect) return; @@ -1041,6 +1042,9 @@ void winwidget_get_geometry(winwidget winwid, int *rect) { XGetGeometry(disp, winwid->win, &root, &(rect[0]), &(rect[1]), &(rect[2]), &(rect[3]), &bw, &bp); + XTranslateCoordinates(disp, winwid->win, root, + 0, 0, &(rect[0]), &(rect[1]), &child); + /* update the window geometry (in case it's inaccurate) */ winwid->x = rect[0]; winwid->y = rect[1]; |