summaryrefslogtreecommitdiff
path: root/gtk/gtkstyle.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2010-08-15 19:38:32 +0200
committerBenjamin Otte <otte@redhat.com>2010-09-26 15:03:00 +0200
commitac48f2330df7b367e5afc12947bf9de8d10b3a89 (patch)
tree2921fbd1e5cf8e4673724430e931397dd053d633 /gtk/gtkstyle.c
parent3d340d744933891f5bfeb14324689f62115ba210 (diff)
downloadgtk+-ac48f2330df7b367e5afc12947bf9de8d10b3a89.tar.gz
API: Add gtk_cairo_draw_insertion_cursor()
For now just add it instead of replacing the current function. In the end, this one should probably be renamed to gtk_draw_insertion_cursor() and the current gtk_draw_insertion_cursor() should die.
Diffstat (limited to 'gtk/gtkstyle.c')
-rw-r--r--gtk/gtkstyle.c39
1 files changed, 31 insertions, 8 deletions
diff --git a/gtk/gtkstyle.c b/gtk/gtkstyle.c
index 6ab4e47839..0344a9659b 100644
--- a/gtk/gtkstyle.c
+++ b/gtk/gtkstyle.c
@@ -6494,12 +6494,29 @@ _gtk_widget_get_cursor_color (GtkWidget *widget,
*color = gtk_widget_get_style (widget)->text[GTK_STATE_NORMAL];
}
-static void
-draw_insertion_cursor (GtkWidget *widget,
- cairo_t *cr,
- const GdkRectangle *location,
- GtkTextDirection direction,
- gboolean draw_arrow)
+/**
+ * gtk_cairo_draw_insertion_cursor:
+ * @widget: a #GtkWidget
+ * @cr: cairo context to draw to
+ * @location: location where to draw the cursor (@location->width is ignored)
+ * @is_primary: if the cursor should be the primary cursor color.
+ * @direction: whether the cursor is left-to-right or
+ * right-to-left. Should never be #GTK_TEXT_DIR_NONE
+ * @draw_arrow: %TRUE to draw a directional arrow on the
+ * cursor. Should be %FALSE unless the cursor is split.
+ *
+ * Draws a text caret on @cr at @location. This is not a style function
+ * but merely a convenience function for drawing the standard cursor shape.
+ *
+ * Since: 3.0
+ **/
+void
+gtk_cairo_draw_insertion_cursor (GtkWidget *widget,
+ cairo_t *cr,
+ const GdkRectangle *location,
+ gboolean is_primary,
+ GtkTextDirection direction,
+ gboolean draw_arrow)
{
gint stem_width;
gint arrow_width;
@@ -6507,6 +6524,13 @@ draw_insertion_cursor (GtkWidget *widget,
gfloat cursor_aspect_ratio;
gint offset;
+ g_return_if_fail (GTK_IS_WIDGET (widget));
+ g_return_if_fail (cr != NULL);
+ g_return_if_fail (location != NULL);
+ g_return_if_fail (direction != GTK_TEXT_DIR_NONE);
+
+ gdk_cairo_set_source_color (cr, get_insertion_cursor_color (widget, is_primary));
+
/* When changing the shape or size of the cursor here,
* propagate the changes to gtktextview.c:text_window_invalidate_cursors().
*/
@@ -6593,8 +6617,7 @@ gtk_draw_insertion_cursor (GtkWidget *widget,
cairo_clip (cr);
}
- gdk_cairo_set_source_color (cr, get_insertion_cursor_color (widget, is_primary));
- draw_insertion_cursor (widget, cr, location, direction, draw_arrow);
+ gtk_cairo_draw_insertion_cursor (widget, cr, location, is_primary, direction, draw_arrow);
cairo_destroy (cr);
}