In GTK 3.0 it's no longer possible to e.g. pop up something
at a text view's cursor (this wasn't exactly possible before
either without including gtktextlayout, but this is a quite
special need anyway).
The GtkScrollable interface provides "hadjustment" and "vadjustment"
properties that are used by GtkScrolledWindow. It replaces
the ::set_scroll_adjustment signal. The scrollable interface
also has ::min-display-width/height properties that can be
used to control the minimally visible part inside a scrolled window.
- add slots for damage-event, move-focus and keynav-failed
- reorder signals a bit so related stuff is grouped together
- some indentation fixes in the GtkWidgetClass
- remove the move-focus compat hack from GtkTextView
- turn the move-focus compat hack in GtkWindow into properly
implementing GtkWidget::move-focus()
Also, added api to allow an input method to internally handle
key press and release events in the GtkTextView and GtkEntry
cases.
This is simply a wrapper to the gtk_im_context_filter_keypress()
function, but It's added to not access the ->im_context
directly.
Based on a Christian Dywan patch
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=163251
GtkTextView is missing accessors for its sealed hadjustment
and vadjustment members.
This patch adds gtk_text_view_get_hadjustment() and
gtk_text_view_get_vadjustment() to GtkTextView
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=616053
2008-06-30 Cody Russell <bratsche@gnome.org>
* Practically everything changed.
Change all references of GIMP Toolkit (and variations of it)
to GTK+ Toolkit, showing no mercy at all to our beloved
ancestry. (#540529)
svn path=/trunk/; revision=20709
2008-05-28 Michael Natterer <mitch@imendio.com>
* gtk/gtk*.h: whitespace cleanup: remove trailing whitespace and
excess newlines and sprinkled some newlines where needed. Zero
code or formatting changes included.
svn path=/trunk/; revision=20225
2008-05-28 Michael Natterer <mitch@imendio.com>
* gtk/gtk.h: define __GTK_H_INSIDE__ around including all other
headers.
* gtk/gtktypebuiltins.h.template
* gtk/gtkversion.h.in
* gtk/gtk*.h: add single-include guards that #error out if
GTK_DISABLE_SINGLE_INCLUDES is defined and any of these files is
included individually.
* gtk/gtkprintbackend.h
* gtk/gtkprinter-private.h
* gtk/gtktextlayout.h
* gtk/gtktexttagprivate.h
* gtk/gtktexttypes.h
* gtk/gtktreedatalist.h: include <gtk/gtk.h> instead of individual
headers in these private or semi-private headers.
* gtk/gtkimmodule.h: also here because it's not in gtk.h.
* gtk/gtkpagesetupunixdialog.h
* gtk/gtkprinter.h
* gtk/gtkprintjob.h
* gtk/gtkprintunixdialog.h: likewise in the gtkunixprint headers.
* gtk/gtkclist.h
* gtk/gtkcombo.h
* gtk/gtkctree.h
* gtk/gtkfilesel.h
* gtk/gtkitemfactory.h
* gtk/gtklist.h
* gtk/gtklistitem.h
* gtk/gtkoldeditable.h
* gtk/gtkoptionmenu.h
* gtk/gtkpixmap.h
* gtk/gtkpreview.h
* gtk/gtksignal.h
* gtk/gtktipsquery.h: whenever possible, include only <gtk/gtk.h>
instead of individual headers in these deprecated headers. They
don't get included at all when GTK_DISABLE_DEPRECATED is defined,
so if an app needs them anyway, it must undef GTK_DISABLE_DEPRECATED
and include them individually, which should continue to work.
* gtk/gtkclist.c: include "gtkctree.h" because of the change
above.
svn path=/trunk/; revision=20221
2007-06-04 Michael Natterer <mitch@imendio.com>
Move "move-focus" signals from several widgets to GtkWidget to
enable more flexible costomization of keyboard navigation via
bindings. Fixes bug #414947.
* gtk/gtkwidget.c: add "move-focus" binding signal, default to
calling the toplevel GtkWindow's "move-focus" vfunc.
* gtk/gtktextview.[ch]
* gtk/gtkwindow.[ch]: remove "move-focus" signals and add compat
code that makes sure that both emitting the signal on the widget
and overriding the virtual functions keeps working as before.
* gtk/gtktoolbar.c: remove "move-focus" signal here too and use
GtkWidget's signal. This change slightly changes keyboard
navigation in toolbars. I'll fix the behavior if somebody can
explain me if and how exactly the new behavior is broken.
svn path=/trunk/; revision=18025
2005-05-18 Anders Carlsson <andersca@imendio.com>
* gtk/gtktextview.c: (gtk_text_view_flush_scroll),
(gtk_text_view_update_adjustments), (gtk_text_view_value_changed):
* gtk/gtktextview.h:
If the horizontal adjustment changes because of a change in the
layout width, then do a complete redraw. This is because there
might be right-aligned or centered text that needs to be redrawn.
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.
Mon Aug 2 01:30:03 2004 Matthias Clasen <maclas@gmx.de>
* gtk/gtktextview.[hc]:
* gtk/gtkentry.[hc]: Add a new binding signal ::backspace,
bind it to the backspace key, and make it pay attention
to the Pango backspace_deletes_character
attribute. (#119891, Noah Levitt, patch by Theppitak
Karoonboonyanan)
Thu Jun 5 16:52:54 2003 Owen Taylor <otaylor@redhat.com>
* gtk/gtktextview.[ch]: Never scroll on focus in
(#81893, Patch from Paolo Maggi)
* gtk/gtktextview.c (gtk_text_view_scroll_[h]pages):
Scroll to the current cursor location before handling
the action, in case the user just tabbed in
and the cursor is offscreen.
2003-01-07 Matthias Clasen <maclas@gmx.de>
* gtk/gtktextview.h (struct _GtkTextView): Add a comment that
the just_selected_element is unused.
* gtk/gtktextview.c (extend_selection): New helper function to
find the range that should be added to the selection.
(selection_motion_event_handler):
(gtk_text_view_start_selection_drag):
(gtk_text_view_end_selection_drag):
(selection_motion_event_handler):
(selection_scan_timeout): Support select-by-words/lines.
(gtk_text_view_button_press_event): Start a selection drag on
double/triple clicks. (#78599)
Sun Mar 3 14:26:33 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkstyle.[ch] (_gtk_get_insertion_cursor_gc):
Centralize lookup and caching of cursor GC's here.
* gtk/gtkentry.[ch] gtk/gtktextview.[ch] gtk/gtktextdisplay.c
gtk/gtklabel.c: Move to using _gtk_get_insertion_cursor_gc().
* gtk/gtkentry.c (gtk_entry_expose): Draw cursors
under the text, not over the text.
* gtk/gtkwidget.c (gtk_widget_class_init): add
a secondary-cursor-color property.
* gtk/gtkwidget.c (gtk_widget_class_init): Decrease
the default aspect ratio to 1/25 (0.04).
* tests/testgtkrc (bell_duration): Comment out
cursor color setting.
Sat Feb 23 11:54:12 2002 Owen Taylor <otaylor@redhat.com>
* gtk/*.h gdk/*.h: Massive padding addition to class structures.
* gtk/gtktextmark.h: Fix a FIXME about G_CONST_RETURN.
2002-01-27 Anders Carlsson <andersca@gnu.org>
* gtk/gtktextview.h (struct _GtkTextView): add mouse_cursor_obscured.
* gtk/gtkentry.h (struct _GtkEntry): Add mouse_cursor_obscured.
* gtk/gtktextview.c (set_invisible_cursor): New function.
(gtk_text_view_obscure_mouse_cursor): Likewise.
(gtk_text_view_key_press_event): Call obscure_cursor if text
has been inserted.
(gtk_text_view_motion_event): Restore the mouse cursor.
* gtk/gtkentry.c (gtk_entry_realize): Add GDK_POINTER_MOTION_MASK.
(set_invisible_cursor): New function.
(gtk_entry_obscure_mouse_cursor): Likewise.
(gtk_entry_key_press): call obscure_cursor if text has been inserted.
(gtk_entry_motion_notify): Restore the mouse cursor.
2002-01-17 Havoc Pennington <hp@redhat.com>
* gtk/gtktextlayout.c (_gtk_text_layout_get_line_xrange): new
function (which I then decided not to use but I think it's needed
to fix#68963
* gtk/gtktextview.c: add page_horizontally action signal and
implement Ctrl+PgUp, Ctrl+PgDown based on patch from Padraig,
hackily modified to avoid adding GTK_MOVEMENT_ API. Part of
#53934
* gtk/gtkmarshalers.list: add NONE:INT,BOOL
2002-01-01 Havoc Pennington <hp@pobox.com>
* gtk/gtktextview.c (gtk_text_view_expose_event): propagate
exposes to no window children not in the buffer window.
(gtk_text_view_class_init): add move_focus bindings for Ctrl-Tab
- is this the right way to do it?
(gtk_text_view_focus): add focus method, just chains up for now,
I'm not sure why the GtkContainer implementation doesn't work
* gtk/gtktextbtree.c (_gtk_text_btree_insert_child_anchor): fill
in the text line for the child anchor segment
* tests/testtext.c (do_add_focus_children): add another test
example (to put focusable buttons into the widget)
2001-12-04 Havoc Pennington <hp@redhat.com>
* gtk/gtktextbtree.c (gtk_text_btree_remove_tag_info): remove
g_assert_not_reached() that was bogus, since we demand-create the
tag info. reported by Chris Phelps
Jump through assorted hoops to fix bug from Chris Phelps where
removing tags from the table resulted in btree trying to
access tag->table
* gtk/gtktextbuffer.c: set up mechanics of adding/removing
ourselves to the tag table
* gtk/gtktexttagtable.c (_gtk_text_tag_table_add_buffer)
(_gtk_text_tag_table_remove_buffer): private cruft to
let us notify buffer of disappearing tags
* gtk/gtktexttag.h: remove BTreeNode typedef from this public
header, put it in tagprivate
* gtk/gtktextbtree.c (_gtk_text_btree_new): don't connect to
tag_removed; it's emitted too late.
(_gtk_text_btree_notify_will_remove_tag): rename tag_remove_cb to
this
Padding for ABI-compat expansion
* gtk/gtktexttag.h (struct _GtkTextAttributes): pad this
(struct _GtkTextAppearance): one pad in here too
* gtk/gtktextlayout.h (struct _GtkTextLayoutClass): padding here
* gtk/gtktextview.h (struct _GtkTextViewClass): more padding,
since action signals etc. seem pretty likely
* gtk/gtktextbuffer.h (struct _GtkTextBufferClass): padding
* gtk/gtktexttag.h (struct _GtkTextTagClass): padding
* gtk/gtktexttagtable.h (struct _GtkTextTagTableClass): padding
2001-11-13 Havoc Pennington <hp@redhat.com>
* gtk/gtktextview.c (gtk_text_view_add_child_in_window): docs
including reference to bugzilla bug about how we should have
a better way of positioning children
* gtk/gtktextview.h (struct _GtkTextViewClass): add some padding
* gtk/gtktextview.c (gtk_text_view_size_allocate): assign zero
size to side rects if they don't exist, #63438
* configure.in: Version 1.3.9, interface age 0, binary age 0.
* configure.in: Require GLib-1.39, Pango 0.20, Atk 0.5.
* NEWS: Updates.
Mon Sep 24 11:59:09 2001 Owen Taylor <otaylor@redhat.com>
* gtk/gtkstyle.[ch] (_gtk_draw_insertion_cursor): Shared
function for drawing cursors between gtkentry/gtklabel/gtktextview.
Should this be public? It has a bit of an odd interface, but
custom editing widgets probably should be using it.
Function will draw with wider width for taller cursors, and
draws a little indicator arrow to indicate directoin for split
cursors.
* gtk/gtktextview.c: Add a "cursor_color" property.
* gtk/gtktextdisplay.[ch]: Add a cursor_gc parameter to
gtk_text_layout_draw().
* gtk/gtkentry.c gtk/gtklabel.c gtk/gtktextdisplay.c: Use
_gtk_draw_insertion_cursor().
Tue Sep 25 11:22:23 2001 Owen Taylor <otaylor@redhat.com>
* gtk/gtkcellrenderertext.c gtk/gtktexttag.c: Restore
the behavior where you could turn family_set (etc) back on
and get back the values you had before.
* demos/gtk-demo/stock_browser.c (id_to_macro): Use
g_string_ascii_up() rather than looping through the
string ourself.
Sun Jun 24 12:06:47 2001 Owen Taylor <otaylor@redhat.com>
* gtk/gtktextview.[ch] (gtk_text_view_set_text_window_size):
Removed - didn't work and not particularly useful anyways
if it did.
Sun Jun 24 11:29:35 2001 Owen Taylor <otaylor@redhat.com>
* gdk/x11/gdkimage-x11.c (gdk_image_new): Fix stupid error
introduced last night that was making things decidedly not work.
* gtk/*.[ch]: Patch from Kristian Rietveld adding 80 getters
so that we have getter/setter pairing everywhere it makes
sense. (#55767)
* gtk/gtkradiobutton.[ch] gtk/gtktoolbar.c tests/testgtk.:
Rename gtk_radio_button_group to gtk_radio_button_get_group, add a
deprecated compat macro. (#55516)
* gtk/gtklabel.[ch]: Add functions
gtk_label_set/get_use_underline(), gtk_label_set/get_use_markup(),
gtk_label_set_label(), which mirror the property API for GtkLabel.
Make gtk_label_get_attributes() only reflect the attributes
set by gtk_label_set_attributes.
* gtk/gtknotebook.c (gtk_notebook_set_current_page) gtk/gtkcompat.h: Rename
from gtk_notebook_set_page().
2001-06-08 Havoc Pennington <hp@redhat.com>
* gtk/gtktextbuffer.c (gtk_text_buffer_get_start_iter): added this
function
* gtk/gtktextview.c (gtk_text_view_get_default_attributes): added
this function
Wed May 30 15:56:30 2001 Owen Taylor <otaylor@redhat.com>
* gtk/gtksettings.c (gtk_settings_get_property): Validate
value from GDK settings against parameter spec.
* gdk/x11/gdkevents-x11.c (gdk_setting_get): Add assignments
to temporary values and use g_value_transform(), since
thinking that GValue was going to be easy or efficient
to use was, of course, a mistake.
* gtk/gtksettings.c: Add cursor blink setting.
* gdk/x11/gdkevents-x11.c: Add cursor blink X settings.
* gtk/gtkentry.c: Add cursor blinking.
* gtk/gtktextview.c (gtk_text_view_check_cursor_blink): Use
cursor blink global settings.
* gtk/gtkentry.c (gtk_entry_button_press): Add notification
for :text_position in places where it is missing.
Wed Mar 28 19:20:43 2001 Owen Taylor <otaylor@redhat.com>
* gtk/testtext.c (create_buffer): Add missing NULL on
valist.
* gtk/gtkcheckmenuitem.c (gtk_check_menu_item_class_init): Fix
c-n-p problem with INCONSISTENT property.
[ Patch from Havoc Pennington <hp@redhat.com> ]
* gtk/gtkentry.h (struct _GtkEntryClass): add same populate_popup
hook.
* gtk/gtktextview.h (struct _GtkTextViewClass): add populate_popup
signal as a hook for extending the default popup menu
* gtk/gtkimmulticontext.c (gtk_im_multicontext_append_menuitems):
use radio menu items for the input method menuitems
* gtk/gtkimcontextsimple.c (check_hex): do better validation of
inserted unicode from Ctrl-Shift-hex input method
* gtk/gtktextbtree.c (_gtk_text_btree_insert): remove utf8
validatation here, already done at GtkTextBuffer level.
* gtk/gtkwidget.c (gtk_widget_class_init): add binding set, add
popup_menu run action signal and Shift+F10 and Menu keybindings.
* gtk/gtkentry.c: implement a default handler for popup_menu
* gtk/gtktextview.c: implement a default handler for popup_menu
* gtk/gtkmenu.c (gtk_menu_popup): select first item if popup is
from a key event
* gtk/gtklabel.c: remove "trailer" cruft
2001-03-07 Havoc Pennington <hp@redhat.com>
* gtk/gtktextview.c (invalidated_handler): use PRIORITY_VALIDATE
* gtk/gtktextview.h (GTK_TEXT_VIEW_PRIORITY_VALIDATE): add this
here, bug #50368; changed to be GDK_PRIORITY_REDRAW + 5, instead
of GDK_PRIORITY_REDRAW + 1, so you can insert stuff in between the
validation and the redraw which is higher priority than the
validation.
2001-01-12 Havoc Pennington <hp@redhat.com>
* gdk/x11/gdkgeometry-x11.c (gdk_window_scroll): offset the
current invalid region, fixes redraw bug while scrolling the
text widget
* gtk/gtktextview.c, gtk/gtktextview.h:
Rearrange the scrolling/validation/etc. code in a major way,
so it seems to make sense to me. Probably isn't genuinely that
much better, but...
* gtk/gtktexttag.c (set_fg_color): fix name of property used for
notifies
* gtk/gtktextmark.c (gtk_text_mark_get_left_gravity): new function
2000-12-31 Havoc Pennington <hp@pobox.com>
* gtk/gtktextview.c: Rearrange all the
scroll-while-dragging-or-selecting code to be different, not
necessarily better. ;-)
(gtk_text_view_scroll_to_mark): Change this
function to take within_margin as a fraction instead of a pixel
value, and to take alignment arguments (indicating where to align
the mark inside the visible area)
* gtk/testtextbuffer.c (fill_buffer): fix bad cast of GtkTextTag
to GtkObject
* gtk/gtktextiter.c (gtk_text_iter_set_line_offset): change
behavior so that offsets past the end of the line are not
allowed, and an offset equal to the line length moves the iterator
to the next line
(gtk_text_iter_set_line_index): make parallel change
(gtk_text_iter_get_bytes_in_line): add this function
* gtk/gtktextbtree.c (_gtk_text_line_byte_locate): change handling
of byte indexes off the end of the line; byte index at the end of
the line now returns FALSE and doesn't fill in the requested
values, byte index past the end of the line is an error. Also,
don't allow -1 offset anymore, since its meaning is unclear.
This change exposes some bug in visual cursor motion, where we
end up with a huge invalid byte index; needs fixing. Symptom of
bug is a crash when you hit up arrow.
(_gtk_text_line_char_locate): match the change to byte_locate
* gtk/gtktextiter.c (find_by_log_attrs): Handle iteration backward
from start of line properly. fixes bug reported by Mikael
Hermansson where backspace would delete all text before the
cursor.
2000-11-30 Havoc Pennington <hp@pobox.com>
* gtk/gtktextdisplay.c (gtk_text_layout_draw): don't create
dangling pointers to the appearance attributes from the
line display
* gdk/gdkdraw.c (gdk_drawable_get_image): allow negative
width/height to mean "full width/height of drawable"
* gtk/gtktextview.h, gtk/gtktextview.c: Implement double/triple
click to select word/line
* gtk/gtktextiter.c (test_log_attrs): include paragraph delimiters
when getting log attrs. Get a slice, so that pixmaps and stuff
are properly handled.
* gtk/gtktextbuffer.c (paste): Fix pasting to work properly if you
paste into the selection (replaces selection now, previously
crashed or added to selection). Reveals longstanding btree bug -
select multiple lines, middle-click on the selection, boom. This
isn't related to my changes though.
* gtk/gtkentry.c (gtk_entry_move_forward_word): Update to reflect
PangoLogAttrs changes
(gtk_entry_move_backward_word): ditto
* gtk/gtktextlayout.h, gtk/gtktextlayout.c: Make the iter motion
functions return bool whether the iter moved onto a
dereferenceable position.
* gtk/gtktextview.h, gtk/gtktextview.c: Add a bunch of public
functions for motion in terms of display lines.
* gtk/gtktextmark.c (gtk_text_mark_get_buffer): Add function to
get the buffer a mark is inside
2000-11-15 Havoc Pennington <hp@pobox.com>
* gtk/gtktextview.c (gtk_text_view_start_cursor_blink): Apply
patch from Mikael Hermansson to temporarily stop blinking while
the user is using the keyboard to type or navigate.
Also, when blinking, stay on for longer than we stay off. Also,
return from start_cursor_blink if !cursor_visible, to save
checking that flag all over the place before we call
start_cursor_blink.
2000-11-13 Havoc Pennington <hp@redhat.com>
* gtk/gtkimmodule.c (gtk_im_module_init): Free the filename of
the module file.
* gtk/gtktexttag.c (gtk_text_attributes_copy): fix memory leak of
dest->language
* gtk/testtext.c: Test pixels above/below/inside paragraphs
settings
* gtk/gtktextview.c: Implement object args and setters/getters for
all the aspects of the GtkTextAttributes that are not set from
GtkWidget attributes. This is spacing, justification, margins,
etc.
(gtk_text_view_set_arg)
(gtk_text_view_get_arg): implement get/set for editable, wrap mode
args
(gtk_text_view_class_init): Add args for justify, left_margin,
right_margin, indent, and tabs
* gtk/gtktextlayout.c (set_para_values): fix to display indent
attribute properly
* gtk/gtktexttag.c: Remove left_wrapped_line_margin attribute,
replace with indent attribute
* gtk/gtktextlayout.c (set_para_values): multiply indent by
PANGO_SCALE
* gtk/gtktextdisplay.c (render_para): Use PangoLayoutIter,
rearranging code to do that
(gtk_text_layout_draw): Pass in the y for the whole LineDisplay,
i.e. don't subtract the top_margin first, just to keep
all margin-futzing in one place.
* gdk/gdkpango.c (gdk_draw_layout): Use PangoLayoutIter
* gtk/gtktextlayout.c (gtk_text_layout_get_iter_location): Remove
special case of last line, Pango now handles this itself.
(gtk_text_layout_get_iter_at_pixel): Fix incorrect clamp of the
Y coordinate
(gtk_text_layout_move_iter_to_x): port to use PangoLayoutIter
(find_display_line_above): wasn't moving the byte index as it
iterated over lines, so always returned byte 0. Also, port to use
PangoLayoutIter.
(find_display_line_below): same problem as
find_display_line_above. Also, port to use PangoLayoutIter.