Commit Graph

198 Commits

Author SHA1 Message Date
1685da6f69 textbuffer: nicer get_iter functions, without return values
Avoid crashes when passing an invalid location to a
gtk_text_buffer_get_iter_at_*() function.

A first attempt added boolean return values to know if @iter has been set to
the exact location, but it breaks Python and JS bindings because the out
parameter is already a return value in those languages.

Unit tests are added.

https://bugzilla.gnome.org/show_bug.cgi?id=735341
2015-11-12 17:50:39 +01:00
fde91c3bec Revert "textbuffer: nicer get_iter functions"
This reverts commit a9a1c00cc9.

Unfortunately, adding the boolean return broke both the python
and javascript bindings, since they now return a tuple consisting
of the boolean and the out argument.
2015-11-12 09:58:28 -05:00
50c269f846 Don't use g_slist_next in gtktextbuffer.c
We generally use ->next directly.
2015-10-20 06:14:57 -04:00
a9a1c00cc9 textbuffer: nicer get_iter functions
Avoid crashes when passing an invalid location to a
gtk_text_buffer_get_iter_at_*() function.

A boolean is returned to know if @iter has been set to the exact
location.

Unit tests are added.

https://bugzilla.gnome.org/show_bug.cgi?id=735341
2015-10-16 08:43:27 +02:00
c264cd6785 Split off a private header for GtkTextBuffer
This avoids polluting the installed header with private symbols.
2015-10-15 23:04:44 -04:00
3c54fbd3ac Use stupid quotes instead of dumb quotes
Following a similar change in GLib a while ago.

