[gtk+/rendering-cleanup: 51/144] API: Add gtk_cairo_draw_insertion_cursor()



commit f7d027af9966b383c78fc630aedb764fb54373a6
Author: Benjamin Otte <otte redhat com>
Date:   Sun Aug 15 19:38:32 2010 +0200

    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.

 gtk/gtk.symbols |    1 +
 gtk/gtkstyle.c  |   39 +++++++++++++++++++++++++++++++--------
 gtk/gtkstyle.h  |    6 ++++++
 3 files changed, 38 insertions(+), 8 deletions(-)
---
diff --git a/gtk/gtk.symbols b/gtk/gtk.symbols
index 6bda3d6..20ab7e6 100644
--- a/gtk/gtk.symbols
+++ b/gtk/gtk.symbols
@@ -1043,6 +1043,7 @@ gtk_style_new
 gtk_style_render_icon
 gtk_style_set_background
 gtk_draw_insertion_cursor
+gtk_cairo_draw_insertion_cursor
 gtk_style_get_style_property
 gtk_style_get_valist
 gtk_style_get
diff --git a/gtk/gtkstyle.c b/gtk/gtkstyle.c
index 7e97cde..accc2e8 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);
 }
diff --git a/gtk/gtkstyle.h b/gtk/gtkstyle.h
index f0946e7..f1c8399 100644
--- a/gtk/gtkstyle.h
+++ b/gtk/gtkstyle.h
@@ -900,6 +900,12 @@ void   gtk_draw_insertion_cursor    (GtkWidget          *widget,
                                      gboolean            is_primary,
                                      GtkTextDirection    direction,
                                      gboolean            draw_arrow);
+void   gtk_cairo_draw_insertion_cursor (GtkWidget          *widget,
+                                        cairo_t            *cr,
+                                        const GdkRectangle *location,
+                                        gboolean            is_primary,
+                                        GtkTextDirection    direction,
+                                        gboolean            draw_arrow);
 void   _gtk_widget_get_cursor_color (GtkWidget          *widget,
 				     GdkColor           *color);
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]