Index: gtk/gtkentry.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtkentry.c,v
retrieving revision 1.149
diff -c -r1.149 gtkentry.c
*** gtk/gtkentry.c	2001/09/19 00:49:51	1.149
--- gtk/gtkentry.c	2001/09/24 19:26:07
***************
*** 469,474 ****
--- 469,481 ----
  							       GDK_TYPE_COLOR,
  							       G_PARAM_READABLE));
  
+   gtk_widget_class_install_style_property (widget_class,
+ 					   g_param_spec_int ("cursor_line_thickness",
+ 							     _("Cursor line thickness"),
+ 							     _("Line thickness with which to draw insertion cursor"),
+ 							     0, 32, 1,
+ 							     G_PARAM_READABLE));
+ 
    signals[INSERT_TEXT] =
      gtk_signal_new ("insert_text",
  		    GTK_RUN_LAST,
***************
*** 934,949 ****
  {
    GdkColor *cursor_color;
    GdkColor red = {0, 0xffff, 0x0000, 0x0000};
    
    if (entry->cursor_gc)
      gdk_gc_unref (entry->cursor_gc);
! 
    gtk_widget_style_get (GTK_WIDGET (entry), "cursor_color", &cursor_color, NULL);
!       entry->cursor_gc = gdk_gc_new (entry->text_area);
    if (cursor_color)
      gdk_gc_set_rgb_fg_color (entry->cursor_gc, cursor_color);
    else
      gdk_gc_set_rgb_fg_color (entry->cursor_gc, &red);
  }
  
  static void
--- 941,969 ----
  {
    GdkColor *cursor_color;
    GdkColor red = {0, 0xffff, 0x0000, 0x0000};
+   gint cursor_line_thickness = 1;
    
    if (entry->cursor_gc)
      gdk_gc_unref (entry->cursor_gc);
!   
    gtk_widget_style_get (GTK_WIDGET (entry), "cursor_color", &cursor_color, NULL);
!   entry->cursor_gc = gdk_gc_new (entry->text_area);
    if (cursor_color)
      gdk_gc_set_rgb_fg_color (entry->cursor_gc, cursor_color);
    else
      gdk_gc_set_rgb_fg_color (entry->cursor_gc, &red);
+ 
+   gtk_widget_style_get (GTK_WIDGET (entry),
+ 			"cursor_line_thickness",
+ 			&cursor_line_thickness,
+ 			NULL);
+ 
+   if (cursor_line_thickness)
+     gdk_gc_set_line_attributes (entry->cursor_gc,
+ 				cursor_line_thickness,
+ 				GDK_LINE_SOLID,
+ 				GDK_CAP_BUTT,
+ 				GDK_JOIN_MITER);
  }
  
  static void
Index: gtk/gtksettings.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtksettings.c,v
retrieving revision 1.16
diff -c -r1.16 gtksettings.c
*** gtk/gtksettings.c	2001/08/11 20:27:36	1.16
--- gtk/gtksettings.c	2001/09/24 19:26:09
***************
*** 28,34 ****
    PROP_CURSOR_BLINK_TIME,
    PROP_SPLIT_CURSOR,
    PROP_THEME_NAME,
!   PROP_KEY_THEME_NAME
  };
  
  
--- 28,36 ----
    PROP_CURSOR_BLINK_TIME,
    PROP_SPLIT_CURSOR,
    PROP_THEME_NAME,
!   PROP_KEY_THEME_NAME,
!   PROP_FOCUS_LINE_WIDTH,
!   PROP_FOCUS_LINE_PATTERN
  };
  
  
***************
*** 188,193 ****
--- 190,211 ----
  								  G_PARAM_READWRITE),
                                               NULL);
    g_assert (result == PROP_KEY_THEME_NAME);
+   result = settings_install_property_parser (class,
+                                              g_param_spec_int ("gtk-focus-line-width",
+ 							       _("Focus-draw linewidth"),
+ 							       _("Linewidth of default focus indication box"),
+ 							       0, 8, 1,
+ 							       G_PARAM_READWRITE),
+                                              NULL);
+   g_assert (result == PROP_FOCUS_LINE_WIDTH);
+   result = settings_install_property_parser (class,
+                                              g_param_spec_string ("gtk-focus-line-pattern",
+ 								  _("Focus-draw line dashes"),
+ 								  _("Dash pattern for default focus indication"),
+ 								  "\1\1",
+ 								  G_PARAM_READWRITE),
+                                              NULL);
+   g_assert (result == PROP_FOCUS_LINE_PATTERN);
  }
  
  static void
