Get widgets working on the btree/buffer side. Display of them still

2000-11-03  Havoc Pennington  <hp@redhat.com>

        Get widgets working on the btree/buffer side. Display of them
	still doesn't work.

	* gtk/gtktextview.c: start implementing child widget stuff

	* gtk/gtktextiter.c (gtk_text_iter_get_child_anchor): new function

	* gtk/gtktextlayout.c: handle embedded widgets

	* gtk/gtktextdisplay.c: handle embedded widgets

	* gtk/gtktextchild.c: Implement all the child anchor goo

	* gtk/gtktextbuffer.c (gtk_text_buffer_create_child_anchor): New
	function

	* gtk/gtktextbtree.c: Add child anchor table to the btree struct
	(insert_pixbuf_or_widget_segment): abstract out common portions of
	creating a child anchor or a pixbuf segment.
	(gtk_text_btree_create_child_anchor): new function
	(gtk_text_btree_unregister_child_anchor): new function

	* gtk/gtkmarshal.list: added VOID:OBJECT,INT,INT for the
	allocate_child signal on GtkTextLayout

	* gtk/gtktextiter.c (gtk_text_iter_get_pixbuf): fix bogus return
	values
	(gtk_text_iter_get_child_anchor): new function

	* gtk/gtktextbuffer.c (gtk_text_buffer_real_changed): Add a
	default handler for the changed signal, which calls
	gtk_text_buffer_set_modified(), instead of just always emitting
	changed then calling set_modified() manually. I guess this is
	maybe more flexible. It seems logical.
This commit is contained in:
Havoc Pennington
2000-11-03 20:40:57 +00:00
committed by Havoc Pennington
parent b506b461cb
commit ca83d0a3dc
22 changed files with 976 additions and 205 deletions

View File

@ -69,19 +69,21 @@ typedef struct _GtkTextChildBody GtkTextChildBody;
struct _GtkTextChildBody
{
guint ref_count;
GtkTextChildAnchor *obj;
GSList *widgets;
GtkTextBTree *tree;
GtkTextLine *line;
};
GtkTextLineSegment *_gtk_widget_segment_new (void);
void _gtk_widget_segment_add (GtkTextLineSegment *widget_segment,
GtkWidget *child);
void _gtk_widget_segment_remove (GtkTextLineSegment *widget_segment,
GtkWidget *child);
void _gtk_widget_segment_ref (GtkTextLineSegment *widget_segment);
void _gtk_widget_segment_unref (GtkTextLineSegment *widget_segment);
GtkTextLineSegment *_gtk_widget_segment_new (void);
void _gtk_widget_segment_add (GtkTextLineSegment *widget_segment,
GtkWidget *child);
void _gtk_widget_segment_remove (GtkTextLineSegment *widget_segment,
GtkWidget *child);
void _gtk_widget_segment_ref (GtkTextLineSegment *widget_segment);
void _gtk_widget_segment_unref (GtkTextLineSegment *widget_segment);
GtkTextLayout* _gtk_anchored_child_get_layout (GtkWidget *child);
#ifdef __cplusplus
}