#define GDK_CURSOR(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_CURSOR, GdkCursor))
#define GDK_IS_CURSOR(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_CURSOR))
-
-/**
- * GdkCursorType:
- * @GDK_X_CURSOR: 
- * @GDK_ARROW: 
- * @GDK_BASED_ARROW_DOWN: 
- * @GDK_BASED_ARROW_UP: 
- * @GDK_BOAT: 
- * @GDK_BOGOSITY: 
- * @GDK_BOTTOM_LEFT_CORNER: 
- * @GDK_BOTTOM_RIGHT_CORNER: 
- * @GDK_BOTTOM_SIDE: 
- * @GDK_BOTTOM_TEE: 
- * @GDK_BOX_SPIRAL: 
- * @GDK_CENTER_PTR: 
- * @GDK_CIRCLE: 
- * @GDK_CLOCK: 
- * @GDK_COFFEE_MUG: 
- * @GDK_CROSS: 
- * @GDK_CROSS_REVERSE: 
- * @GDK_CROSSHAIR: 
- * @GDK_DIAMOND_CROSS: 
- * @GDK_DOT: 
- * @GDK_DOTBOX: 
- * @GDK_DOUBLE_ARROW: 
- * @GDK_DRAFT_LARGE: 
- * @GDK_DRAFT_SMALL: 
- * @GDK_DRAPED_BOX: 
- * @GDK_EXCHANGE: 
- * @GDK_FLEUR: 
- * @GDK_GOBBLER: 
- * @GDK_GUMBY: 
- * @GDK_HAND1: 
- * @GDK_HAND2: 
- * @GDK_HEART: 
- * @GDK_ICON: 
- * @GDK_IRON_CROSS: 
- * @GDK_LEFT_PTR: 
- * @GDK_LEFT_SIDE: 
- * @GDK_LEFT_TEE: 
- * @GDK_LEFTBUTTON: 
- * @GDK_LL_ANGLE: 
- * @GDK_LR_ANGLE: 
- * @GDK_MAN: 
- * @GDK_MIDDLEBUTTON: 
- * @GDK_MOUSE: 
- * @GDK_PENCIL: 
- * @GDK_PIRATE: 
- * @GDK_PLUS: 
- * @GDK_QUESTION_ARROW: 
- * @GDK_RIGHT_PTR: 
- * @GDK_RIGHT_SIDE: 
- * @GDK_RIGHT_TEE: 
- * @GDK_RIGHTBUTTON: 
- * @GDK_RTL_LOGO: 
- * @GDK_SAILBOAT: 
- * @GDK_SB_DOWN_ARROW: 
- * @GDK_SB_H_DOUBLE_ARROW: 
- * @GDK_SB_LEFT_ARROW: 
- * @GDK_SB_RIGHT_ARROW: 
- * @GDK_SB_UP_ARROW: 
- * @GDK_SB_V_DOUBLE_ARROW: 
- * @GDK_SHUTTLE: 
- * @GDK_SIZING: 
- * @GDK_SPIDER: 
- * @GDK_SPRAYCAN: 
- * @GDK_STAR: 
- * @GDK_TARGET: 
- * @GDK_TCROSS: 
- * @GDK_TOP_LEFT_ARROW: 
- * @GDK_TOP_LEFT_CORNER: 
- * @GDK_TOP_RIGHT_CORNER: 
- * @GDK_TOP_SIDE: 
- * @GDK_TOP_TEE: 
- * @GDK_TREK: 
- * @GDK_UL_ANGLE: 
- * @GDK_UMBRELLA: 
- * @GDK_UR_ANGLE: 
- * @GDK_WATCH: 
- * @GDK_XTERM: 
- * @GDK_LAST_CURSOR: last cursor type
- * @GDK_BLANK_CURSOR: Blank cursor. Since 2.16
- * @GDK_CURSOR_IS_PIXMAP: type of cursors constructed with
- * gdk_cursor_new_from_pixbuf()
- *
- * Predefined cursors.
- *
- * Note that these IDs are directly taken from the X cursor font, and many
- * of these cursors are either not useful, or are not available on other platforms.
- *
- * The recommended way to create cursors is to use gdk_cursor_new_from_name().
- */
-typedef enum
-{
- GDK_X_CURSOR = 0,
- GDK_ARROW = 2,
- GDK_BASED_ARROW_DOWN = 4,
- GDK_BASED_ARROW_UP = 6,
- GDK_BOAT = 8,
- GDK_BOGOSITY = 10,
- GDK_BOTTOM_LEFT_CORNER = 12,
- GDK_BOTTOM_RIGHT_CORNER = 14,
- GDK_BOTTOM_SIDE = 16,
- GDK_BOTTOM_TEE = 18,
- GDK_BOX_SPIRAL = 20,
- GDK_CENTER_PTR = 22,
- GDK_CIRCLE = 24,
- GDK_CLOCK = 26,
- GDK_COFFEE_MUG = 28,
- GDK_CROSS = 30,
- GDK_CROSS_REVERSE = 32,
- GDK_CROSSHAIR = 34,
- GDK_DIAMOND_CROSS = 36,
- GDK_DOT = 38,
- GDK_DOTBOX = 40,
- GDK_DOUBLE_ARROW = 42,
- GDK_DRAFT_LARGE = 44,
- GDK_DRAFT_SMALL = 46,
- GDK_DRAPED_BOX = 48,
- GDK_EXCHANGE = 50,
- GDK_FLEUR = 52,
- GDK_GOBBLER = 54,
- GDK_GUMBY = 56,
- GDK_HAND1 = 58,
- GDK_HAND2 = 60,
- GDK_HEART = 62,
- GDK_ICON = 64,
- GDK_IRON_CROSS = 66,
- GDK_LEFT_PTR = 68,
- GDK_LEFT_SIDE = 70,
- GDK_LEFT_TEE = 72,
- GDK_LEFTBUTTON = 74,
- GDK_LL_ANGLE = 76,
- GDK_LR_ANGLE = 78,
- GDK_MAN = 80,
- GDK_MIDDLEBUTTON = 82,
- GDK_MOUSE = 84,
- GDK_PENCIL = 86,
- GDK_PIRATE = 88,
- GDK_PLUS = 90,
- GDK_QUESTION_ARROW = 92,
- GDK_RIGHT_PTR = 94,
- GDK_RIGHT_SIDE = 96,
- GDK_RIGHT_TEE = 98,
- GDK_RIGHTBUTTON = 100,
- GDK_RTL_LOGO = 102,
- GDK_SAILBOAT = 104,
- GDK_SB_DOWN_ARROW = 106,
- GDK_SB_H_DOUBLE_ARROW = 108,
- GDK_SB_LEFT_ARROW = 110,
- GDK_SB_RIGHT_ARROW = 112,
- GDK_SB_UP_ARROW = 114,
- GDK_SB_V_DOUBLE_ARROW = 116,
- GDK_SHUTTLE = 118,
- GDK_SIZING = 120,
- GDK_SPIDER = 122,
- GDK_SPRAYCAN = 124,
- GDK_STAR = 126,
- GDK_TARGET = 128,
- GDK_TCROSS = 130,
- GDK_TOP_LEFT_ARROW = 132,
- GDK_TOP_LEFT_CORNER = 134,
- GDK_TOP_RIGHT_CORNER = 136,
- GDK_TOP_SIDE = 138,
- GDK_TOP_TEE = 140,
- GDK_TREK = 142,
- GDK_UL_ANGLE = 144,
- GDK_UMBRELLA = 146,
- GDK_UR_ANGLE = 148,
- GDK_WATCH = 150,
- GDK_XTERM = 152,
- GDK_LAST_CURSOR,
- GDK_BLANK_CURSOR = -2,
- GDK_CURSOR_IS_PIXMAP = -1
-} GdkCursorType;
-
/* Cursors
*/
struct cursor_cache_key
{
GdkDisplay* display;
- GdkCursorType type;
const char* name;
};
GdkX11Cursor* cursor = (GdkX11Cursor*)listelem;
struct cursor_cache_key* key = (struct cursor_cache_key*)target;
- if ((cursor->cursor.type != key->type) ||
- (gdk_cursor_get_display (GDK_CURSOR (cursor)) != key->display))
+ if (gdk_cursor_get_display (GDK_CURSOR (cursor)) != key->display)
return 1; /* No match */
/* Elements marked as pixmap must be named cursors
* (since we don't store normal pixmap cursors
*/
- if (key->type == GDK_CURSOR_IS_PIXMAP)
- return strcmp (key->name, cursor->name);
-
- return 0; /* Match */
+ return strcmp (key->name, cursor->name);
}
/* Returns the cursor if there is a match, NULL if not
- * For named cursors type shall be GDK_CURSOR_IS_PIXMAP
- * For unnamed, typed cursors, name shall be NULL
*/
static GdkX11Cursor*
find_in_cache (GdkDisplay *display,
- GdkCursorType type,
const char *name)
{
GSList* res;
struct cursor_cache_key key;
key.display = display;
- key.type = type;
key.name = name;
res = g_slist_find_custom (cursor_cache, &key, cache_compare_func);
GdkDisplay *display;
Display *xdisplay;
GdkX11Cursor *private;
- XcursorImages *images = NULL;
+ XcursorImages *images;
XcursorImage *image;
gint size;
cairo_surface_t *surface;
size = XcursorGetDefaultSize (xdisplay);
theme = XcursorGetTheme (xdisplay);
- if (cursor->type == GDK_CURSOR_IS_PIXMAP)
- {
- if (private->name)
- images = XcursorLibraryLoadImages (private->name, theme, size);
- }
+ if (private->name)
+ images = XcursorLibraryLoadImages (private->name, theme, size);
else
- images = XcursorShapeLoadImages (cursor->type, theme, size);
+ images = NULL;
if (!images)
return NULL;
if (private->xcursor != None)
{
- if (cursor->type == GDK_BLANK_CURSOR)
- return;
-
- if (cursor->type == GDK_CURSOR_IS_PIXMAP)
- {
- if (private->name)
- new_cursor = XcursorLibraryLoadCursor (xdisplay, private->name);
- }
- else
- new_cursor = XcursorShapeLoadCursor (xdisplay, cursor->type);
+ if (private->name)
+ new_cursor = XcursorLibraryLoadCursor (xdisplay, private->name);
if (new_cursor != None)
{
}
private = g_object_new (GDK_TYPE_X11_CURSOR,
- "cursor-type", GDK_CURSOR_IS_PIXMAP,
"display", display,
NULL);
private->xcursor = xcursor;
}
else
{
- private = find_in_cache (display, GDK_CURSOR_IS_PIXMAP, name);
+ private = find_in_cache (display, name);
if (private)
{
}
private = g_object_new (GDK_TYPE_X11_CURSOR,
- "cursor-type", GDK_CURSOR_IS_PIXMAP,
"display", display,
NULL);
private->xcursor = xcursor;
xcursor = XCreatePixmapCursor (GDK_DISPLAY_XDISPLAY (display),
source_pixmap, mask_pixmap, &xfg, &xbg, x, y);
private = g_object_new (GDK_TYPE_X11_CURSOR,
- "cursor-type", GDK_CURSOR_IS_PIXMAP,
"display", display,
NULL);
private->xcursor = xcursor;