summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-05-09 04:04:53 +0000
committerDana Jansens <danakj@orodu.net>2007-05-09 04:04:53 +0000
commit4546925b589d30c46f3bced74a02b3d531de894c (patch)
treec0963f1e1302a79bb31cb9968283e8fcefa50a70
parent65eb46bd1f1f6c97cf1ff9506dd65792303a7ed4 (diff)
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
-rw-r--r--openbox/client_menu.c12
-rw-r--r--openbox/screen.c15
-rw-r--r--openbox/screen.h2
3 files changed, 20 insertions, 9 deletions
diff --git a/openbox/client_menu.c b/openbox/client_menu.c
index 35acd4fd..a44fcbcc 100644
--- a/openbox/client_menu.c
+++ b/openbox/client_menu.c
@@ -133,18 +133,18 @@ static void client_menu_execute(ObMenuEntry *e, ObMenuFrame *f,
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);
diff --git a/openbox/screen.c b/openbox/screen.c
index d48d0dda..dea9d020 100644
--- a/openbox/screen.c
+++ b/openbox/screen.c
@@ -1267,7 +1267,16 @@ gboolean screen_pointer_pos(gint *x, gint *y)
Window w;
gint i;
guint u;
-
- return !!XQueryPointer(ob_display, RootWindow(ob_display, ob_screen),
- &w, &w, x, y, &i, &i, &u);
+ gboolean ret;
+
+ 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;
}
diff --git a/openbox/screen.h b/openbox/screen.h
index ccaa4f57..a84170f8 100644
--- a/openbox/screen.h
+++ b/openbox/screen.h
@@ -107,6 +107,8 @@ guint screen_find_monitor(Rect *search);
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