2007-11-15 Yevgen Muntyan <muntyan@tamu.edu>
* gtk/gtktextlayout.c: (gtk_text_layout_get_line_display),
(get_style): do not call _gtk_text_btree_get_iter_at_line() and
_gtk_text_btree_get_tags() for every segment, instead call them
once and then collect the tags while iterating over the segments.
(get_tags_array_at_iter), (tags_array_toggle_tag): new functions
for tags array handling.
svn path=/trunk/; revision=18994
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-02-18 Matthias Clasen <mclasen@redhat.com>
* gtk/gtktextlayout.c (gtk_text_layout_move_iter_visually):
Ignore invisible text when going to end of the previous line.
(#382565)
svn path=/trunk/; revision=17328
2005-09-01 Matthias Clasen <mclasen@redhat.com>
* gdk/*.c: Intern some more strings.
* gtk/gtkintl.h:
* gtk/*.c: Define an I_() macro and use it instead of the
bulky g_intern_static_string().
2005-08-31 Matthias Clasen <mclasen@redhat.com>
* gdk/Makefile.am:
* gtk/Makefile.am: Intern type names in code generated by
glib-mkenums, too.
* gtk/*.c:
* gdk/x11/*.c:
* gdk/*.c: Intern type names before registering the type to avoid
unnecessary copies.
2005-06-27 Matthias Clasen <mclasen@redhat.com>
* gtk/gtktextlayout.c (gtk_text_layout_move_iter_to_line_end):
Fix positioning at the end of the line for lines ending
in invisible characters.
(gtk_text_layout_get_line_display): Set display->layout
to a PangoLayout, even for totally invisible lines.
2005-06-13 Matthias Clasen <mclasen@redhat.com>
Make invisible text work a bit better (#66194, patch by
Jeroen Zwartepoorte)
* gtk/gtk.symbols:
* gtk/gtktextiter.[hc]: Add function to move by
visible lines.
* gtk/gtktextview.c (gtk_text_view_move_cursor_internal):
Skip invisible text when moving by paragraphs.
* gtk/gtktextlayout.c (gtk_text_layout_move_iter_visually):
Skip invisible lines here too.
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.
2004-12-08 Matthias Clasen <mclasen@redhat.com>
Fix#111031, reported by Padraig O'Briain:
* gtk/gtktextlayout.h:
* gtk/gtktextlayout.c (gtk_text_layout_get_iter_at_position):
Add a variant of gtk_text_layout_get_iter_at_pixel() which
returns the character at the position, not the closest
cursor position.
* gtk/gtktextview.h:
* gtk/gtktextview.c (gtk_text_view_get_iter_at_position):
Add a variant of gtk_text_view_get_iter_at_location() which
returns the character at the position, not the closest
cursor position.
2004-11-28 Matthias Clasen <mclasen@redhat.com>
* gtk/gtktextview.c (gtk_text_view_move_iter_by_lines): Return
a boolean indicating whether we could do the requested move.
(gtk_text_view_move_cursor_internal): For GTK_MOVEMENT_DISPLAY_LINES,
move to the beginning/end of the line if we're on the first/last
line. (#155891, Paolo Borelli)
Sat Nov 20 15:13:51 2004 Owen Taylor <otaylor@redhat.com>
* gdk/gdkpango.[ch]: Add GdkPangoRenderer, a subclass of
PangoRenderer targeting GDK drawables. Use to implement the old
gdk_draw_layout() and friends.
* gdk/gdkdraw.c gdk/gdkdrawable.h gdk/gdkwindow.c gdk/gdkpixmap.c:
Add gdk_draw_glyphs_transformed() gdk_draw_trapezoids() and
the corresponding members of GdkDrawableClass. Add a fallback
implementation of gdk_draw_trapezoids() in terms of pixbufs.
* gdk/gdkwindowing.h gdk/x11/gdkg-x11.h: Add
_gdk_windowing_gc_get_foreground() to enable the fallback
trapezoid implementation.
* gdk/x11/gdkdrawable-x11.c gdk/x11/gdkdisplay-x11.h: Implement
draw_glyph_transformed, draw_trapezoids.
* gdk/x11/gdkdrawable-x11.[ch]: Add
_gdk_x11_drawable_draw_xtrapezoids, _gdk_x11_drawable_draw_xft_glyphs
for use of GdkX11Renderer.
* gdk/x11/gdkgc-x11.c gdk/x11/gdkprivate-x11.h: Implement
GDK_TILED, GDK_STIPPLED, GDK_OPAQUE_STIPPLED in the RENDER codepath.
* gdk/gdkpango-x11.c: Add GdkX11Renderer... a subclass of
PangoXftRenderer that does tiles/stipples and fallback rendering
of trapezoids without the RENDER extension.
* gdk/gdkpango-x11.c gdk/x11/gdkscreen-x11.[ch] _gdk_x11_renderer_get:
Add _gdk_x11_renderer_get() to get a singleton GdkX11Renderer
for the screen.
* gdk/x11/gdkdrawable-x11.c (get_impl_drawable): Fix a None/NULL
confusion.
* gtk/gtklabel.[ch] gtk/gtk.symbols: Add gtk_label_set/get_angle(),
and an ::angle property.
* gtk/gtklabel.c: Remove #if 0'd dead code gtk_label_paint_word().
* gtk/gtktextdisplay.c: Switch to using a GtkTextRenderer subclass
of GdkPangoRenderer for drawing.
* gtk/gtktextlayout.[ch] gtk/gtktextdisplay.c: Switch to using
gtk_attr_shape_new_with_data() to store backreferences to
embedded pixmaps and widgets. Leave line_display->shaped_objects
around for backwords compatibility.
* gdk/gdkpango.[ch] (gdk_pango_context_set_colormap): Describe
as deprecated, remove implementation.
* gtk/gtkwidget.c (gtk_widget_create_pango_context): Remove
call to gdk_pango_context_set_colormap.
* demos/gtk-demo/Makefile.am demos/gtk-demo/rotated_text.c: Add
a demo showing drawing rotated text.
* tests/testgtk.c: Add a rotated-label test, and also a rotated
drawing test (differs from demos/gtk-demo/rotated_text by also
using a tile)
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
Sat Mar 13 18:13:13 2004 Owen Taylor <otaylor@redhat.com>
* gtk/gtktextlayout.c (gtk_text_layout_get_line_display): When not
wrapping, do the offset of the line for justification ourselves.
(#120256, Felipe Heidrich)
2004-03-11 Dov Grobgeld <dov@imagic.weizmann.ac.il>
* gtk/gtktextlayer.c: (gtk_text_layout_set_buffer): Added
call to gtk_text_layout_update_cursor_line() to solve in
problem of switching keyboard direction at widget creation:
bug #136680
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)
Thu Jan 29 18:08:06 2004 Owen Taylor <otaylor@redhat.com>
* gtk/gtktextlayout.c (line_display_iter_to_index)
* gtk/gtktextlayout.c (line_display_index_to_iter): Only
adjust the preedit position for lines that include the
preedit string. (#132353, Yao Zhang). How the heck
did this work as well as it did?!?!
* modules/input/gtkimcontextxim.c (gtk_im_context_xim_get_ic):
Reverse change to change of XNFilterEvents event mask from
#110493 -- it's documented and in the Xlib code an
unsigned long.
* modules/input/gtkimcontextxim.c (preedit_start_callback):
Return -1 rather than void to indicate no length limit.
(#129548)
Mon Aug 25 19:55:55 2003 Owen Taylor <otaylor@redhat.com>
* gtk/gtktextview.c (gtk_text_view_update_layout_width):
Since we add one to the layout's reported width to
account for the cursor, we need to subtract one when
setting the wrap width for the layout. (Fixes infinite
loop (#120325, Federico Crozat)
* gtk/gtktextlayout.c (gtk_text_layout_get_line_display):
Be a bit more careful about rounding when converting
wrapped width from Pango units to pixels.
Thu Jun 5 15:33:38 2003 Owen Taylor <otaylor@redhat.com>
* gtk/gtktextlayout.c (gtk_text_layout_move_iter_to_next_line):
If at the end of the buffer, move to the end iter -
parallels behavior of move_iter_to_previous_line.
(#81960, Padraig O'Briain)
Thu Jun 5 16:12:54 2003 Owen Taylor <otaylor@redhat.com>
#80023, Yao Zhang, TOKUNAGA Hiroyuki
* gtk/gtktextlayout.c (gtk_text_layout_get_cursor_locations):
Account for the preedit cursor offset if the iter passed
in is at the same place as the insertion cursor.
* gtk/gtktextview.c (gtk_text_view_get_cursor_location):
Encapsulate getting the insertion cursor location.
* gtk/gtktextview.c (gtk_text_view_update_im_spot_location):
Pass the real y/height to the IM context. Take
text_view->x/yoffset into account.
Thu Jun 5 17:20:40 2003 Owen Taylor <otaylor@redhat.com>
#107883, Gustavo Giráldez
* gtk/gtktextlayout.c (gtk_text_layout_emit_changed):
Split out the case where we know we changed, and
already dealt with our cached line being invalidated
from external calls to gtk_text_layout_changed.
* gtk/gtktextlayout.c (gtk_text_layout_changed):
Check if the invalidate yrange intersects our
cached line, and clear it if necessary.
Wed Jan 15 17:02:18 2003 Owen Taylor <otaylor@redhat.com>
* gtk/gtktextlayout.c (gtk_text_layout_validate_yrange):
Fix off-by-one error on the backward iteration loop,
that was causing the wrong range to be redrawn.
(at least part of #72734)
2002-04-30 Havoc Pennington <hp@redhat.com>
* gtk/gtktextlayout.c (gtk_text_layout_real_free_line_data): use
gtk_text_layout_invalidate_cache instead of cut-and-paste
(gtk_text_layout_real_invalidate): always invalidate cache, even
if the line has no stored line data. #78573
* gtk/gtktextview.c (gtk_text_view_get_iter_location): add call to
gtk_text_view_ensure_layout, #77388
(gtk_text_view_get_iter_at_location): ditto
(gtk_text_view_get_line_yrange): ditto
(gtk_text_view_get_line_at_y): ditto
2002-03-23 Havoc Pennington <hp@pobox.com>
* gtk/gtktextlayout.c (gtk_text_layout_real_invalidate):
invalidate the line containing start, even if the [start,end)
range is empty (just invalidate [start,end], essentially).
Partially fixes#72374
Sun Mar 3 11:12:16 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtktextlayout.c (add_cursor): When in split cursor
mode, always add the cursor as both strong and weak
so that it is drawn with the correct non-split color.
Mon Feb 25 01:14:26 2002 Kristian Rietveld <kris@gtk.org>
* gtk/gtktextlayout.c (find_display_line_above): free iter before
going to done
* gtk/gtktreeview.c (validate_visible_area): free above_path,
(set_destination_row): free path before returning,
(gtk_tree_view_set_drag_dest_row): free current_dest
2002-02-13 Havoc Pennington <hp@redhat.com>
* gtk/gtktextview.c (gtk_text_view_paint): just go ahead and flush
all the first validate stuff if it hasn't been done, presumably
someone called process_updates at a weird time.
* tests/testtext.c (do_apply_colors): terminate on >= end, not >
end, avoids infinite loop when end is at the end of the buffer.
* gtk/gtktextbtree.c (_gtk_text_btree_delete): when creating a
line data, we were adding it to the wrong line ("line" instead of
"start_line")
2002-01-25 Havoc Pennington <hp@redhat.com>
* gtk/gtktextbtree.c (_gtk_text_btree_delete): fix assertion
failure by creating the line data, but not validating it at this
stage. Also, remove old code related to the "bogus newline" mess
that removed all tags from the last char in the buffer if you
tried to delete it.
(_gtk_text_line_data_new): put this here and prepend underscore,
remove from gtktextlayout.c