f57b0726a0
We expect that meta_screen_set_cursor while grabbed will properly set the cursor on the root window. Make sure this works by simply always using the root cursor when we have an active grab.
76 lines
2.4 KiB
C
76 lines
2.4 KiB
C
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
|
|
|
/*
|
|
* Copyright 2013 Red Hat, Inc.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation; either version 2 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
* Author: Giovanni Campagna <gcampagn@redhat.com>
|
|
*/
|
|
|
|
#ifndef META_CURSOR_TRACKER_PRIVATE_H
|
|
#define META_CURSOR_TRACKER_PRIVATE_H
|
|
|
|
#include <meta/meta-cursor-tracker.h>
|
|
#include <wayland-server.h>
|
|
#include <gbm.h>
|
|
|
|
#include "meta-cursor.h"
|
|
#include "meta-cursor-renderer.h"
|
|
|
|
struct _MetaCursorTracker {
|
|
GObject parent_instance;
|
|
|
|
MetaScreen *screen;
|
|
MetaCursorRenderer *renderer;
|
|
|
|
gboolean is_showing;
|
|
|
|
MetaCursorReference *displayed_cursor;
|
|
|
|
/* Wayland clients can set a NULL buffer as their cursor
|
|
* explicitly, which means that we shouldn't display anything.
|
|
* So, we can't simply store a NULL in window_cursor to
|
|
* determine an unset window cursor; we need an extra boolean.
|
|
*/
|
|
gboolean has_window_cursor;
|
|
MetaCursorReference *window_cursor;
|
|
|
|
MetaCursorReference *root_cursor;
|
|
|
|
/* The cursor from the X11 server. */
|
|
MetaCursorReference *xfixes_cursor;
|
|
};
|
|
|
|
struct _MetaCursorTrackerClass {
|
|
GObjectClass parent_class;
|
|
};
|
|
|
|
gboolean meta_cursor_tracker_handle_xevent (MetaCursorTracker *tracker,
|
|
XEvent *xevent);
|
|
|
|
void meta_cursor_tracker_set_window_cursor (MetaCursorTracker *tracker,
|
|
MetaCursorReference *cursor);
|
|
void meta_cursor_tracker_unset_window_cursor (MetaCursorTracker *tracker);
|
|
void meta_cursor_tracker_set_root_cursor (MetaCursorTracker *tracker,
|
|
MetaCursorReference *cursor);
|
|
|
|
void meta_cursor_tracker_update_position (MetaCursorTracker *tracker,
|
|
int new_x,
|
|
int new_y);
|
|
|
|
MetaCursorReference * meta_cursor_tracker_get_displayed_cursor (MetaCursorTracker *tracker);
|
|
|
|
#endif
|