Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Dorota Czaplejewicz
gtk
Commits
da216c06
Commit
da216c06
authored
Dec 13, 2010
by
Matthias Clasen
Browse files
Add vfuncs for a bunch of cursor functionality to GdkDisplay
parent
dfe6ba93
Changes
6
Expand all
Hide whitespace changes
Inline
Side-by-side
gdk/gdkcursor.c
View file @
da216c06
...
...
@@ -27,8 +27,7 @@
#include
"config.h"
#include
"gdkcursor.h"
#include
"gdkdisplay.h"
#include
"gdkdisplayprivate.h"
#include
"gdkinternals.h"
...
...
@@ -61,11 +60,11 @@ G_DEFINE_BOXED_TYPE (GdkCursor, gdk_cursor,
/**
* gdk_cursor_ref:
* @cursor: a #GdkCursor
*
*
* Adds a reference to @cursor.
*
*
* Return value: Same @cursor that was passed in
*
*/
*/
GdkCursor
*
gdk_cursor_ref
(
GdkCursor
*
cursor
)
{
...
...
@@ -83,8 +82,7 @@ gdk_cursor_ref (GdkCursor *cursor)
*
* Removes a reference from @cursor, deallocating the cursor
* if no references remain.
*
**/
*/
void
gdk_cursor_unref
(
GdkCursor
*
cursor
)
{
...
...
@@ -100,14 +98,14 @@ gdk_cursor_unref (GdkCursor *cursor)
/**
* gdk_cursor_new:
* @cursor_type: cursor to create
*
*
* Creates a new cursor from the set of builtin cursors for the default display.
* See gdk_cursor_new_for_display().
*
* To make the cursor invisible, use %GDK_BLANK_CURSOR.
*
*
* Return value: a new #GdkCursor
*
*/
*/
GdkCursor
*
gdk_cursor_new
(
GdkCursorType
cursor_type
)
{
...
...
@@ -131,3 +129,144 @@ gdk_cursor_get_cursor_type (GdkCursor *cursor)
return
cursor
->
type
;
}
/**
* gdk_cursor_new_for_display:
* @display: the #GdkDisplay for which the cursor will be created
* @cursor_type: cursor to create
*
* Creates a new cursor from the set of builtin cursors.
* Some useful ones are:
* <itemizedlist>
* <listitem><para>
* <inlinegraphic format="PNG" fileref="right_ptr.png"></inlinegraphic> #GDK_RIGHT_PTR (right-facing arrow)
* </para></listitem>
* <listitem><para>
* <inlinegraphic format="PNG" fileref="crosshair.png"></inlinegraphic> #GDK_CROSSHAIR (crosshair)
* </para></listitem>
* <listitem><para>
* <inlinegraphic format="PNG" fileref="xterm.png"></inlinegraphic> #GDK_XTERM (I-beam)
* </para></listitem>
* <listitem><para>
* <inlinegraphic format="PNG" fileref="watch.png"></inlinegraphic> #GDK_WATCH (busy)
* </para></listitem>
* <listitem><para>
* <inlinegraphic format="PNG" fileref="fleur.png"></inlinegraphic> #GDK_FLEUR (for moving objects)
* </para></listitem>
* <listitem><para>
* <inlinegraphic format="PNG" fileref="hand1.png"></inlinegraphic> #GDK_HAND1 (a right-pointing hand)
* </para></listitem>
* <listitem><para>
* <inlinegraphic format="PNG" fileref="hand2.png"></inlinegraphic> #GDK_HAND2 (a left-pointing hand)
* </para></listitem>
* <listitem><para>
* <inlinegraphic format="PNG" fileref="left_side.png"></inlinegraphic> #GDK_LEFT_SIDE (resize left side)
* </para></listitem>
* <listitem><para>
* <inlinegraphic format="PNG" fileref="right_side.png"></inlinegraphic> #GDK_RIGHT_SIDE (resize right side)
* </para></listitem>
* <listitem><para>
* <inlinegraphic format="PNG" fileref="top_left_corner.png"></inlinegraphic> #GDK_TOP_LEFT_CORNER (resize northwest corner)
* </para></listitem>
* <listitem><para>
* <inlinegraphic format="PNG" fileref="top_right_corner.png"></inlinegraphic> #GDK_TOP_RIGHT_CORNER (resize northeast corner)
* </para></listitem>
* <listitem><para>
* <inlinegraphic format="PNG" fileref="bottom_left_corner.png"></inlinegraphic> #GDK_BOTTOM_LEFT_CORNER (resize southwest corner)
* </para></listitem>
* <listitem><para>
* <inlinegraphic format="PNG" fileref="bottom_right_corner.png"></inlinegraphic> #GDK_BOTTOM_RIGHT_CORNER (resize southeast corner)
* </para></listitem>
* <listitem><para>
* <inlinegraphic format="PNG" fileref="top_side.png"></inlinegraphic> #GDK_TOP_SIDE (resize top side)
* </para></listitem>
* <listitem><para>
* <inlinegraphic format="PNG" fileref="bottom_side.png"></inlinegraphic> #GDK_BOTTOM_SIDE (resize bottom side)
* </para></listitem>
* <listitem><para>
* <inlinegraphic format="PNG" fileref="sb_h_double_arrow.png"></inlinegraphic> #GDK_SB_H_DOUBLE_ARROW (move vertical splitter)
* </para></listitem>
* <listitem><para>
* <inlinegraphic format="PNG" fileref="sb_v_double_arrow.png"></inlinegraphic> #GDK_SB_V_DOUBLE_ARROW (move horizontal splitter)
* </para></listitem>
* <listitem><para>
* #GDK_BLANK_CURSOR (Blank cursor). Since 2.16
* </para></listitem>
* </itemizedlist>
*
* Return value: a new #GdkCursor
*
* Since: 2.2
**/
GdkCursor
*
gdk_cursor_new_for_display
(
GdkDisplay
*
display
,
GdkCursorType
cursor_type
)
{
g_return_val_if_fail
(
GDK_IS_DISPLAY
(
display
),
NULL
);
return
GDK_DISPLAY_GET_CLASS
(
display
)
->
get_cursor_for_type
(
display
,
cursor_type
);
}
/**
* gdk_cursor_new_from_name:
* @display: the #GdkDisplay for which the cursor will be created
* @name: the name of the cursor
*
* Creates a new cursor by looking up @name in the current cursor
* theme.
*
* Returns: a new #GdkCursor, or %NULL if there is no cursor with
* the given name
*
* Since: 2.8
*/
GdkCursor
*
gdk_cursor_new_from_name
(
GdkDisplay
*
display
,
const
gchar
*
name
)
{
g_return_val_if_fail
(
GDK_IS_DISPLAY
(
display
),
NULL
);
return
GDK_DISPLAY_GET_CLASS
(
display
)
->
get_cursor_for_name
(
display
,
name
);
}
/**
* gdk_cursor_new_from_pixbuf:
* @display: the #GdkDisplay for which the cursor will be created
* @pixbuf: the #GdkPixbuf containing the cursor image
* @x: the horizontal offset of the 'hotspot' of the cursor.
* @y: the vertical offset of the 'hotspot' of the cursor.
*
* Creates a new cursor from a pixbuf.
*
* Not all GDK backends support RGBA cursors. If they are not
* supported, a monochrome approximation will be displayed.
* The functions gdk_display_supports_cursor_alpha() and
* gdk_display_supports_cursor_color() can be used to determine
* whether RGBA cursors are supported;
* gdk_display_get_default_cursor_size() and
* gdk_display_get_maximal_cursor_size() give information about
* cursor sizes.
*
* If @x or @y are <literal>-1</literal>, the pixbuf must have
* options named "x_hot" and "y_hot", resp., containing
* integer values between %0 and the width resp. height of
* the pixbuf. (Since: 3.0)
*
* On the X backend, support for RGBA cursors requires a
* sufficently new version of the X Render extension.
*
* Returns: a new #GdkCursor.
*
* Since: 2.4
*/
GdkCursor
*
gdk_cursor_new_from_pixbuf
(
GdkDisplay
*
display
,
GdkPixbuf
*
pixbuf
,
gint
x
,
gint
y
)
{
g_return_val_if_fail
(
GDK_IS_DISPLAY
(
display
),
NULL
);
g_return_val_if_fail
(
GDK_IS_PIXBUF
(
pixbuf
),
NULL
);
return
GDK_DISPLAY_GET_CLASS
(
display
)
->
get_cursor_for_pixbuf
(
display
,
pixbuf
,
x
,
y
);
}
gdk/gdkdisplay.c
View file @
da216c06
...
...
@@ -2297,3 +2297,89 @@ gdk_display_has_pending (GdkDisplay *display)
{
return
GDK_DISPLAY_GET_CLASS
(
display
)
->
has_pending
(
display
);
}
/**
* gdk_display_supports_cursor_alpha:
* @display: a #GdkDisplay
*
* Returns %TRUE if cursors can use an 8bit alpha channel
* on @display. Otherwise, cursors are restricted to bilevel
* alpha (i.e. a mask).
*
* Returns: whether cursors can have alpha channels.
*
* Since: 2.4
*/
gboolean
gdk_display_supports_cursor_alpha
(
GdkDisplay
*
display
)
{
g_return_val_if_fail
(
GDK_IS_DISPLAY
(
display
),
FALSE
);
return
GDK_DISPLAY_GET_CLASS
(
display
)
->
supports_cursor_alpha
(
display
);
}
/**
* gdk_display_supports_cursor_color:
* @display: a #GdkDisplay
*
* Returns %TRUE if multicolored cursors are supported
* on @display. Otherwise, cursors have only a forground
* and a background color.
*
* Returns: whether cursors can have multiple colors.
*
* Since: 2.4
*/
gboolean
gdk_display_supports_cursor_color
(
GdkDisplay
*
display
)
{
g_return_val_if_fail
(
GDK_IS_DISPLAY
(
display
),
FALSE
);
return
GDK_DISPLAY_GET_CLASS
(
display
)
->
supports_cursor_color
(
display
);
}
/**
* gdk_display_get_default_cursor_size:
* @display: a #GdkDisplay
*
* Returns the default size to use for cursors on @display.
*
* Returns: the default cursor size.
*
* Since: 2.4
*/
guint
gdk_display_get_default_cursor_size
(
GdkDisplay
*
display
)
{
guint
width
,
height
;
g_return_val_if_fail
(
GDK_IS_DISPLAY
(
display
),
FALSE
);
GDK_DISPLAY_GET_CLASS
(
display
)
->
get_default_cursor_size
(
display
,
&
width
,
&
height
);
return
MIN
(
width
,
height
);
}
/**
* gdk_display_get_maximal_cursor_size:
* @display: a #GdkDisplay
* @width: (out): the return location for the maximal cursor width
* @height: (out): the return location for the maximal cursor height
*
* Gets the maximal size to use for cursors on @display.
*
* Since: 2.4
*/
void
gdk_display_get_maximal_cursor_size
(
GdkDisplay
*
display
,
guint
*
width
,
guint
*
height
)
{
g_return_if_fail
(
GDK_IS_DISPLAY
(
display
));
GDK_DISPLAY_GET_CLASS
(
display
)
->
get_maximal_cursor_size
(
display
,
width
,
height
);
}
gdk/gdkdisplayprivate.h
View file @
da216c06
...
...
@@ -21,6 +21,7 @@
#define __GDK_DISPLAY_PRIVATE_H__
#include
"gdkdisplay.h"
#include
"gdkcursor.h"
G_BEGIN_DECLS
...
...
@@ -127,15 +128,34 @@ struct _GdkDisplayClass
gboolean
(
*
supports_selection_notification
)
(
GdkDisplay
*
display
);
gboolean
(
*
request_selection_notification
)
(
GdkDisplay
*
display
,
GdkAtom
selection
);
gboolean
(
*
supports_shapes
)
(
GdkDisplay
*
display
);
gboolean
(
*
supports_input_shapes
)
(
GdkDisplay
*
display
);
gboolean
(
*
supports_composite
)
(
GdkDisplay
*
display
);
gboolean
(
*
supports_cursor_alpha
)
(
GdkDisplay
*
display
);
gboolean
(
*
supports_cursor_color
)
(
GdkDisplay
*
display
);
gboolean
(
*
supports_clipboard_persistence
)
(
GdkDisplay
*
display
);
void
(
*
store_clipboard
)
(
GdkDisplay
*
display
,
GdkWindow
*
clipboard_window
,
guint32
time_
,
const
GdkAtom
*
targets
,
gint
n_targets
);
gboolean
(
*
supports_shapes
)
(
GdkDisplay
*
display
);
gboolean
(
*
supports_input_shapes
)
(
GdkDisplay
*
display
);
gboolean
(
*
supports_composite
)
(
GdkDisplay
*
display
);
void
(
*
get_default_cursor_size
)
(
GdkDisplay
*
display
,
guint
*
width
,
guint
*
height
);
void
(
*
get_maximal_cursor_size
)
(
GdkDisplay
*
display
,
guint
*
width
,
guint
*
height
);
GdkCursor
*
(
*
get_cursor_for_type
)
(
GdkDisplay
*
display
,
GdkCursorType
type
);
GdkCursor
*
(
*
get_cursor_for_name
)
(
GdkDisplay
*
display
,
const
gchar
*
name
);
GdkCursor
*
(
*
get_cursor_for_pixbuf
)
(
GdkDisplay
*
display
,
GdkPixbuf
*
pixbuf
,
gint
x
,
gint
y
);
GList
*
(
*
list_devices
)
(
GdkDisplay
*
display
);
gboolean
(
*
send_client_message
)
(
GdkDisplay
*
display
,
GdkEvent
*
event
,
...
...
gdk/x11/gdkcursor-x11.c
View file @
da216c06
This diff is collapsed.
Click to expand it.
gdk/x11/gdkdisplay-x11.c
View file @
da216c06
...
...
@@ -2696,5 +2696,12 @@ _gdk_display_x11_class_init (GdkDisplayX11Class * class)
display_class
->
add_client_message_filter
=
gdk_x11_display_add_client_message_filter
;
display_class
->
get_app_launch_context
=
_gdk_x11_display_get_app_launch_context
;
display_class
->
get_drag_protocol
=
_gdk_x11_display_get_drag_protocol
;
display_class
->
get_cursor_for_type
=
_gdk_x11_display_get_cursor_for_type
;
display_class
->
get_cursor_for_name
=
_gdk_x11_display_get_cursor_for_name
;
display_class
->
get_cursor_for_pixbuf
=
_gdk_x11_display_get_cursor_for_pixbuf
;
display_class
->
get_default_cursor_size
=
_gdk_x11_display_get_default_cursor_size
;
display_class
->
get_maximal_cursor_size
=
_gdk_x11_display_get_maximal_cursor_size
;
display_class
->
supports_cursor_alpha
=
_gdk_x11_display_supports_cursor_alpha
;
display_class
->
supports_cursor_color
=
_gdk_x11_display_supports_cursor_color
;
}
gdk/x11/gdkprivate-x11.h
View file @
da216c06
...
...
@@ -157,6 +157,23 @@ void _gdk_x11_display_manager_add_display (GdkDisplayManager *manager,
void
_gdk_x11_display_manager_remove_display
(
GdkDisplayManager
*
manager
,
GdkDisplay
*
display
);
GdkCursor
*
_gdk_x11_display_get_cursor_for_type
(
GdkDisplay
*
display
,
GdkCursorType
type
);
GdkCursor
*
_gdk_x11_display_get_cursor_for_name
(
GdkDisplay
*
display
,
const
gchar
*
name
);
GdkCursor
*
_gdk_x11_display_get_cursor_for_pixbuf
(
GdkDisplay
*
display
,
GdkPixbuf
*
pixbuf
,
gint
x
,
gint
y
);
gboolean
_gdk_x11_display_supports_cursor_alpha
(
GdkDisplay
*
display
);
gboolean
_gdk_x11_display_supports_cursor_color
(
GdkDisplay
*
display
);
void
_gdk_x11_display_get_default_cursor_size
(
GdkDisplay
*
display
,
guint
*
width
,
guint
*
height
);
void
_gdk_x11_display_get_maximal_cursor_size
(
GdkDisplay
*
display
,
guint
*
width
,
guint
*
height
);
void
_gdk_x11_precache_atoms
(
GdkDisplay
*
display
,
const
gchar
*
const
*
atom_names
,
gint
n_atoms
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment