Use GSlice to allocate all types of segments:
- char
- toggle
- mark
- pixbuf
- child widget
Char segments are a bit more complicated because the length of the text
is determined at run time and stored in the 'byte_count' field. If the
text is long, GSlice will call the system malloc() anyway, so it's
better to always use GSlice for GtkTextLineSegment.
Toggle segments are also freed in gtktextbtree.c, hence the function
_gtk_toggle_segment_free() (for a later commit it would be nice to
rename those functions with the _gtk_text prefix).
https://bugzilla.gnome.org/show_bug.cgi?id=727908
Especially the gtk_*_type ones in gtktexttypes.h were mentioned in
gtk.symbols presumably by accident. That header isn't even installed,
so no way can they be supposed to be public.
gtk_text_attr_appearance_type is from the installed but "semi-private"
gtktextlayout.h, so drop that one too from gtk.symbols for now.
The use of gtk_text_unknown_char_utf8 is bit of a mess. Code in a few
files knew implicitly that it is three bytes. Define a symbolic name
for the length of it instead. Add an exported function
gtk_text_unknown_char_utf8_gtk_tests_only() that returns a pointer to
it just for the sake of gtk/tests/textbuffer.c. Prefix the variable
with an underscore.
I doubt the usefulness of the test_utf8() in textbuffer.c. If it could
be dropped, gtk_text_unknown_char_utf8_gtk_tests_only() could be
dropped, too.
Preferrably should be made just into a local variable for libgtk like
_gdk_debug_flags for libgdk. But for now used by
gtk/tests/textbuffer.c and modules/printbackends/cups/gtkprintbackendcups.c.
2007-11-15 Yevgen Muntyan <muntyan@tamu.edu>
* gtk/gtktextbtree.h:
* gtk/gtktextbtree.c: new functions _gtk_text_btree_get_insert()
and _gtk_text_btree_get_selection_bound() (#497102).
* gtk/gtktextbuffer.c (gtk_text_buffer_get_insert),
(gtk_text_buffer_get_selection_bound): use them here instead of
hash table lookup.
svn path=/trunk/; revision=18996
2007-10-26 Owen Taylor <otaylor@redhat.com>
* gtk/gtktextbtree.c (_gtk_text_btree_char_is_invisible):
Pay attention to tags that turn invisibility off as well
as tags that turn invsibility on. (#488051, Mathias Hasselmann)
svn path=/trunk/; revision=18949
2007-06-01 Yevgen Muntyan <muntyan@tamu.edu>
Avoid recreating pangolayouts in GtkTextView on cursor movement
(#435405, Behdad Esfahbod).
* gtk/gtktextlayout.c:
* gtk/gtktextlayout.h: new GtkTextLayout method invalidate_cursors(),
and functions gtk_text_layout_invalidate_cursors() and
gtk_text_layout_cursors_changed(), to use when invalidation is due
to moved marks or changed selection.
* gtk/gtktextbtree.c:
* gtk/gtktextbtree.h: use what's appropriate when invalidating layout.
* gtk/gtk.symbols: add new functions.
* README.in: added a note about changed GtkTextLayout API.
svn path=/trunk/; revision=18000
2007-05-25 Matthias Clasen <mclasen@redhat.com>
Allow to separate GtkTextMark creation from buffer insertion.
(#132818, Gustavo Giráldez, patch by Yevgen Muntyan)
* gtk/gtktextmarkprivate.h:
* gtk/gtktextmark.[hc] (gtk_text_mark_new): New function to
create a GtkTextMark.
* gtk/gtktextbuffer.[hc] (gtk_text_buffer_add_mark): New
function to add an existing mark to a buffer.
* gtk/gtktextbtree.c: Allow adding existing marks.
* gtk/gtk.symbols: Add new functions.
* tests/testtextbuffer.c: Add some tests for new mark
functionality.
svn path=/trunk/; revision=17922
2007-02-15 Matthias Clasen <mclasen@redhat.com>
* gtk/gtktextbtree.c (_gtk_text_btree_delete): Free the lines
even if there are no views. (#408018, Albert Huang)
svn path=/trunk/; revision=17302
2006-05-13 Matthias Clasen <mclasen@redhat.com>
* gtk/gtktextbtree.c:
* gtk/gtktextview.c: Move some asserts to the right
place. (#341661, #341665, Pascal Terjan)
2005-10-11 Matthias Clasen <mclasen@redhat.com>
* gtk/gtktextbtree.c (_gtk_text_btree_delete): Try to match an off
toggle here with the matching on toggle if it immediately follows.
This is a common case, and handling it here prevents quadratic blowup
in cleanup_line() below. (#317125)
* gtk/gtktextsegment.h:
* gtk/gtktextsegment.c (_gtk_char_segment_new_from_two_strings): Pass
the character counts into this function instead of computing them
again.
2005-05-26 Matthias Clasen <mclasen@redhat.com>
* gtk/gtktextbtree.c (_gtk_text_btree_tag): Queue the
redisplay after modifying the tag in the btree, otherwise
we end up showing the old tags until the next redraw comes
around. (#143537, Gary Kramlich)
2005-03-20 Matthias Clasen <mclasen@redhat.com>
Make PLT-reduction work with gcc4, and don't include
everything in gdkalias.h:
* gtk/grk.symbols: Group symbols by header and source file.
* gtk/makegtkalias.pl: Protect definitions by the same
preprocessor symbols used to guard the headers. Move
the alias declarations to a separate file which is
produced when calling makegtkalias.pl -def
* gdk/Makefile.am (gtkaliasdef.c): Add a rule to generate
this file.
* gtk/*.c: Include gtkalias.h after the other headers,
include gtkaliasdef.c at the bottom.
* gtk/*.h: Small cleanups.
Mon Aug 9 12:48:04 2004 Matthias Clasen <maclas@gmx.de>
Add hidden aliases for exported symbols which are
used internally in order to get rid of many PLT
entries. (#145519, Arjan van de Ven)
* gtk/Makefile.am: Add rules to generate gtk.def and
from gtk.symbols, and make make check check the abi
with abicheck.sh.
(gtk_private_h_sources): Add gtkinternals.h
(gtk_built_private_headers): Add gtkalias.h
(gtk_extra_sources): Add gtk.symbols
(EXTRA_DIST): Add makegtkalias.pl and abicheck.sh
* gtk/gtk.symbols: New file. Definition of the GTK+ ABI.
The file can be processed by cpp to filter out certain
subsets of symbols.
* gtk/abicheck.sh: New file. Script to check the actually
symbols exported from libgtk-x11.2.0.so against the symbols
found in gtk.symbols.
* gtk/makegtkalias.pl: New file. Perl script to generate the
header containing the alias definitions for internally used
exported symbols from a list of symbols.
* gtk/gtkinternals.h: New file. An uninstalled header listing
symbols which must be exported for some reason and do not appear
in any other header.
* gtk/*.c: Include gtkalias.h
2004-04-19 Matthias Clasen <mclasen@redhat.com>
* gtk/gtktextbtree.c (_gtk_text_line_previous_could_contain_tag):
Don't stop the iteration up to the tag_root too
early. (#109945, Dongho Shin)
2004-03-05 Federico Mena Quintero <federico@ximian.com>
Fixes#136082 and #135265, patch by Morten Welinder.
* configure.in: Use AC_SYS_LARGEFILE.
* */*.c: #include <config.h>
Mon Mar 1 10:41:27 2004 Owen Taylor <otaylor@redhat.com>
Patch from Dov Grobgeld to implement auto-bidi-direction
for GtkTextView (#118543)
* gtk/gtktextbtree.[ch]: Resolve bidi base direction
for each line by propagating backwards/forwards as
necessary.
* gtk/gtktextlayout.[ch] gtk/gtktextview.c: Set the
bidi base direction for the ;ine with the cursor from
the keyboard direction. Add gtk_text_layout_set_keyboard_direction().
Mon Mar 1 10:31:11 2004 Owen Taylor <otaylor@redhat.com>
* gtk/gtkentry.[ch]: Implement auto-bidi-direction,
based on a patch from Dov Grobgeld. (#118540)
2003-01-06 Matthias Clasen <maclas@gmx.de>
Implement a utility function proposed in #102534:
* gtk/gtktextbtree.h:
* gtk/gtktextbtree.c (_gtk_text_btree_select_range): New function.
(_gtk_text_btree_place_cursor): Now a simple wrapper around
_gtk_text_btree_select_range().
* gtk/gtktextbuffer.h:
* gtk/gtktextbuffer.c (gtk_text_buffer_select_range): New function.
(gtk_text_buffer_place_cursor): Now a simple wrapper around
gtk_text_buffer_select_range().