display: add support for more cursor types
These cursors are used by gnome-shell, supporting them allows to reduce GDK usage in the shell. Also, make meta_screen_set_cursor() public. https://bugzilla.gnome.org/show_bug.cgi?id=707919
This commit is contained in:
parent
2f9c6c4146
commit
8c0d38a1a1
@ -3942,7 +3942,8 @@ meta_display_create_x_cursor (MetaDisplay *display,
|
||||
MetaCursor cursor)
|
||||
{
|
||||
Cursor xcursor;
|
||||
guint glyph;
|
||||
guint glyph = XC_num_glyphs;
|
||||
const char *name = NULL;
|
||||
|
||||
switch (cursor)
|
||||
{
|
||||
@ -3979,14 +3980,38 @@ meta_display_create_x_cursor (MetaDisplay *display,
|
||||
case META_CURSOR_BUSY:
|
||||
glyph = XC_watch;
|
||||
break;
|
||||
|
||||
case META_CURSOR_DND_IN_DRAG:
|
||||
name = "dnd-in-drag";
|
||||
break;
|
||||
case META_CURSOR_DND_MOVE:
|
||||
name = "dnd-move";
|
||||
break;
|
||||
case META_CURSOR_DND_COPY:
|
||||
name = "dnd-copy";
|
||||
break;
|
||||
case META_CURSOR_DND_UNSUPPORTED_TARGET:
|
||||
name = "dnd-none";
|
||||
break;
|
||||
case META_CURSOR_POINTING_HAND:
|
||||
glyph = XC_hand2;
|
||||
break;
|
||||
case META_CURSOR_CROSSHAIR:
|
||||
glyph = XC_crosshair;
|
||||
break;
|
||||
case META_CURSOR_IBEAM:
|
||||
glyph = XC_xterm;
|
||||
break;
|
||||
|
||||
default:
|
||||
g_assert_not_reached ();
|
||||
glyph = 0; /* silence compiler */
|
||||
break;
|
||||
}
|
||||
|
||||
xcursor = XCreateFontCursor (display->xdisplay, glyph);
|
||||
|
||||
if (name != NULL)
|
||||
xcursor = XcursorLibraryLoadCursor (display->xdisplay, name);
|
||||
else
|
||||
xcursor = XCreateFontCursor (display->xdisplay, glyph);
|
||||
|
||||
return xcursor;
|
||||
}
|
||||
|
@ -151,8 +151,6 @@ void meta_screen_foreach_window (MetaScreen *scree
|
||||
MetaScreenWindowFunc func,
|
||||
gpointer data);
|
||||
|
||||
void meta_screen_set_cursor (MetaScreen *screen,
|
||||
MetaCursor cursor);
|
||||
void meta_screen_update_cursor (MetaScreen *screen);
|
||||
|
||||
void meta_screen_tab_popup_create (MetaScreen *screen,
|
||||
|
@ -260,6 +260,13 @@ typedef enum
|
||||
* @META_CURSOR_NW_RESIZE: Resize north-western corner cursor
|
||||
* @META_CURSOR_MOVE_OR_RESIZE_WINDOW: Move or resize cursor
|
||||
* @META_CURSOR_BUSY: Busy cursor
|
||||
* @META_CURSOR_DND_IN_DRAG: DND in drag cursor
|
||||
* @META_CURSOR_DND_MOVE: DND move cursor
|
||||
* @META_CURSOR_DND_COPY: DND copy cursor
|
||||
* @META_CURSOR_DND_UNSUPPORTED_TARGET: DND unsupported target
|
||||
* @META_CURSOR_POINTING_HAND: pointing hand
|
||||
* @META_CURSOR_CROSSHAIR: crosshair (action forbidden)
|
||||
* @META_CURSOR_IBEAM: I-beam (text input)
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
@ -273,8 +280,15 @@ typedef enum
|
||||
META_CURSOR_NE_RESIZE,
|
||||
META_CURSOR_NW_RESIZE,
|
||||
META_CURSOR_MOVE_OR_RESIZE_WINDOW,
|
||||
META_CURSOR_BUSY
|
||||
|
||||
META_CURSOR_BUSY,
|
||||
META_CURSOR_DND_IN_DRAG,
|
||||
META_CURSOR_DND_MOVE,
|
||||
META_CURSOR_DND_COPY,
|
||||
META_CURSOR_DND_UNSUPPORTED_TARGET,
|
||||
META_CURSOR_POINTING_HAND,
|
||||
META_CURSOR_CROSSHAIR,
|
||||
META_CURSOR_IBEAM,
|
||||
META_CURSOR_LAST
|
||||
} MetaCursor;
|
||||
|
||||
/**
|
||||
|
@ -114,4 +114,8 @@ void meta_screen_override_workspace_layout (MetaScreen *screen,
|
||||
gboolean vertical_layout,
|
||||
int n_rows,
|
||||
int n_columns);
|
||||
|
||||
void meta_screen_set_cursor (MetaScreen *screen,
|
||||
MetaCursor cursor);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user