Index: gtk/gtkstyle.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtkstyle.c,v
retrieving revision 1.80
diff -c -r1.80 gtkstyle.c
*** gtk/gtkstyle.c	2001/09/18 20:06:46	1.80
--- gtk/gtkstyle.c	2001/09/24 19:26:13
***************
*** 3774,3791 ****
  			gint           height)
  {
    GdkPoint points[5];
    
    sanitize_size (window, &width, &height);
    
    if (area)
      gdk_gc_set_clip_rectangle (style->black_gc, area);
  
!   gdk_gc_set_line_attributes (style->black_gc, 1, GDK_LINE_ON_OFF_DASH, 0, 0);
  
    if (detail && !strcmp (detail, "add-mode"))
      gdk_gc_set_dashes (style->black_gc, 0, "\4\4", 2);
    else
!     gdk_gc_set_dashes (style->black_gc, 0, "\1\1", 2);
  
    points[0].x = x;
    points[0].y = y;
--- 3774,3801 ----
  			gint           height)
  {
    GdkPoint points[5];
+   gint8    *dash_list;
+   gint     line_width = 2;
+   GValue   value = { 0, };
+ 
+   g_object_get (gtk_settings_get_default (),
+ 		"gtk-focus-line-width",
+ 		&line_width,
+ 		"gtk-focus-line-pattern",
+ 		(gchar *)&dash_list,
+ 		NULL);
    
    sanitize_size (window, &width, &height);
    
    if (area)
      gdk_gc_set_clip_rectangle (style->black_gc, area);
  
!   gdk_gc_set_line_attributes (style->black_gc, line_width, GDK_LINE_ON_OFF_DASH, 0, 0);
  
    if (detail && !strcmp (detail, "add-mode"))
      gdk_gc_set_dashes (style->black_gc, 0, "\4\4", 2);
    else
!     gdk_gc_set_dashes (style->black_gc, 0, dash_list, strlen (dash_list));
  
    points[0].x = x;
    points[0].y = y;
Index: gtk/gtktextdisplay.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtktextdisplay.c,v
retrieving revision 1.29
diff -c -r1.29 gtktextdisplay.c
*** gtk/gtktextdisplay.c	2001/09/19 00:49:52	1.29
--- gtk/gtktextdisplay.c	2001/09/24 19:26:14
***************
*** 485,491 ****
  render_para (GdkDrawable        *drawable,
               GtkTextRenderState *render_state,
               GtkTextLineDisplay *line_display,
!              /* Top-left corner of paragraph including all margins */
               int                 x,
               int                 y,
               int                 selection_start_index,
--- 485,491 ----
  render_para (GdkDrawable        *drawable,
               GtkTextRenderState *render_state,
               GtkTextLineDisplay *line_display,
!              /* Top-left corner of paragraph including all margin */
               int                 x,
               int                 y,
               int                 selection_start_index,
***************
*** 733,738 ****
--- 733,739 ----
    GtkTextRenderState *render_state;
    GtkTextIter selection_start, selection_end;
    gboolean have_selection = FALSE;
+   gint cursor_line_thickness = 1;
    GSList *line_list;
    GSList *tmp_list;
    
***************
*** 823,828 ****
--- 824,834 ----
            /* We paint the cursors last, because they overlap another chunk
           and need to appear on top. */
  
+ 	  gtk_widget_style_get (widget,
+ 				"cursor_line_thickness",
+ 				&cursor_line_thickness,
+ 				NULL);
+ 	      
            cursor_list = line_display->cursors;
            while (cursor_list)
              {
***************
*** 835,840 ****
--- 841,854 ----
                  gc = widget->style->text_gc[GTK_STATE_NORMAL];
  
                gdk_gc_set_clip_rectangle (gc, &clip);
+ 	      
+ 	      if (cursor_line_thickness)
+ 	        gdk_gc_set_line_attributes (gc,
+ 					    cursor_line_thickness,
+ 					    GDK_LINE_SOLID,
+ 					    GDK_CAP_BUTT,
+ 					    GDK_JOIN_MITER);
+ 
                gdk_draw_line (drawable, gc,
                               line_display->x_offset + cursor->x - x_offset,
                               current_y + line_display->top_margin + cursor->y,
Index: gtk/gtktextview.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtktextview.c,v
retrieving revision 1.112
diff -c -r1.112 gtktextview.c
*** gtk/gtktextview.c	2001/09/22 00:08:18	1.112
--- gtk/gtktextview.c	2001/09/24 19:26:18
***************
*** 129,134 ****
--- 129,135 ----
    PROP_INDENT,
    PROP_TABS,
    PROP_CURSOR_VISIBLE,
+   PROP_CURSOR_THICKNESS,
    LAST_PROP
  };
  
***************
*** 618,624 ****
  							 TRUE,
  							 G_PARAM_READWRITE));
  
!   
    /*
     * Signals
     */
--- 619,630 ----
  							 TRUE,
  							 G_PARAM_READWRITE));
  
!   gtk_widget_class_install_style_property (gobject_class,
! 					   g_param_spec_int ("cursor_line_thickness",
! 							     _("Cursor line thickness"),
! 							     _("Line thickness with which to draw insertion cursor"),
! 							     0, 32, 1,
! 							     G_PARAM_READABLE));
    /*
     * Signals
     */
