all repos — openbox @ 4546925b589d30c46f3bced74a02b3d531de894c

openbox fork - make it a bit more like ryudo

get the mouse pointer position if it is on another screen too.
let you move/resize from the client menu if the mouse is on another screen
Dana Jansens danakj@orodu.net
commit

4546925b589d30c46f3bced74a02b3d531de894c

parent

65eb46bd1f1f6c97cf1ff9506dd65792303a7ed4

3 files changed, 19 insertions(+), 8 deletions(-)

jump to
M openbox/client_menu.copenbox/client_menu.c

@@ -133,18 +133,18 @@ /* this needs to grab the keyboard so hide the menu */

menu_frame_hide_all(); f = NULL; /* and don't update */ - if (screen_pointer_pos(&x, &y)) - moveresize_start(c, x, y, 0, - prop_atoms.net_wm_moveresize_move_keyboard); + screen_pointer_pos(&x, &y); + moveresize_start(c, x, y, 0, + prop_atoms.net_wm_moveresize_move_keyboard); break; case CLIENT_RESIZE: /* this needs to grab the keyboard so hide the menu */ menu_frame_hide_all(); f = NULL; /* and don't update */ - if (screen_pointer_pos(&x, &y)) - moveresize_start(c, x, y, 0, - prop_atoms.net_wm_moveresize_size_keyboard); + screen_pointer_pos(&x, &y); + moveresize_start(c, x, y, 0, + prop_atoms.net_wm_moveresize_size_keyboard); break; case CLIENT_CLOSE: client_close(c);
M openbox/screen.copenbox/screen.c

@@ -1267,7 +1267,16 @@ {

Window w; gint i; guint u; + gboolean ret; - return !!XQueryPointer(ob_display, RootWindow(ob_display, ob_screen), - &w, &w, x, y, &i, &i, &u); + ret = !!XQueryPointer(ob_display, RootWindow(ob_display, ob_screen), + &w, &w, x, y, &i, &i, &u); + if (!ret) { + for (i = 0; i < ScreenCount(ob_display); ++i) + if (i != ob_screen) + if (XQueryPointer(ob_display, RootWindow(ob_display, i), + &w, &w, x, y, &i, &i, &u)) + break; + } + return ret; }
M openbox/screen.hopenbox/screen.h

@@ -107,6 +107,8 @@ /*! Sets the root cursor. This function decides which cursor to use, but you

gotta call it to let it know it should change. */ void screen_set_root_cursor(); +/*! Gives back the pointer's position in x and y. Returns TRUE if the pointer + is on this screen and FALSE if it is on another screen. */ gboolean screen_pointer_pos(gint *x, gint *y); #endif