summaryrefslogtreecommitdiff
path: root/gtk/gtktextbuffer.c
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2001-01-04 17:48:43 +0000
committerHavoc Pennington <hp@src.gnome.org>2001-01-04 17:48:43 +0000
commitc7826b5f63930c960cdb53aa4935ee1f8f7f3b18 (patch)
treee62c661b717b8350d09f12113bdaead0a2f46483 /gtk/gtktextbuffer.c
parent7b8ec35897a3221780c73d47c08b82d7aa7f73dd (diff)
downloadgtk+-c7826b5f63930c960cdb53aa4935ee1f8f7f3b18.tar.gz
Adapt to uscore-ification of gtktextiterprivate
2001-01-03 Havoc Pennington <hp@redhat.com> * gtk/gtktextbtree.c: Adapt to uscore-ification of gtktextiterprivate * gtk/gtktextdisplay.c (gtk_text_layout_draw): remove use of private functions; remove inclusion of private headers. * gtk/gtktextlayout.c (gtk_text_layout_get_iter_at_line): Add this function, so we don't need private functions in gtktextdisplay.c * gtk/gtktextiterprivate.h: underscore-ification * gtk/gtkwidget.c: Clean up a bunch of docs that said "INTERNAL" to instead say "only useful to implement widgets" * gtk/gtkenums.h (GtkMovementStep): Rename GTK_MOVEMENT_CHARS, GTK_MOVEMENT_POSITIONS to GTK_MOVEMENT_LOGICAL_POSITIONS, GTK_MOVEMENT_VISUAL_POSITIONS. Resolves bug 40249. * gdk/x11/gdkwindow-x11.c (gdk_window_impl_x11_set_colormap): This function was completely broken * gtk/testtext.c (line_numbers_expose): use gtk_paint_layout * gtk/gtkvscale.c (gtk_vscale_draw_value): use gtk_paint_layout * gtk/gtkvruler.c (gtk_vruler_draw_ticks): use gtk_paint_layout * gtk/gtklabel.c (gtk_label_expose): use gtk_paint_layout * gtk/gtkhscale.c (gtk_hscale_draw_value): use gtk_paint_layout * gtk/gtkhruler.c (gtk_hruler_draw_ticks): use gtk_paint_layout * gtk/gtkcellrenderertext.c (gtk_cell_renderer_text_render): use gtk_paint_layout * gtk/gtkaccellabel.c (gtk_accel_label_expose_event): use gtk_paint_layout * gtk/gtkstyle.h: Add draw/paint expander to draw tree expanders. Progress on bug 40103. Add draw_layout to draw a PangoLayout. (struct _GtkStyleClass): Remove draw_cross, draw_oval, draw_ramp, which were not implemented. * gtk/gtktextbuffer.h (struct _GtkTextBufferClass): Add insert_pixbuf signal. Rename delete_text to delete_range since it also deletes pixbufs and child anchors. This almost closes bug 40245 (still need to deal with child anchors) * gtk/gtktextbuffer.c (gtk_text_buffer_class_init): Add insert_pixbuf, change signal names as appropriate, change types of signals taking marks/tags to have the specific type, not just G_TYPE_OBJECT * gtk/gtkmain.c (gtk_get_current_event_state): Add this function; closes bug 40051 * gtk/gtkoptionmenu.c (gtk_option_menu_set_history): clean up unnecessary remove_contents() call (gtk_option_menu_class_init): add a "changed" signal, closes bug 40039 (gtk_option_menu_update_contents): emit "changed" if the active menu item changes * gtk/gdk-pixbuf-loader.c (gdk_pixbuf_loader_frame_done): fix bad cast to GtkObject, reported by Jonas Borgstrom (gdk_pixbuf_loader_finalize): don't close the loader on finalize; we can't do stuff with side effects in finalize. Instead, spew a warning if the loader isn't closed. * gdk/x11/gdkdrawable-x11.c (gdk_drawable_impl_x11_finalize): free colormap in here, non-X ports probably need to sync to this change * gdk/x11/gdkdrawable-x11.c (gdk_x11_set_colormap): remove assertion that colormap != NULL, you can set the colormap to NULL if you like. * Makefile.am: remove gtk-config-2.0 * configure.in: Use pkg-config to locate GLib. Remove separated-out GMODULE_LIBS, GMODULE_CFLAGS; these were not used, and the gmodule libs/cflags were in GLIB_LIBS GLIB_CFLAGS anyhow. Use pkg-config to locate Pango. Output correct Pango libs to gdk-2.0.pc.in. Fix test for FREETYPE_CONFIG (typo fix). * Makefile.am (pkgconfig_DATA): install only target-specific pc files (install-data-local): symlink gtk+-2.0.pc and gdk-2.0.pc to the X11 pc files * gtk+-2.0.pc.in (Requires): require the GDK for the current target unref from here
Diffstat (limited to 'gtk/gtktextbuffer.c')
-rw-r--r--gtk/gtktextbuffer.c72
1 files changed, 50 insertions, 22 deletions
diff --git a/gtk/gtktextbuffer.c b/gtk/gtktextbuffer.c
index 0db7702ac7..a2c13ac0d3 100644
--- a/gtk/gtktextbuffer.c
+++ b/gtk/gtktextbuffer.c
@@ -48,7 +48,8 @@ struct _ClipboardRequest
enum {
INSERT_TEXT,
- DELETE_TEXT,
+ INSERT_PIXBUF,
+ DELETE_RANGE,
CHANGED,
MODIFIED_CHANGED,
MARK_SET,
@@ -83,7 +84,10 @@ static void gtk_text_buffer_real_insert_text (GtkTextBuffer *buffe
GtkTextIter *iter,
const gchar *text,
gint len);
-static void gtk_text_buffer_real_delete_text (GtkTextBuffer *buffer,
+static void gtk_text_buffer_real_insert_pixbuf (GtkTextBuffer *buffer,
+ GtkTextIter *iter,
+ GdkPixbuf *pixbuf);
+static void gtk_text_buffer_real_delete_range (GtkTextBuffer *buffer,
GtkTextIter *start,
GtkTextIter *end);
static void gtk_text_buffer_real_apply_tag (GtkTextBuffer *buffer,
@@ -141,7 +145,8 @@ gtk_text_buffer_class_init (GtkTextBufferClass *klass)
object_class->finalize = gtk_text_buffer_finalize;
klass->insert_text = gtk_text_buffer_real_insert_text;
- klass->delete_text = gtk_text_buffer_real_delete_text;
+ klass->insert_pixbuf = gtk_text_buffer_real_insert_pixbuf;
+ klass->delete_range = gtk_text_buffer_real_delete_range;
klass->apply_tag = gtk_text_buffer_real_apply_tag;
klass->remove_tag = gtk_text_buffer_real_remove_tag;
klass->changed = gtk_text_buffer_real_changed;
@@ -164,11 +169,27 @@ gtk_text_buffer_class_init (GtkTextBufferClass *klass)
GTK_TYPE_POINTER,
GTK_TYPE_INT);
- signals[DELETE_TEXT] =
- g_signal_newc ("delete_text",
+ signals[INSERT_PIXBUF] =
+ g_signal_newc ("insert_pixbuf",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (GtkTextBufferClass, insert_pixbuf),
+ NULL,
+ gtk_marshal_VOID__BOXED_OBJECT,
+ GTK_TYPE_NONE,
+ 2,
+#if 0
+ /* FIXME */
+ GTK_TYPE_TEXT_ITER,
+#endif
+ GTK_TYPE_POINTER,
+ GDK_TYPE_PIXBUF);
+
+ signals[DELETE_RANGE] =
+ g_signal_newc ("delete_range",
G_TYPE_FROM_CLASS (object_class),
G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GtkTextBufferClass, delete_text),
+ G_STRUCT_OFFSET (GtkTextBufferClass, delete_range),
NULL,
gtk_marshal_VOID__BOXED_BOXED,
GTK_TYPE_NONE,
@@ -211,7 +232,7 @@ gtk_text_buffer_class_init (GtkTextBufferClass *klass)
GTK_TYPE_NONE,
2,
GTK_TYPE_TEXT_ITER,
- G_TYPE_OBJECT);
+ GTK_TYPE_TEXT_MARK);
signals[MARK_DELETED] =
g_signal_newc ("mark_deleted",
@@ -222,7 +243,7 @@ gtk_text_buffer_class_init (GtkTextBufferClass *klass)
gtk_marshal_VOID__OBJECT,
GTK_TYPE_NONE,
1,
- G_TYPE_OBJECT);
+ GTK_TYPE_TEXT_MARK);
signals[APPLY_TAG] =
g_signal_newc ("apply_tag",
@@ -233,7 +254,7 @@ gtk_text_buffer_class_init (GtkTextBufferClass *klass)
gtk_marshal_VOID__OBJECT_BOXED_BOXED,
GTK_TYPE_NONE,
3,
- G_TYPE_OBJECT,
+ GTK_TYPE_TEXT_TAG,
GTK_TYPE_TEXT_ITER,
GTK_TYPE_TEXT_ITER);
@@ -246,7 +267,7 @@ gtk_text_buffer_class_init (GtkTextBufferClass *klass)
gtk_marshal_VOID__OBJECT_BOXED_BOXED,
GTK_TYPE_NONE,
3,
- G_TYPE_OBJECT,
+ GTK_TYPE_TEXT_TAG,
GTK_TYPE_TEXT_ITER,
GTK_TYPE_TEXT_ITER);
@@ -1077,9 +1098,9 @@ gtk_text_buffer_insert_with_tags_by_name (GtkTextBuffer *buffer,
*/
static void
-gtk_text_buffer_real_delete_text (GtkTextBuffer *buffer,
- GtkTextIter *start,
- GtkTextIter *end)
+gtk_text_buffer_real_delete_range (GtkTextBuffer *buffer,
+ GtkTextIter *start,
+ GtkTextIter *end)
{
g_return_if_fail (GTK_IS_TEXT_BUFFER (buffer));
g_return_if_fail (start != NULL);
@@ -1116,7 +1137,7 @@ gtk_text_buffer_emit_delete (GtkTextBuffer *buffer,
* to fix.
*/
g_signal_emit (G_OBJECT (buffer),
- signals[DELETE_TEXT],
+ signals[DELETE_RANGE],
0,
start, end);
}
@@ -1129,7 +1150,7 @@ gtk_text_buffer_emit_delete (GtkTextBuffer *buffer,
*
* Deletes text between @start and @end. The order of @start and @end
* is not actually relevant; gtk_text_buffer_delete () will reorder
- * them. This function actually emits the "delete_text" signal, and
+ * them. This function actually emits the "delete_range" signal, and
* the default handler of that signal deletes the text. Because the
* buffer is modified, all outstanding iterators become invalid after
* calling this function; however, the @start and @end will be
@@ -1360,9 +1381,19 @@ gtk_text_buffer_get_slice (GtkTextBuffer *buffer,
}
/*
- * Pixmaps
+ * Pixbufs
*/
+static void
+gtk_text_buffer_real_insert_pixbuf (GtkTextBuffer *buffer,
+ GtkTextIter *iter,
+ GdkPixbuf *pixbuf)
+{
+ _gtk_text_btree_insert_pixbuf (iter, pixbuf);
+
+ g_signal_emit (G_OBJECT (buffer), signals[CHANGED], 0);
+}
+
void
gtk_text_buffer_insert_pixbuf (GtkTextBuffer *buffer,
GtkTextIter *iter,
@@ -1372,11 +1403,8 @@ gtk_text_buffer_insert_pixbuf (GtkTextBuffer *buffer,
g_return_if_fail (iter != NULL);
g_return_if_fail (GDK_IS_PIXBUF (pixbuf));
- _gtk_text_btree_insert_pixbuf (iter, pixbuf);
-
- /* FIXME pixbuf-specific signal like insert_text */
-
- g_signal_emit (G_OBJECT (buffer), signals[CHANGED], 0);
+ g_signal_emit (G_OBJECT (buffer), signals[INSERT_PIXBUF], 0,
+ iter, pixbuf);
}
/*
@@ -1411,7 +1439,7 @@ gtk_text_buffer_mark_set (GtkTextBuffer *buffer,
const GtkTextIter *location,
GtkTextMark *mark)
{
- /* IMO this should NOT work like insert_text and delete_text,
+ /* IMO this should NOT work like insert_text and delete_range,
where the real action happens in the default handler.
The reason is that the default handler would be _required_,