'bla' may by stupid, but it looks less dumb than `bla'.
2015-09-23 07:01:16 -04:00
8ee711bbc9 text buffer: Convert to g_object_notify_by_pspec
This avoids pspec lookup overhead in g_object_notify.
2015-09-06 17:13:34 -04:00
9f24b54786 Code cleanup
Use g_slist_free_full more consistently. This commit just converts
the obvious cases where g_slist_forall is directly followed by
g_slist_free.
2015-07-31 22:23:35 -04:00
c6838fbff0 GtkTextView: Support font features
Add a ::font-features attribute to GtkTextTag, and support
font features when inserting Pango markup into a text buffer.
2015-07-29 21:42:58 -04:00
6b977e6870 gtktextbuffer: small cleanup in clipboard handling
Make code shorter and also more efficient since we move the
selection check out of the loop

https://bugzilla.gnome.org/show_bug.cgi?id=747096
2015-04-05 07:54:00 -04:00
28063ee2e4 textview: add support for underline and strikethrough colors
This commit adds the GtkTextTag:underline-rgba and :strikethrough-rgba
properties and the necessary plumbing to apply these colors in GtkTextLayout.
With this change, you can alter the color of underlines including those
of type PANGO_UNDERLINE_ERROR.

You might want to alter the underline color to differentiate between
spelling and grammer mistakes. In code editors, it is convenient to
differentiate between errors and warnings.

Note that the GtkTextAppearance struct is public ABI and has no spare
room for new fields, so we are resorting to some tricky packing to store
the colors in the unused pixel field of the fg_color and bg_color structs.
This packing is accomplished by the macros in gtktextattributesprivate.h.

Signed-off-by: Christian Hergert <christian@hergert.me>

https://bugzilla.gnome.org/show_bug.cgi?id=402168
2015-03-17 23:24:13 -04:00
3d4bcf55a5 Allow inserting Pango markup in text buffers
This has been a very long-standing feature request.

https://bugzilla.gnome.org/show_bug.cgi?id=59390
2014-12-04 00:09:44 -05:00
706c8e9c8d Simplify _gtk_text_buffer_get_line_log_attrs()
NULL was returned in case of an empty last line. Every users needed to
special-case this. Now it will return the expected result: char_len of 0
with one PangoLogAttr.

In compute_log_attrs(), 'paragraph' will be the empty string "" with
'char_len' == 0.
pango_get_log_attrs() works fine with an empty string, it will return
one correct PangoLogAttr (because there is one text position for the
empty string).

It fixes the unit tests for gtk_text_iter_is_cursor_position().

https://bugzilla.gnome.org/show_bug.cgi?id=156164
2014-08-21 18:43:34 +02:00
f39d211021 GtkTextView: various code clean-ups
- only one blank line is enough to separate code sections.
- the 'signals' variable was in the middle of function prototypes.
- compare pointers to NULL in some conditions ("if(blah) should be used
  only if blah is a boolean variable). It makes the code clearer.
- various other things.
2014-08-20 19:19:10 +02:00
3f4b9d8164 Replace uses of g_memmove() by memmove()
g_memmove() is deprecated, it is a simple macro that just calls
memmove() with the same parameters.

Reviewed by Paolo Borelli on IRC.
2014-08-16 15:50:17 +02:00
8ad9cf8b8c textbuffer: emit notify signal for the "text" property
Although there is the "changed" signal, it is more correct to notify the
"text" property too. It can be useful for a small text view, where the
text is saved e.g. to gsettings with a binding to the text property.

The "text" property includes only the text, not child widgets or images,
so the notify signal is sent too many times (also for child widgets and
images), but it's not a big problem.

https://bugzilla.gnome.org/show_bug.cgi?id=624791
2014-07-29 15:21:23 +02:00
9527205291 GtkTextView: use GSlice
GSlice is better for allocating structs.

https://bugzilla.gnome.org/show_bug.cgi?id=733407
2014-07-20 12:26:01 +02:00
67efefde49 textbuffer: Do not unset selection if failing to update the primary selection
This is expected to happen on wayland and other platforms with no primary selection,
and just leads to the selected text being cleared after any attempt to change the
text selection itself through either mouse/keyboard.
2014-07-02 18:57:39 +02:00
1e3af04dd9 gtk_text_buffer_create_tag(): returns NULL on failure
Returns NULL in case of a duplicated tag name in the tag table. It is
still a programmer error to duplicate a name, but if it happens the
behavior is a little nicer (and hopefully doesn't crash).

https://bugzilla.gnome.org/show_bug.cgi?id=614717
2014-05-12 19:10:30 +02:00
469d333aa2 docs: use Returns: consistently
Instead of Return value:
2014-02-19 18:56:05 -05:00
a4b5929e81 docs: use apostrophe in *'re 2014-02-07 13:37:09 -05:00
285d216d3e docs: use apostrophe in *'ll 2014-02-07 13:35:54 -05:00
e34bd4137d docs: use apostrophes in *n't 2014-02-07 13:32:47 -05:00
7a208fbbf3 docs: use proper apostrophe
https://wiki.gnome.org/Design/OS/Typography
2014-02-07 13:06:10 -05:00
0ce016650b docs: Use markup for links 2014-02-07 09:42:12 -05:00
2a45418b67 docs: use proper quotes 2014-02-05 15:08:42 -05:00
66071234f6 docs: list items require blank lines 2014-02-01 05:35:43 -05:00
2d003553e8 docs: don't use <emphasis>
It is a little heavy handed. The text can speak for itself.
2014-01-28 02:02:05 -05:00
310179176c Improve doc of gtk_text_buffer_paste_clipboard()
It didn't explain the behavior when there is a non-empty buffer
selection.

https://bugzilla.gnome.org/show_bug.cgi?id=339539
2013-09-16 09:48:24 +02:00
8e916815bb textbuffer: fix selection replacement when pasting
It is more logical to first delete the selection and then pasting the
text. When the selection and the text contain tags, the new behavior is
more natural.

A segfault in paste_from_buffer() is also avoided. The segfault occurs when
the text to paste is deleted because it is the selection.

https://bugzilla.gnome.org/show_bug.cgi?id=339539
2013-09-16 09:48:24 +02:00
a78fc4a9c5 Doc: small fixes in GtkTextView
Move GtkWrapMode from GtkTextTag to the GtkTextView section. The wrap
mode property is in the text view.

Links to the "mark-set" and "mark-deleted" signals.

Add a precision about gtk_text_buffer_get_iter_at_line().

Fix typo in gtk_text_tag_set_priority().

https://bugzilla.gnome.org/show_bug.cgi?id=708076
2013-09-14 21:45:00 +02:00
0899ef7cc9 gtk: Use new macros for defining private data
https://bugzilla.gnome.org/show_bug.cgi?id=702996
2013-07-09 09:30:02 +01:00
d7260d4ee9 Fix a couple documentation warnings 2013-06-25 19:05:32 -04:00
6b50045f90 Doc: various small fixes
https://bugzilla.gnome.org/show_bug.cgi?id=700007
2013-05-12 18:09:28 +02:00
66dfab0b0a Small API doc fixes
For gtk_text_iter_get_char(), due to the "Returns" at the beginning of
the description, the description was not visible. So the first sentence
has been reworded.
2013-03-16 22:18:50 +01:00
2422c44f8e Add custom va_marshallers in some places
This is a slight performance optimization in the common case.
2012-03-05 12:39:09 +01:00
9d0febc9a6 Change FSF Address 2012-02-27 17:06:11 +00:00
5ff8fe6971 Documentation fixes
Mostly making sure that return values and varargs don't loose
their docs.
2011-09-25 21:04:49 -04:00
aa291863bb GtkTextBuffer: Add accessible api
These functions match closely to the AtkText interface;
they will be used in the GtkTextView accessible implementation.
Keep them private for now.
2011-07-05 16:08:53 -04:00
0553a5524d Move documentation to inline comments: GtkTextBuffer 2011-04-18 02:08:36 +01:00
a603a2a2ba GtkTextBufferPrivate: Improve struct packing 2011-04-12 12:48:02 -04:00
b7de18ab35 Remove gtk_paste_point_override mark if we don't insert any text.
This patch fixes bug #590459.
2011-01-28 13:26:00 +01:00
2f0d40335b [GI] Add missing (transfer) annotations 2011-01-20 13:57:18 +01:00
55016f72f2 gtktexttag: Move public members to private header
And fix gail to not poke at GtkTextTag internals
2011-01-03 15:05:46 -05:00
1ceddae7da gtk/gtktextbuffer: Use accessor functions to access GtkSelectionData 2010-12-15 23:58:15 +00:00
d8d73163fd Normalize boolean. 2010-11-01 22:59:21 +01:00
37dc91f012 Do not use gbooleans to save some bits. 2010-11-01 22:43:35 +01:00
e0aa12eb0a Tons of transfer annotations 2010-09-21 00:18:11 -04:00
24d8c776d4 The 'len' argument of gtk_text_buffer_insert and gtk_text_buffer_insert_at_cursor isn't really the length of the 'text' argument 2010-08-17 17:57:58 +02:00
cffda84e93 Annotate GtkTextBuffer insert methods 2010-08-04 21:04:04 +02:00