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
f044eda079
commit
9def55914c
@ -3863,7 +3863,8 @@ meta_display_create_x_cursor (MetaDisplay *display,
|
|||||||
MetaCursor cursor)
|
MetaCursor cursor)
|
||||||
{
|
{
|
||||||
Cursor xcursor;
|
Cursor xcursor;
|
||||||
guint glyph;
|
guint glyph = XC_num_glyphs;
|
||||||
|
const char *name = NULL;
|
||||||
|
|
||||||
switch (cursor)
|
switch (cursor)
|
||||||
{
|
{
|
||||||
@ -3900,14 +3901,38 @@ meta_display_create_x_cursor (MetaDisplay *display,
|
|||||||
case META_CURSOR_BUSY:
|
case META_CURSOR_BUSY:
|
||||||
glyph = XC_watch;
|
glyph = XC_watch;
|
||||||
break;
|
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:
|
default:
|
||||||
g_assert_not_reached ();
|
g_assert_not_reached ();
|
||||||
glyph = 0; /* silence compiler */
|
glyph = 0; /* silence compiler */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
xcursor = XCreateFontCursor (display->xdisplay, glyph);
|
if (name != NULL)
|
||||||
|
xcursor = XcursorLibraryLoadCursor (display->xdisplay, name);
|
||||||
|
else
|
||||||
|
xcursor = XCreateFontCursor (display->xdisplay, glyph);
|
||||||
|
|
||||||
return xcursor;
|
return xcursor;
|
||||||
}
|
}
|
||||||
|
@ -151,8 +151,6 @@ void meta_screen_foreach_window (MetaScreen *scree
|
|||||||
MetaScreenWindowFunc func,
|
MetaScreenWindowFunc func,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
|
|
||||||
void meta_screen_set_cursor (MetaScreen *screen,
|
|
||||||
MetaCursor cursor);
|
|
||||||
void meta_screen_update_cursor (MetaScreen *screen);
|
void meta_screen_update_cursor (MetaScreen *screen);
|
||||||
|
|
||||||
void meta_screen_tab_popup_create (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_NW_RESIZE: Resize north-western corner cursor
|
||||||
* @META_CURSOR_MOVE_OR_RESIZE_WINDOW: Move or resize cursor
|
* @META_CURSOR_MOVE_OR_RESIZE_WINDOW: Move or resize cursor
|
||||||
* @META_CURSOR_BUSY: Busy 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
|
typedef enum
|
||||||
{
|
{
|
||||||
@ -273,8 +280,15 @@ typedef enum
|
|||||||
META_CURSOR_NE_RESIZE,
|
META_CURSOR_NE_RESIZE,
|
||||||
META_CURSOR_NW_RESIZE,
|
META_CURSOR_NW_RESIZE,
|
||||||
META_CURSOR_MOVE_OR_RESIZE_WINDOW,
|
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;
|
} MetaCursor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -114,4 +114,8 @@ void meta_screen_override_workspace_layout (MetaScreen *screen,
|
|||||||
gboolean vertical_layout,
|
gboolean vertical_layout,
|
||||||
int n_rows,
|
int n_rows,
|
||||||
int n_columns);
|
int n_columns);
|
||||||
|
|
||||||
|
void meta_screen_set_cursor (MetaScreen *screen,
|
||||||
|
MetaCursor cursor);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user