diff options
author | Paulo Zanoni <przanoni@src.gnome.org> | 2007-08-27 04:43:33 +0000 |
---|---|---|
committer | Paulo Zanoni <przanoni@src.gnome.org> | 2007-08-27 04:43:33 +0000 |
commit | aafaf298f7d8132aca02b3bfcf2340574fc7bfbf (patch) | |
tree | b197ffe1e0af89f2beacf2f07d87c82494298b8c /src/core.c | |
parent | b41c8538b6e644bbc3a9fc01d7e008dd2bc3e2f9 (diff) | |
download | metacity-multiple_pointer_x.tar.gz |
Another very big commit...multiple_pointer_x
Now it is possible to do "multiple operations" at the same time:
dragging/resizing windows with multiple mice, for example.
Some bugs corrected.
Some other still need to be corrected...
svn path=/branches/multiple_pointer_x/; revision=3310
Diffstat (limited to 'src/core.c')
-rw-r--r-- | src/core.c | 43 |
1 files changed, 25 insertions, 18 deletions
@@ -661,47 +661,54 @@ meta_core_end_grab_op (Display *xdisplay, } MetaGrabOp -meta_core_get_grab_op (Display *xdisplay) +meta_core_get_grab_op (Display *xdisplay, XID ptr_id) { MetaDisplay *display; + MetaDevInfo *ptr_dev; display = meta_display_for_x_display (xdisplay); + ptr_dev = meta_devices_find_mouse_by_id (display, ptr_id); - return display->grab_op; + if (ptr_dev->grab_op == NULL) + return META_GRAB_OP_NONE; + else + return ptr_dev->grab_op->op; } Window -meta_core_get_grab_frame (Display *xdisplay) +meta_core_get_grab_frame (Display *xdisplay, XID ptr_id) { MetaDisplay *display; + MetaDevInfo *ptr_dev; display = meta_display_for_x_display (xdisplay); + ptr_dev = meta_devices_find_mouse_by_id (display, ptr_id); g_assert (display != NULL); - g_assert (display->grab_op == META_GRAB_OP_NONE || - display->grab_screen != NULL); - g_assert (display->grab_op == META_GRAB_OP_NONE || - display->grab_screen->display->xdisplay == xdisplay); - - if (display->grab_op != META_GRAB_OP_NONE && - display->grab_window && - display->grab_window->frame) - return display->grab_window->frame->xwindow; - else - return None; -} + if (ptr_dev->grab_op != NULL) + { + g_assert (ptr_dev->grab_op->screen != NULL); + g_assert (ptr_dev->grab_op->screen->display->xdisplay == xdisplay); + + if (ptr_dev->grab_op->window && ptr_dev->grab_op->window->frame) + return ptr_dev->grab_op->window->frame->xwindow; + } + return None; +} int -meta_core_get_grab_button (Display *xdisplay) +meta_core_get_grab_button (Display *xdisplay, XID ptr_id) { MetaDisplay *display; + MetaDevInfo *ptr_dev; display = meta_display_for_x_display (xdisplay); + ptr_dev = meta_devices_find_mouse_by_id (display, ptr_id); - if (display->grab_op == META_GRAB_OP_NONE) + if (ptr_dev->grab_op == NULL) return -1; - return display->grab_button; + return ptr_dev->grab_op->button; } void |