[mutter] window: Fix delayed mouse mode
- From: Florian MĂźllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] window: Fix delayed mouse mode
- Date: Wed, 21 May 2014 20:57:41 +0000 (UTC)
commit f159611fabc6205c691d33b4fd035750e3dc836e
Author: Florian MĂźllner <fmuellner gnome org>
Date: Wed May 21 19:50:26 2014 +0200
window: Fix delayed mouse mode
Using clutter_actor_has_pointer() to test whether the pointer is
on the window makes for clean and nice-looking code, but does not
work in practice - ClutterActor:has-pointer is not recursive, so
we miss when the pointer is on the associated surface actor rather
than the actor itself.
Instead, check whether the window actor contains the core pointer's
pointer actor, which actually works.
https://bugzilla.gnome.org/show_bug.cgi?id=730541
src/core/window.c | 12 ++++++++++--
1 files changed, 10 insertions(+), 2 deletions(-)
---
diff --git a/src/core/window.c b/src/core/window.c
index 54e3e4a..9bbfbce 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -7701,8 +7701,16 @@ mouse_mode_focus (MetaWindow *window,
static gboolean
window_has_pointer (MetaWindow *window)
{
- ClutterActor *actor = CLUTTER_ACTOR (meta_window_get_compositor_private (window));
- return clutter_actor_has_pointer (actor);
+ ClutterDeviceManager *dm;
+ ClutterInputDevice *dev;
+ ClutterActor *pointer_actor, *window_actor;
+
+ dm = clutter_device_manager_get_default ();
+ dev = clutter_device_manager_get_core_device (dm, CLUTTER_POINTER_DEVICE);
+ pointer_actor = clutter_input_device_get_pointer_actor (dev);
+ window_actor = CLUTTER_ACTOR (meta_window_get_compositor_private (window));
+
+ return pointer_actor && clutter_actor_contains (window_actor, pointer_actor);
}
static gboolean
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]