[gtk+] x11: Avoid setting has_pointer_focus if a EWMH compliant WM is present
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] x11: Avoid setting has_pointer_focus if a EWMH compliant WM is present
- Date: Fri, 12 Feb 2016 21:11:23 +0000 (UTC)
commit d55b8151f27857ff4663ce05cbf6636b5ae50a02
Author: Carlos Garnacho <carlosg gnome org>
Date: Fri Feb 12 21:59:29 2016 +0100
x11: Avoid setting has_pointer_focus if a EWMH compliant WM is present
This is mostly useful to have focus behave sanely on lack of WM, so avoid
any check there if we're positive there is a WM handling focus.
https://bugzilla.gnome.org/show_bug.cgi?id=677329
gdk/x11/gdkdevicemanager-core-x11.c | 6 +++++-
gdk/x11/gdkeventsource.c | 5 +++++
2 files changed, 10 insertions(+), 1 deletions(-)
---
diff --git a/gdk/x11/gdkdevicemanager-core-x11.c b/gdk/x11/gdkdevicemanager-core-x11.c
index 8d68488..a16f931 100644
--- a/gdk/x11/gdkdevicemanager-core-x11.c
+++ b/gdk/x11/gdkdevicemanager-core-x11.c
@@ -820,6 +820,7 @@ _gdk_device_manager_core_handle_focus (GdkWindow *window,
int mode)
{
GdkToplevelX11 *toplevel;
+ GdkX11Screen *x11_screen;
gboolean had_focus;
g_return_if_fail (GDK_IS_WINDOW (window));
@@ -841,6 +842,7 @@ _gdk_device_manager_core_handle_focus (GdkWindow *window,
return;
had_focus = HAS_FOCUS (toplevel);
+ x11_screen = GDK_X11_SCREEN (gdk_window_get_screen (window));
switch (detail)
{
@@ -854,6 +856,7 @@ _gdk_device_manager_core_handle_focus (GdkWindow *window,
* has_focus_window case.
*/
if (toplevel->has_pointer &&
+ !x11_screen->wmspec_check_window &&
mode != NotifyGrab &&
#ifdef XINPUT_2
mode != XINotifyPassiveGrab &&
@@ -884,7 +887,8 @@ _gdk_device_manager_core_handle_focus (GdkWindow *window,
* but the pointer focus is ignored while a
* grab is in effect
*/
- if (mode != NotifyGrab &&
+ if (!x11_screen->wmspec_check_window &&
+ mode != NotifyGrab &&
#ifdef XINPUT_2
mode != XINotifyPassiveGrab &&
mode != XINotifyPassiveUngrab &&
diff --git a/gdk/x11/gdkeventsource.c b/gdk/x11/gdkeventsource.c
index 7fff28f..11929c6 100644
--- a/gdk/x11/gdkeventsource.c
+++ b/gdk/x11/gdkeventsource.c
@@ -132,11 +132,16 @@ static void
handle_focus_change (GdkEventCrossing *event)
{
GdkToplevelX11 *toplevel;
+ GdkX11Screen *x11_screen;
gboolean focus_in, had_focus;
toplevel = _gdk_x11_window_get_toplevel (event->window);
+ x11_screen = GDK_X11_SCREEN (gdk_window_get_screen (event->window));
focus_in = (event->type == GDK_ENTER_NOTIFY);
+ if (x11_screen->wmspec_check_window)
+ return;
+
if (!toplevel || event->detail == GDK_NOTIFY_INFERIOR)
return;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]