Remove use of XFixes for showing/hiding the cursor
XFixesShowCursor / XFixesHideCursor does not actually take the suppled window argument into account -- the effect is actually global. Use XDefineCursor instead. https://bugzilla.gnome.org/show_bug.cgi?id=707071
This commit is contained in:
parent
98e03fc03f
commit
0fda81feab
@ -111,9 +111,6 @@
|
|||||||
/* Define to 1 if we have the XEXT X extension */
|
/* Define to 1 if we have the XEXT X extension */
|
||||||
/*#undef HAVE_XEXT*/
|
/*#undef HAVE_XEXT*/
|
||||||
|
|
||||||
/* Define to 1 if we have the XFIXES X extension */
|
|
||||||
/*#undef HAVE_XFIXES*/
|
|
||||||
|
|
||||||
/* Define to 1 if X Generic Extensions is available */
|
/* Define to 1 if X Generic Extensions is available */
|
||||||
/* #undef HAVE_XGE */
|
/* #undef HAVE_XGE */
|
||||||
|
|
||||||
|
@ -46,10 +46,6 @@
|
|||||||
#include "clutter-private.h"
|
#include "clutter-private.h"
|
||||||
#include "clutter-stage-private.h"
|
#include "clutter-stage-private.h"
|
||||||
|
|
||||||
#ifdef HAVE_XFIXES
|
|
||||||
#include <X11/extensions/Xfixes.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define STAGE_X11_IS_MAPPED(s) ((((ClutterStageX11 *) (s))->wm_state & STAGE_X11_WITHDRAWN) == 0)
|
#define STAGE_X11_IS_MAPPED(s) ((((ClutterStageX11 *) (s))->wm_state & STAGE_X11_WITHDRAWN) == 0)
|
||||||
|
|
||||||
static ClutterStageWindowIface *clutter_stage_window_parent_iface = NULL;
|
static ClutterStageWindowIface *clutter_stage_window_parent_iface = NULL;
|
||||||
@ -366,22 +362,10 @@ set_cursor_visible (ClutterStageX11 *stage_x11)
|
|||||||
|
|
||||||
if (stage_x11->is_cursor_visible)
|
if (stage_x11->is_cursor_visible)
|
||||||
{
|
{
|
||||||
#if HAVE_XFIXES
|
|
||||||
if (stage_x11->cursor_hidden_xfixes)
|
|
||||||
{
|
|
||||||
XFixesShowCursor (backend_x11->xdpy, stage_x11->xwin);
|
|
||||||
stage_x11->cursor_hidden_xfixes = FALSE;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
XUndefineCursor (backend_x11->xdpy, stage_x11->xwin);
|
XUndefineCursor (backend_x11->xdpy, stage_x11->xwin);
|
||||||
#endif /* HAVE_XFIXES */
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#if HAVE_XFIXES
|
|
||||||
XFixesHideCursor (backend_x11->xdpy, stage_x11->xwin);
|
|
||||||
stage_x11->cursor_hidden_xfixes = TRUE;
|
|
||||||
#else
|
|
||||||
XColor col;
|
XColor col;
|
||||||
Pixmap pix;
|
Pixmap pix;
|
||||||
Cursor curs;
|
Cursor curs;
|
||||||
@ -394,7 +378,6 @@ set_cursor_visible (ClutterStageX11 *stage_x11)
|
|||||||
1, 1);
|
1, 1);
|
||||||
XFreePixmap (backend_x11->xdpy, pix);
|
XFreePixmap (backend_x11->xdpy, pix);
|
||||||
XDefineCursor (backend_x11->xdpy, stage_x11->xwin, curs);
|
XDefineCursor (backend_x11->xdpy, stage_x11->xwin, curs);
|
||||||
#endif /* HAVE_XFIXES */
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -897,7 +880,6 @@ clutter_stage_x11_init (ClutterStageX11 *stage)
|
|||||||
stage->is_foreign_xwin = FALSE;
|
stage->is_foreign_xwin = FALSE;
|
||||||
stage->fullscreening = FALSE;
|
stage->fullscreening = FALSE;
|
||||||
stage->is_cursor_visible = TRUE;
|
stage->is_cursor_visible = TRUE;
|
||||||
stage->cursor_hidden_xfixes = FALSE;
|
|
||||||
stage->accept_focus = TRUE;
|
stage->accept_focus = TRUE;
|
||||||
|
|
||||||
stage->title = NULL;
|
stage->title = NULL;
|
||||||
@ -1194,26 +1176,6 @@ clutter_stage_x11_translate_event (ClutterEventTranslator *translator,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EnterNotify:
|
|
||||||
#if HAVE_XFIXES
|
|
||||||
if (!stage_x11->is_cursor_visible && !stage_x11->cursor_hidden_xfixes)
|
|
||||||
{
|
|
||||||
XFixesHideCursor (backend_x11->xdpy, stage_x11->xwin);
|
|
||||||
stage_x11->cursor_hidden_xfixes = TRUE;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LeaveNotify:
|
|
||||||
#if HAVE_XFIXES
|
|
||||||
if (stage_x11->cursor_hidden_xfixes)
|
|
||||||
{
|
|
||||||
XFixesShowCursor (backend_x11->xdpy, stage_x11->xwin);
|
|
||||||
stage_x11->cursor_hidden_xfixes = FALSE;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Expose:
|
case Expose:
|
||||||
{
|
{
|
||||||
XExposeEvent *expose = (XExposeEvent *) xevent;
|
XExposeEvent *expose = (XExposeEvent *) xevent;
|
||||||
|
@ -69,7 +69,6 @@ struct _ClutterStageX11
|
|||||||
guint viewport_initialized : 1;
|
guint viewport_initialized : 1;
|
||||||
guint accept_focus : 1;
|
guint accept_focus : 1;
|
||||||
guint fullscreen_on_realize : 1;
|
guint fullscreen_on_realize : 1;
|
||||||
guint cursor_hidden_xfixes : 1;
|
|
||||||
guint fixed_scale_factor : 1;
|
guint fixed_scale_factor : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
16
configure.ac
16
configure.ac
@ -633,22 +633,6 @@ AS_IF([test "x$SUPPORT_X11" = "x1"],
|
|||||||
[AC_MSG_ERROR([Not found])]
|
[AC_MSG_ERROR([Not found])]
|
||||||
)
|
)
|
||||||
|
|
||||||
# XFIXES (required)
|
|
||||||
AC_MSG_CHECKING([for XFIXES extension >= $XFIXES_REQ_VERSION])
|
|
||||||
PKG_CHECK_EXISTS([xfixes >= $XFIXES_REQ_VERSION], [have_xfixes=yes], [have_xfixes=no])
|
|
||||||
AS_IF([test "x$have_xfixes" = "xyes"],
|
|
||||||
[
|
|
||||||
AC_DEFINE(HAVE_XFIXES, [1], [Define to 1 if we have the XFIXES X extension])
|
|
||||||
|
|
||||||
X11_LIBS="$X11_LIBS -lXfixes"
|
|
||||||
X11_PC_FILES="$X11_PC_FILES xfixes >= $XFIXES_REQ_VERSION"
|
|
||||||
X11_EXTS="$X11_EXTS xfixes"
|
|
||||||
|
|
||||||
AC_MSG_RESULT([found])
|
|
||||||
],
|
|
||||||
[AC_MSG_ERROR([Not found])]
|
|
||||||
)
|
|
||||||
|
|
||||||
# XDAMAGE (required)
|
# XDAMAGE (required)
|
||||||
AC_MSG_CHECKING([for XDAMAGE extension])
|
AC_MSG_CHECKING([for XDAMAGE extension])
|
||||||
PKG_CHECK_EXISTS([xdamage], [have_xdamage=yes], [have_xdamage=no])
|
PKG_CHECK_EXISTS([xdamage], [have_xdamage=yes], [have_xdamage=no])
|
||||||
|
Loading…
Reference in New Issue
Block a user