Commit Graph

56 Commits

Author SHA1 Message Date
Havoc Pennington
7a958797e2 Rearrange all the scroll-while-dragging-or-selecting code to be different,
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-12-31 23:28:57 +00:00
Havoc Pennington
00a6a1b219 do begin/end user action where appropriate (gtk_text_view_commit_handler):
2000-12-18  Havoc Pennington  <hp@redhat.com>

	* gtk/gtktextview.c (gtk_text_view_delete_from_cursor): do
	begin/end user action where appropriate
	(gtk_text_view_commit_handler): add begin/end user action

	* gtk/gtktextbuffer.c: add begin/end user action signals, and
	bracket interactive operations with begin/end user action pair.

	* gtk/gtktextbuffer.h (struct _GtkTextBufferClass): remove
	"interactive" arg from insert_text and delete_text signals.
	Add begin_user_action, end_user_action signals
	(gtk_text_buffer_begin_user_action):
	(gtk_text_buffer_end_user_action): New functions to delimit
	a user-visible action

	* gtk/gtkmarshal.list: update to reflect changes to gtktextbuffer
	signals.
2000-12-18 21:01:17 +00:00
Havoc Pennington
e405f75c2b General cleanup of the log attr iteration stuff. This should make e.g. the
2000-12-16  Havoc Pennington  <hp@pobox.com>

* gtk/gtktextiter.c: General cleanup of the log attr iteration
stuff. This should make e.g. the delete key work again in the
text widget...
(gtk_text_iter_forward_cursor_positions): handle negative count
(gtk_text_iter_backward_cursor_positions): handle negative count
(gtk_text_iter_forward_word_ends): handle negative count
(gtk_text_iter_backward_word_starts): handle negative count

* gtk/gtktextlayout.h, gtk/gtktextlayout.c, gtk/gtktexttag.h,
gtk/gtktexttag.c, gtk/gtktexttagtable.h, gtk/gtktexttagtable.c,
gtk/gtktextbuffer.h, gtk/gtktextbuffer.c: Convert everything to
GObject. No doubt will cause breakage.

* demos/gtk-demo/textview.c: remove hacks around
non-GObject-ification of the text objects

* demos/gtk-demo/main.c (main): use g_object_set() to manipulate
the text tag
2000-12-16 07:01:48 +00:00
Havoc Pennington
94ec8cff93 remove unused call to get_last_line()
2000-12-14  Havoc Pennington  <hp@redhat.com>

	* gtk/gtktextbtree.c (_gtk_text_btree_validate_line): remove
	unused call to get_last_line()

	* gtk/gtkobject.c (gtk_object_add_arg_type): add G_TYPE_POINTER
	here until boxed is working (and maybe after that - we should
	really not gratuitously break old code)

	* gtk/gtktexttag.c (gtk_text_tag_class_init): add commented-out
	specific types for font_desc and tabs args, move them to
	GTK_TYPE_POINTER for now, waiting on g_param_spec_boxed() to get
	fixed. Move GdkColor args to GTK_TYPE_POINTER also.

	* gtk/gtktextbuffer.c (gtk_text_buffer_class_init): temporarily
	use GTK_TYPE_POINTER for signal signatures as a hack-around

	* gtk/gtk-boxed.defs: Add boxed types for PangoFontDescription and
	PangoTabArray

	* gtk/gtktextlayout.c (line_display_iter_to_index):
	make static
	(line_display_index_to_iter): make static

	* gtk/gtktextbuffer.c (gtk_text_buffer_class_init): fix marshaller
	to marshal a string not a boxed

	* gtk/gtkmarshal.list: add marshaller for GtkTextBuffer:insert_text

	* gtk/testtext.c (fill_file_buffer): don't use g_utf8_next_char
	since the UTF-8 isn't validated yet

	* gtk/gtktextsegment.c (char_segment_check_func): don't require
	lines to end in '\n'

	* gtk/gtktextview.c (gtk_text_view_move_cursor): update to use
	forward_to_delimiters, and grapheme boundaries
	(gtk_text_view_delete_from_cursor): properly handle non-newline
	delimiters, and grapheme boundaries

	* gtk/gtktextiter.c (gtk_text_iter_forward_to_newline): rename
	to gtk_text_iter_forward_to_delimiters, and make it work properly
	if empty lines end with a character other than '\n'

	* gtk/gtktextiter.h, gtk/gtktextiter.c: Add movement by cursor
	position
2000-12-14 23:26:59 +00:00
Tim Janik
2c9eb3a572 doh, this was broken beyond believe.
Tue Dec 12 23:46:44 2000  Tim Janik  <timj@gtk.org>

	* gtk/stock-icons/Makefile.am: doh, this was broken beyond believe.

	* gtk/gtkbox.c: change property types from (u)long to (u)int for
	::position and ::padding.

	* gtk/gtkcontainer.c: make ::border_width an INT property.

	* gtk/gtkpacker.c: make ::position an INT property.

	* gtk/gtkscrolledwindow.c (gtk_scrolled_window_adjustment_changed):
	guard against NULL h/v scrollbars, since this is used at construction
	time.

	* gtk/gtkclist.[hc]: nuked gtk_clist_construct(), implemented
	internal gtk_clist_constructor().

	* gtk/gtkctree.[hc]: nuked gtk_ctree_construct(), implemented
	gtk_ctree_constructor().

	* gtk/gtkprogressbar.c (gtk_progress_bar_class_init): property
	::pulse_step should use ARG_PULSE_STEP, not ARG_FRACTION.

	* docs/reference/Makefile.am: fun stuff, disabled docs generation
	again, gtk-scan.c needs to introspec paramspecs, not GtkAgs.

	* gtk/gtkwidget.[hc]:
	removed gtk_widget_setv(), gtk_widget_getv(), gtk_widget_newv()
	and gtk_widget_get().
	(gtk_widget_new): use g_object_new_valist().
	(gtk_widget_set): use g_object_set_valist().

	* gtk/gtkobject.[hc]:
	removed gtk_object_arg_get_info(), gtk_object_getv(),
	gtk_object_query_args(), gtk_object_newv(),
	gtk_object_class_add_signals(),
	gtk_object_class_user_signal_new(),
	gtk_object_class_user_signal_newv(),
	gtk_object_arg_set(), gtk_object_arg_get(),
	gtk_object_args_collect(),
	gtk_object_default_construct(),
	gtk_object_constructed(),
	GTK_CONSTRUCTED and GTK_OBJECT_CONSTRUCTED().
	removed nsignals, signals and n_args members from GtkObjectClass.
	(gtk_object_new): use g_object_new_valist().
	(gtk_object_set): use g_object_set_valist().
	(gtk_object_get): use g_object_get_valist().

	* gtk/gtkcompat.h: define gtk_object_default_construct().

	* gtk/gtktypeutils.c (gtk_type_new): create constructed objects via
	g_object_new().

	* gtk/*.c: removed gtk_object_class_add_signals() from class_init()
	fucntions, cleaned up method assignments (make sure your structures
	are setup properly before calling out). removed all GTK_CONSTRUCTED
	hacks ;)
2000-12-13 01:34:41 +00:00
Havoc Pennington
310a0d4fcc Handle chopping off \r\n and 0x2029 in addition to \n before passing to
2000-12-11  Havoc Pennington  <hp@redhat.com>

	* gtk/gtktextlayout.c (gtk_text_layout_get_line_display):
	Handle chopping off \r\n and 0x2029 in addition to \n before
	passing to PangoLayout

	* gtk/gtkimcontextsimple.c
	(gtk_im_context_simple_get_preedit_string):
	return an empty string if no match is pending

	* gtk/gtkimcontext.c (gtk_im_context_get_preedit_string): add
	assertion that the returned preedit string was sane

	* gtk/gtktext*.[hc], gtk/testtext.c, gtk/testtextbuffer.c:
	s/gtk_text_iter_next_char/gtk_text_iter_forward_char/g;
	s/gtk_text_iter_prev_char/gtk_text_iter_backward_char/g;
2000-12-11 15:51:20 +00:00
8
ad3f7d9653 make need_im_reset flag effective to avoid reset_ic operation being done
2000-12-08    <tajima@eng.sun.com>

        * gtk/gtktextview.c (gtk_text_view_reset_im_context):
        * gtk/gtkentry.c (gtk_entry_reset_im_context):
          make need_im_reset flag effective to avoid reset_ic operation
          being done repeatedly.
2000-12-09 01:04:54 +00:00
Havoc Pennington
5995baabef Remove "draw" virtual method and signal
2000-12-02  Havoc Pennington  <hp@pobox.com>

* gtk/gtkwidget.h (struct _GtkWidgetClass): Remove "draw" virtual
method and signal

* gtk/gtkwidget.c (gtk_widget_draw): Now just queues a draw then
calls gdk_window_process_updates() to push the exposes through
(gtk_widget_class_init): No more draw signal, no
gtk_widget_real_draw()

* gtk/gtkbin.c (gtk_bin_draw): remove

* gtk/gtkbox.c (gtk_box_draw): remove

* gtk/gtkbutton.c (gtk_button_draw): remove

* gtk/gtkcalendar.c (gtk_calendar_draw): remove

* gtk/gtkcheckbutton.c (gtk_check_button_draw): remove

* gtk/gtkcheckmenuitem.c (gtk_check_menu_item_draw): remove

* gtk/gtkclist.c (gtk_clist_draw): remove

* gtk/gtkentry.c (gtk_entry_draw): remove

* gtk/gtkeventbox.c (gtk_event_box_draw): remove

* gtk/gtkfixed.c (gtk_fixed_draw): remove

* gtk/gtkframe.c (gtk_frame_draw): remove

* gtk/gtkhandlebox.c (gtk_handle_box_draw): remove

* gtk/gtkhpaned.c (gtk_hpaned_draw): remove

* gtk/gtklayout.c (gtk_layout_draw): remove

* gtk/gtklist.c (gtk_list_draw): remove

* gtk/gtklistitem.c (gtk_list_item_draw): remove

* gtk/gtkmenu.c (gtk_menu_draw): remove

* gtk/gtkmenubar.c (gtk_menu_bar_draw): remove

* gtk/gtkmenuitem.c (gtk_menu_item_draw): remove

* gtk/gtknotebook.c (gtk_notebook_draw): remove

* gtk/gtkoptionmenu.c (gtk_option_menu_draw): remove

* gtk/gtkpacker.c (gtk_packer_draw): remove

* gtk/gtkrange.c (gtk_range_draw): remove

* gtk/gtkscrolledwindow.c (gtk_scrolled_window_draw): remove

* gtk/gtkspinbutton.c (gtk_spin_button_draw): remove

* gtk/gtktable.c (gtk_table_draw): remove

* gtk/gtktearoffmenuitem.c (gtk_tearoff_menu_item_draw): remove

* gtk/gtktext.c (gtk_text_draw): remove

* gtk/gtktextview.c (gtk_text_view_draw): remove

* gtk/gtktogglebutton.c (gtk_toggle_button_draw): remove

* gtk/gtktoolbar.c (gtk_toolbar_draw): remove

* gtk/gtktree.c (gtk_tree_draw): remove

* gtk/gtktreeitem.c (gtk_tree_item_draw): remove

* gtk/gtktreeview.c (gtk_tree_view_draw): remove

* gtk/gtkviewport.c (gtk_viewport_draw): remove

* gtk/gtkvpaned.c (gtk_vpaned_draw): remove

* gtk/gtkvscale.c (gtk_vscale_draw): remove

* gtk/gtkwindow.c (gtk_window_draw): remove
2000-12-04 01:15:37 +00:00
Havoc Pennington
35876710dc don't create dangling pointers to the appearance attributes from the line
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-12-02 07:51:37 +00:00
Tor Lillqvist
68ae419bfb Changes by Hans Breuer:
2000-11-30  Tor Lillqvist  <tml@iki.fi>

	Changes by Hans Breuer:

	* gdk/win32/gdkwindow-win32.c (gdk_window_set_geometry_hints):
	Dont't use negative width and height as max_hints. This fixes
	Owen's recent testgtk changes for win32.

	* gdk/win32/gdkgc-win32.c (gdk_win32_hdc_get,
	gdk_win32_hdc_release): These are exported and may be called with
	other drawable types than our GdkDrawableImplWin32 (?).

	* gdk/gdkwindow.c: Backing store appears to work on Windows now,
	so always #define USE_BACKING_STORE.

	* gtk/gtktextdisplay.c (render_layout_line): Use g_print instead
	of printf for debugging output.

	* gtk/gtktextlayout.c (allocate_child_widgets): Ditto.

	* gtk/gtktextview.c (gtk_text_view_child_allocated): Ditto.

	* gtk/gtkmain.h (GTKMAIN_C_VAR): Win32 fix for dllimport
	declaration.

	* gtk/gtktexttypes.h: Ditto.

	* gtk/gtklabel.c (gtk_label_set_markup_with_accel): Return a value
	(GDK_VoidSymbol) also if in case of arg check failure.

	* gtk/gtkimcontextsimple.c
	(gtk_im_context_simple_get_preedit_string): Don't assign cursor
	position to the pointer, but to the variable it points to.

	* gtk/makefile.msc.in (DEFINES): Define GTK_VERSION.

	* gtk/gtk.def: Updates.
2000-11-30 23:39:50 +00:00
Havoc Pennington
6f7dd53b80 Semi-finish widget embedding. Need guffaw scrolling to be implemented in
2000-11-20  Havoc Pennington  <hp@redhat.com>

	* gtk/gtktextview.c, gtk/gtktextlayout.c, gtk/gtktextchild.c,
	gtk/testtext.c: Semi-finish widget embedding. Need guffaw
	scrolling to be implemented in GDK to finish. Also, right now
	we just size_allocate all children on every layout change,
	which is pretty lame. Test commented out of testtext.c,
	until it works better.
2000-11-20 23:51:51 +00:00
Havoc Pennington
74df6fc0a5 Apply patch from Mikael Hermansson to temporarily stop blinking while the
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-16 05:45:42 +00:00
Havoc Pennington
306db7d03d Invalidate the side windows when we invalidate the main window.
2000-11-15  Havoc Pennington  <hp@redhat.com>

	* gtk/gtktextview.c (changed_handler): Invalidate the side windows
	when we invalidate the main window.

	* gtk/testtext.c (create_view): Get rid of text_changed_callback,
	GtkTextView will now invalidate the side windows for us when text
	changes.
2000-11-15 21:22:52 +00:00
Owen Taylor
de49f2ce05 ed Nov 15 16:02:20 2000 Owen Taylor <otaylor@redhat.com>
* gtk/gtktextview.c (changed_handler): Call scroll_calc_now()
	unconditionally, since we may need to update the horizontal
	scrollbars even if the height didn't change.

	* gtk/gtktextlayout.c (add_preedit_attrs): Always get
	the extra attrs, since some of them affect size.

	* gtk/gtktextdisplay.c (gtk_text_layout_draw): Factor in
	x_offset correctly.
2000-11-15 21:12:58 +00:00
Havoc Pennington
5bd2297932 offset redraw rect by xoffset in addition to yoffset, so horizontal
2000-11-15  Havoc Pennington  <hp@redhat.com>

	* gtk/gtktextview.c (changed_handler): offset redraw rect by
	xoffset in addition to yoffset, so horizontal scrolling doesn't
	break redraws
2000-11-15 17:49:07 +00:00
Havoc Pennington
6da9e17a1e Fix drag-and-drop to default to GDK_ACTION_MOVE if the drag is within a
2000-11-14  Havoc Pennington  <hp@redhat.com>

	* gtk/gtktextview.c (gtk_text_view_drag_motion): Fix drag-and-drop
	to default to GDK_ACTION_MOVE if the drag is within a single
	widget. Defaults to GDK_ACTION_COPY between widgets.
2000-11-14 21:07:11 +00:00
Havoc Pennington
961e59fb2e spiff up the demo a bit; reveals still more bugs.
2000-11-13  Havoc Pennington  <hp@pobox.com>

* demos/gtk-demo/textview.c: spiff up the demo a bit; reveals
still more bugs.

* gtk/gtktextview.c (gtk_text_view_value_changed): don't try to
scroll the GdkWindows before realization.
2000-11-14 04:57:33 +00:00
Havoc Pennington
73a00eeb44 fix bug where GC didn't always get updated properly
2000-11-13  Havoc Pennington  <hp@redhat.com>

	* gtk/gtktextdisplay.c (gtk_text_render_state_update): fix bug
	where GC didn't always get updated properly

	* demos/gtk-demo/textview.c (create_tags): Use subattributes
	of fonts instead of setting the entire font

	* gtk/testtext.c (fill_example_buffer): Use "size" instead of
	setting entire font

	* gtk/gtkdialog.c (gtk_dialog_add_button): Fix some warnings

	* gtk/gtktexttag.h, gtk/gtktexttag.c: Explode font_desc into
	a bunch of individually-settable font attributes. You can still
	use the "font" and "font_desc" args, they just set all the font
	attributes at once.
2000-11-14 01:08:28 +00:00
Havoc Pennington
15e0004b10 Free the filename of the module file.
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.
2000-11-13 18:49:52 +00:00
Havoc Pennington
9adcd8a4b8 change demo install dir to datadir/gtk+-2.0/demo
2000-11-12  Havoc Pennington  <hp@pobox.com>

* demos/gtk-demo/Makefile.am (democodedir): change demo install
dir to datadir/gtk+-2.0/demo

* demos/gtk-demo/textview.c: Text widget demo; reveals all
sorts of text widget and Pango font bugs. Urgh.

* demos/gtk-demo/Makefile.am (demos): Add textview.c

* demos/gtk-demo/main.c (create_tree): Add instructions at top of
tree that you should double click to see the demo. Fix
types of variables to reflect changed return values from
GtkTreeStore and GtkTreeViewColumn constructors.

* gtk/gtktextbuffer.c (gtk_text_buffer_new): ref/sink the
newly-created buffer to prepare for GObject semantics

* gtk/testtext.c: don't leak the buffer with GObject semantics

* gtk/testtextbuffer.c: ditto
2000-11-13 06:08:17 +00:00
Owen Taylor
dfba226908 Make parent_class static.
Sun Nov  5 04:24:53 2000  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtkcellrenderertextpixbuf.c: Make parent_class
	static.

Tue Sep 19 10:54:22 2000  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtkimcontext*.[ch] gtk/gtkimmulticontext.[ch]
	gtk/gtktextlayout.[ch] gtk/gtktextview.c gtk/gtkentry.c:
	Add support for positioning the cursor within the preedit string.

Mon Sep 18 23:56:32 2000  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtktextview.c: Check for bindings after passing
	events to im context filter.

Mon Sep 18 11:50:51 2000  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtktextlayout.c (add_preedit_attrs): Handle
	empty attribute lists properly.

Sun Sep 17 10:08:16 2000  Owen Taylor  <otaylor@redhat.com>

	* gtk/queryimmodules.c (main): Return non-zero exit
	status if errors were encountered querying any
	modules.

Sat Sep 16 14:01:52 2000  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtk.h: include gtkmodule.h gtkoldeditable.h,
	don't include gtkthemes.h.

	* gtk/testgtk.c gtk/testtext.c: Set environment variables
	to point

	* gtk/Makefile.am: Add new .c and .h files, build
	gtk-query-immodules and use it to create a gtk.immodules
	file for use of test programs.

	* gtk/gtkpreview.c: remove extra blank line.

Sat Sep 16 13:21:04 2000  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtkimcontextsimple.c (gtk_im_context_simple_add_table):
	Add the ability to add extra tables beyond the default
	one, and also the ability to have compose sequences
	that are prefixes of other compose sequences.

	* gtk/gtkimcontextsimple.c: Export a preedit string which
	consists of possible candidates for keystrokes that have
	been entered but not yet committed.

	* gtk/gtkimcontext.[ch] gtk/immulticontext.[ch]
	gtk/gtkimcontextsimple.[ch]: add gtk_im_context_reset()

	* gtk/gtkmulticontext.[ch] (gtk_im_multicontext_append_menuitems):
	Add a function to add input-method switching menu items
	to a menu.

	* gtk/gtkimmulticontext.[ch]: Properly handly set_client_window
	when switching input methods.

	* gtk/gtkimcontextsimple.[ch]: Change the format of
	the compose table to allow compose tables of different
	lengths / sequence.

Sat Sep 16 13:05:48 2000  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtkimmodule.[ch]: Support routines for loading
	GtkIMContext implementations dynamically at runtime.

	* gtk/queryimmodules.c: Program to query the available
	input modules and write the results into a file.

	* gtk/gtkrc.[ch] (gtk_rc_get_im_module_file): Add
	extra config options "im_module_file" (cache file for
	input method modules), and "im_module_path" - path
	to look for modules when generating cache file.

	This doesn't scale.

Sat Sep 16 13:09:06 2000  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtkthemes.[ch] gtk/gtkmodule.[ch]: Move most of the
	generic	code from gtkthemes into a new abstraction
	GtkModule which has the logic for implementing
	a loadable module which implements a number of
	GObject types.

Sat Sep 16 13:07:13 2000  Owen Taylor  <otaylor@redhat.com>

        * gtk/gtkeditable.[ch]: Convert GtkEditable from
	a class into an interface

	* gtk/gtkoldeditable.[ch]: Move the old editable
	implementation into here, so legacy widgets can
	still rely on the implemenation. GtkOldEditable
	exports GtkEditable. Make selection handling
	code use new text conversion functions (and
	handle UTF-8 as a side-effect). Use GtkClipboard
	for CLIPBOARD.

	* gtk/gtktext.[ch] gtk/gtkcombo.c gtk/gtkspinbutton.c:
	Adopt to match above changes.

	* gtk/gtkentry.[ch]: Implement GtkEditable directly,
	avoid GtkOldEditable implementation. Restructure
        to reduce number of places that modify state directly.
	Move to GtkBindingSet. Display the preedit string.
	Queue recomputation of PangoLayout and scroll position
	to improve effiency of doing complex changes naively.
	Add a menu with cut/copy/paste and input method selection.

Thu Sep 14 22:11:05 2000  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtktextlayout.[ch]: Add gtk_text_layout_set_preedit_string()
	to set preedit string and attributes; display preedit string by
	inserting string and attributes at cursor when creating the
	GtkTextLineDisplay.

	* gtk/gtktextlayout.c: Move all conversions between byte
	positions in PangoLayout and GtkTextIter into new functions
	line_display_iter_to_index/index_to_iter that properly
	handle the preedit string.

	* gtk/gtktextmark.[ch]: Restore gtk_text_mark_get_name, modify
	it to return const char * (eventually will end up
	as GCONST char *, most likely.)

	* gtk/gtktextview.[ch]: Handle the preedit string, call
	gtk_im_context_reset() as necessary, add a menu to switch
	input methods.

	* gtk/gtktextlayout.[ch]: Remove useless
	gtk_text_layout_get_log_attrs() function.
2000-11-12 03:43:24 +00:00
Havoc Pennington
bbabca88a3 Make DND copy pixbufs and tags when source and target share a tag table.
2000-11-08  Havoc Pennington  <hp@pobox.com>

        Make DND copy pixbufs and tags when source and target share a
	tag table.

	* gtk/gtktextview.c (gtk_text_view_drag_data_get): provide the
	in-process GTK_TEXT_BUFFER_CONTENTS target
	(gtk_text_view_drag_data_received): Paste from
	GTK_TEXT_BUFFER_CONTENTS if we receive it.
2000-11-09 04:03:19 +00:00
Havoc Pennington
d3c9910ad2 Half-ass somewhat fix this function, so that scrolling to the insertion
2000-11-07  Havoc Pennington  <hp@redhat.com>

	* gtk/gtktextlayout.c (gtk_text_layout_get_iter_location):
	Half-ass somewhat fix this function, so that scrolling to the
	insertion point works. Pango hacking is in the future to really
	fix it.

	* gtk/gtktextview.c (gtk_text_view_drag_data_get): Don't calculate
	length of data, no longer used.

	* gtk/gtktextbuffer.c (gtk_text_buffer_finalize): move destroy
	method contents in here, get rid of destroy method
	(gtk_text_buffer_insert_range): Fix some g_return_if_fail checks
	that were backward. Remove debug spew.
	(cut_or_copy): Make the clipboard work with insert_range to
	preserve tags and pixbufs, not just the primary selection.
2000-11-07 23:05:19 +00:00
Havoc Pennington
f1de9df051 rename to gtk_text_mark_get_visible
2000-11-07  Havoc Pennington  <hp@redhat.com>

	* gtk/gtktextmark.c (gtk_text_mark_is_visible): rename
	to gtk_text_mark_get_visible

	* gtk/gtktextlayout.c (gtk_text_layout_move_iter_to_line_end): fix
	bug that was generating an invalid iterator

	* gtk/gtktextiter.c (gtk_text_iter_get_offset): move call to
	ensure_char_offsets() in front of code placing the iter in an
	invalid state.

	* gtk/gtktextbuffer.c (gtk_text_buffer_paste_primary):
	make override_location arg const
	(paste): Replace the selection if we paste into the
	current selection

	* gtk/gtkselection.h: Remove "GtkSelectioData"
	(struct _GtkSelectionData): move the definition here.

	* gtk/gtktextbuffer.c (gtk_text_buffer_update_primary_selection):
	Export the GTK_TEXT_BUFFER_CONTENTS target for in-process copies

	* gtk/gtktextiter.c (gtk_text_iter_get_tags): New function

	* gtk/gtktextbuffer.c (gtk_text_buffer_insert_range): implement
	(gtk_text_buffer_insert_range_interactive): implement
	(gtk_text_buffer_get_tags): Remove, replaced by
	gtk_text_iter_get_tags()

	* gtk/gtktextiter.c (gtk_text_iter_forward_search): Add a search
	limit parameter, to avoid infinite linear scan.
	(gtk_text_iter_backward_search): Add search limit
	(gtk_text_iter_forward_find_char): Add search limit
	(gtk_text_iter_backward_find_char): Add search limit
2000-11-07 21:01:02 +00:00
Havoc Pennington
69f42512fa Derive from GtkDialog, and use stock buttons. Should be 100% source
2000-11-02  Havoc Pennington  <hp@redhat.com>

	* gtk/gtkfilesel.h, gtk/gtkfilesel.c: Derive from GtkDialog, and
	use stock buttons. Should be 100% source compatible, appropriate
	filesel fields now point to dialog->vbox and dialog->action_area.
	On the bizarre side, dialog->action_area and filesel->action_area
	are not the same widget.
	(gtk_file_selection_init): Put some padding around the selection
	entry, so it isn't touching the GtkDialog separator.

	* gtk/gtkfontsel.h, gtk/gtkfontsel.c: Derive from GtkDialog,
	use stock buttons, etc. Should also be source compatible.
	Set the dialog default title in _init not _new().

	* gtk/gtkcolorseldialog.c (gtk_color_selection_dialog_init):
	Use stock buttons; don't put a button box inside the existing
	dialog button box. Don't bother with push/pop colormap anymore.

	* gtk/gtkdialog.h (GtkResponseType): Add a bunch of more
	specific GTK_RESPONSE_* values. This is clearer than ACCEPT/REJECT
	for message dialog, and necessary for the font selection and color
	selection with help and apply buttons.

	* gtk/gtkdialog.c (gtk_dialog_add_button): Return a pointer
	to the created button widget. Set GTK_CAN_DEFAULT on the button.
	(gtk_dialog_init): Default to GTK_BUTTONBOX_END, put less spacing
	between buttons, put less padding around the action area.
	(gtk_dialog_run): Exit on unmap rather than on destroy.
	This will also exit the loop if the widget is hidden.
	(gtk_dialog_delete_event_handler): Use GTK_RESPONSE_DELETE_EVENT
	instead of GTK_RESPONSE_NONE; since we're already adding a bunch
	of GTK_RESPONSE_* stuff, this seems cleaner, and lets you
	special-case delete event.

	* gtk/gtktexttagtable.c, gtk/gtktextview.c: Fix doc comment
	formatting
2000-11-06 16:44:01 +00:00
Havoc Pennington
5f91b6fca6 Added a bunch of stuff from unused
2000-11-04  Havoc Pennington  <hp@pobox.com>

* gtk/gtk-sections.txt: Added a bunch of stuff from unused


2000-11-04  Havoc Pennington  <hp@pobox.com>

* gtk/gtkenums.h: remove trailing comma from GtkDeleteType member
list

* docs/Changes-2.0.txt: Add note about
gtk_container_get_toplevels()

* gtk/gtktextview.h: formatting

* gtk/gtktextview.c: don't start descriptions with "Returns",
confuses gtk-doc
2000-11-04 16:31:37 +00:00
Havoc Pennington
6c9d8adc49 Docs (gtk_text_tag_table_size): return a signed int
2000-11-03  Havoc Pennington  <hp@redhat.com>

	* gtk/gtktexttagtable.c: Docs
	(gtk_text_tag_table_size): return a signed int

	* gtk/gtktexttag.c: s/tkxt/text/g; write documentation
	(gtk_text_tag_event): make the event_object a GObject

	* gtk/gtktextview.c: Write API docs for all functions.

	* gtk/gtktextview.h: add GTK_TEXT_WINDOW_PRIVATE as return value
	for gtk_text_view_get_window_type() called on one of the private
	windows.

	* gtk/gtktextview.c: Instead of accessing text_view->buffer
	directly, call get_buffer() which demand-creates a default
	buffer. So gtk_text_view_new() can be used to create a view with a
	default buffer in it, if you just want an empty text box users can
	put data in. Useful for GUI builders also.
2000-11-03 23:31:06 +00:00
Havoc Pennington
ca83d0a3dc Get widgets working on the btree/buffer side. Display of them still
2000-11-03  Havoc Pennington  <hp@redhat.com>

        Get widgets working on the btree/buffer side. Display of them
	still doesn't work.

	* gtk/gtktextview.c: start implementing child widget stuff

	* gtk/gtktextiter.c (gtk_text_iter_get_child_anchor): new function

	* gtk/gtktextlayout.c: handle embedded widgets

	* gtk/gtktextdisplay.c: handle embedded widgets

	* gtk/gtktextchild.c: Implement all the child anchor goo

	* gtk/gtktextbuffer.c (gtk_text_buffer_create_child_anchor): New
	function

	* gtk/gtktextbtree.c: Add child anchor table to the btree struct
	(insert_pixbuf_or_widget_segment): abstract out common portions of
	creating a child anchor or a pixbuf segment.
	(gtk_text_btree_create_child_anchor): new function
	(gtk_text_btree_unregister_child_anchor): new function

	* gtk/gtkmarshal.list: added VOID:OBJECT,INT,INT for the
	allocate_child signal on GtkTextLayout

	* gtk/gtktextiter.c (gtk_text_iter_get_pixbuf): fix bogus return
	values
	(gtk_text_iter_get_child_anchor): new function

	* gtk/gtktextbuffer.c (gtk_text_buffer_real_changed): Add a
	default handler for the changed signal, which calls
	gtk_text_buffer_set_modified(), instead of just always emitting
	changed then calling set_modified() manually. I guess this is
	maybe more flexible. It seems logical.
2000-11-03 20:40:57 +00:00
Havoc Pennington
94110facb2 Rename delete_at_cursor delete_from_cursor, and move to move_cursor.
2000-10-30  Havoc Pennington  <hp@redhat.com>

	* gtk/gtktextview.h, gtk/gtktextview.c:
	Rename delete_at_cursor delete_from_cursor, and
	move to move_cursor.
2000-10-30 17:14:55 +00:00
Havoc Pennington
5190c7397c Massive reindentation and reformatting. Arg alignment and comments still
2000-10-30  Havoc Pennington  <hp@redhat.com>

	* gtktextbtree.c, gtktextbtree.h, gtktextbuffer.c,
	gtktextbuffer.h, gtktextchild.c, gtktextchild.h,
	gtktextchildprivate.h, gtktextdisplay.c, gtktextdisplay.h,
	gtktextiter.c, gtktextiter.h, gtktextiterprivate.h,
	gtktextlayout.c, gtktextlayout.h, gtktextmark.c, gtktextmark.h,
	gtktextmarkprivate.h, gtktextsegment.c, gtktextsegment.h,
	gtktexttag.c, gtktexttag.h, gtktexttagprivate.h,
	gtktexttagtable.c, gtktexttagtable.h, gtktexttypes.c,
	gtktexttypes.h, gtktextview.c, gtktextview.h:

	Massive reindentation and reformatting. Arg alignment and comments
	still need fixing in various places.
2000-10-30 17:03:00 +00:00
Havoc Pennington
ad8cdea4e8 Change run action signals to be named insert_at_cursor and
2000-10-30  Havoc Pennington  <hp@redhat.com>

	* gtk/gtktextview.h, gtk/gtktextview.c: Change run action signals
	to be named insert_at_cursor and delete_at_cursor so C++ can
	handle them.
2000-10-30 15:41:57 +00:00
Robert Brady
774de16743 And fix the marshaller for GtkTextView::delete. 2000-10-28 02:27:44 +00:00
Robert Brady
11f59345e4 add new marshaller for GtkTextView.
Sat Oct 28 02:33:09 2000  Robert Brady  <robert@suse.co.uk>

	* gtk/gtkmarshal.list: add new marshaller for GtkTextView.

	* gtk/gtktextview.c: Use correct marshaller.
2000-10-28 01:39:45 +00:00
Havoc Pennington
a291b0be4c add new marshallers used by the text widget
2000-10-26  Havoc Pennington  <hp@redhat.com>

	* gtk/gtkmarshal.list: add new marshallers used by the text widget

	* gtk/gtktextbuffer.c (gtk_text_buffer_class_init): fix marshaller
	types

	* gtk/gtktexttagtable.c (gtk_text_tag_table_class_init): fix
	marshaller types

	* gtk/gtktextlayout.h, gtk/gtktextlayout.c, gtk/gtktextdisplay.h,
	gtk/gtktextdisplay.c: We need to preserve Tk copyrights and
	license on these files.

	* gtk/gtktextiter.c (gtk_text_iter_backward_search): Make this
	work.

	* gtk/gtktextbtree.c (gtk_text_btree_new): init stamps to
	runtime random number different for each tree, instead of
	a constant I made up.
2000-10-26 23:05:43 +00:00
Tim Janik
d69496c060 urg, removed implementation of gtk_marshal_VOID__INT_INT_INT_INT. if
Wed Oct 25 20:47:41 2000  Tim Janik  <timj@gtk.org>

        * gtk/gdk-pixbuf-loader.c (gdk_pixbuf_loader_class_init): urg, removed
        implementation of gtk_marshal_VOID__INT_INT_INT_INT. if people do that,
        couldn't they at least give it a non-standard name?

        * gtk/gtktextlayout.c: arg! yet another implementation of
        gtk_marshal_VOID__INT_INT_INT_INT(), is this a conspiracy?

        * gtk/gtktextbuffer.c: gotcha! captured a vagabonding
        gtk_marshal_VOID__INT_POINTER_INT() implementation, braught it back
        home. now i know this _is_ a conspiracy.

        * gtk/gtkwidget.c (gtk_widget_class_init): marshaller fixups for
        ::state-changed.

        * gtk/gtkaccelgroup.c (gtk_accel_group_create_remove):
        (gtk_accel_group_create_add): marshaller signature fixups.

        * gtk/gtklistitem.c (gtk_list_item_class_init): signal creation fixups,
        pass in GTK_TYPE_SCROLL_TYPE instead of GTK_TYPE_ENUM.

        * gtk/gtkobject.[hc]: removed GTK_CONNECTED flag, it's not valid
        anymore.

Tue Oct 24 23:59:21 2000  Tim Janik  <timj@gtk.org>

        * docs/reference/Makefile.am: disabled SUBDIRS for the moment, since
        due to the signal system changes, it wouldn't build currently. to
        be fixed soon.

        * docs/Changes-2.0.txt: GtkSignal/GSignal updates.

        * gtk/gtkwidget.c: ::direction_changed takes an enum as argument,
        so it needs gtk_marshal_VOID__ENUM() instead of
        gtk_marshal_NONE__UINT().

        * gdk/gdk*.c: adapted type registration functions.

        * gtk/gtkbindings.c:
        * gtk/gtkaccelgroup.c: operate on GSignalQuery, GtkSignalQuery is
        gone.

        * gtk/gtkenums.h: define GtkSignalRunType in terms of GSignalType.

        * gtk/gtkobject.c:
        (gtk_object_destroy):
        (gtk_object_shutdown): fixed recursion guards. basically we have to
        catch the case where any of GObject.shutdown() or gtk_object_destroy()
        is called during ::destroy, and avoid recursion there.

        * gtk/gtktypeutils.c:
        * gtk/maketypes.awk: awk-script hackup to provide gtk_type_init() with
        boxed_copy/boxed_free. this needs a more general solution based on a
        publically installed code-generator utility.

        * gtk/gtktypeutils.[hc]: compat aliased GTK_TYPE_BOXED to G_TYPE_BOXED,
        glib's gobject has support for that now.
        define GtkSignalMarshaller in terms of GSignalCMarshaller.


Mon Oct 23 09:36:42 2000  Tim Janik  <timj@gtk.org>

        * gtk/gtksignal.[hc]:
        * gtk/gtkmarshal.[hc]:
        * gtk/Makefile.am: generate marshallers with glib-genmarshal and don't
        compile gtkmarshal.c on its own anymore, just include it in gtksignal.c.
        removed #include <gtkmarshal.h>s all over the place, gtksignal.h takes
        care of that.

        * *.c: marshaller name fixups.

        * gtk/gtkmarshal.list: added a comment briefing the format.

Sun Oct 22 23:14:39 2000  Tim Janik  <timj@gtk.org>

        * gtk/gtksignal.[hc]: nuked old implementation. we mostly have
        compatibility macros here now. more specifically, most of
        the API is preserved (yes, _most_, nonwithstanding the
        following exceptions listed, the API is stil lHUGE ;)
        things that got removed completely:
        GtkSignalQuery, gtk_signal_query(), gtk_signal_n_emissions(),
        gtk_signal_n_emissions_by_name(), gtk_signal_handlers_destroy(),
        gtk_signal_set_funcs(), gtk_signal_handler_pending_by_id(),
        gtk_signal_add_emission_hook(), gtk_signal_add_emission_hook_full(),
        gtk_signal_remove_emission_hook().
        non-functional functions variants:
        gtk_signal_add_emission_hook(), gtk_signal_remove_emission_hook().
        the GtkCallbackMarshal argument to gtk_signal_connect_full() is
        not supported anymore.
        (gtk_signal_compat_matched): new internal function to aid
        implementation of the compatibility macros, it  provides
        functionality to block/unblock/disconnect handlers based
        on func/data.

        * gtk/gtkenums.h: define GtkSignalRunType in terms of GSignalType,

        * *.c: adaptions to new type registration API signatures.


Fri Oct 20 15:26:33 2000  Tim Janik  <timj@gtk.org>

        * gtk/gtktypeutils.[hc]: removed G_TYPE_GTK_POINTER cludge.
2000-10-25 22:34:14 +00:00
Havoc Pennington
7a4c689387 Some updates
2000-10-18  Havoc Pennington  <hp@redhat.com>

	* gtk/gtk-sections.txt: Some updates

	* gdk/gdk-sections.txt: remove GdkPixbufAlphaMode

	* gdk-pixbuf/gdk-pixbuf-sections.txt: Add new API, remove
	GdkPixbufClass/GdkAnimationClass since those are private

	* gdk-pixbuf/Makefile.am (IGNORE_HFILES): ignore more headers

2000-10-18  Havoc Pennington  <hp@redhat.com>

	* gtk/gtktextiter.c (gtk_text_iter_forward_to_newline): Fix a bug
	where any number of empty lines would get skipped

	* gtk/gtktextiter.h: Remove padding from GtkTextIter; live on the
	edge.

	* gtk/gtktextiter.c (gtk_text_iter_make_surreal): enhance the
	warning about invalid iterators (explain more thoroughly)
	(gtk_text_iter_in_region): rename gtk_text_iter_in_range

	* gtk/gtktextview.c (FOCUS_EDGE_WIDTH): Make focus rectangle less
	big

	* demos/*.c: Add error handling

	* gtk/gtktextbuffer.c: don't modify const iterators

	* gtk/gdk-pixbuf-loader.c: Add full error handling here

	* gtk/gtkimage.c (gtk_image_set_from_file): ignore errors
	on file load

	* gtk/gtkiconfactory.c: Update to reflect addition of error
	handling to gdk-pixbuf loaders

2000-10-16  Havoc Pennington  <hp@redhat.com>

	* gdk-pixbuf-io.c (gdk_pixbuf_get_module)
	(gdk_pixbuf_get_named_module) (gdk_pixbuf_load_module):
	add error reporting here also

	* make-inline-pixbuf.c (main): use GError

	* io-xpm.c: include unistd.h

	* gdk-pixbuf-util.c: include string.h

	* io-*.c: add error reporting

	* gdk-pixbuf-animation.c (gdk_pixbuf_animation_new_from_file): add
	error reporting

	* gdk-pixbuf-io.c (gdk_pixbuf_new_from_file): Add error reporting

	* gdk-pixbuf-io.h: Add GError** to load_increment and load
	methods

	* gdk-pixbuf-io.c (gdk_pixbuf_save) (gdk_pixbuf_savev): return
	a G_FILE_ERROR if we fail to write or close the file.

	* gdk-pixbuf.h: remove GDK_PIXBUF_ERROR_IO, instead we'll use
	G_FILE_ERROR_*. Rename enum to GdkPixbufError, properly following
	the GError naming rules. Add GError** to load functions.
2000-10-18 18:42:54 +00:00
Havoc Pennington
928c069883 clean up trailing whitespace, add extensive tests for tag toggle
2000-10-03  Havoc Pennington  <hp@redhat.com>

	* gtk/testtextbuffer.c: clean up trailing whitespace,
	add extensive tests for tag toggle iteration.

	* gtk/gtktextiter.c (MAX_LINEAR_SCAN): decrease linear scan
	distance

	* gtk/gtktextbtree.c (gtk_text_line_next_could_contain_tag):
	optimize case where the tag root is on level 1
	(gtk_text_line_previous_could_contain_tag): attempt to implement
	(gtk_text_line_next_could_contain_tag): Abstract out node_compare
	functionality

	* gtk/gtktextiter.c (gtk_text_iter_backward_to_tag_toggle):
	Implement this, though not very efficiently.

	* gtk/gtktextiterprivate.h: reformat

	* gtk/gtktextiter.c (gtk_text_iter_get_char): return 0 on the end
	iterator

	* gtk/gtktextbuffer.c (gtk_text_buffer_delete_interactive): Fix
	this to properly revalidate the iterators.

	* gtk/gtktextview.c (gtk_text_view_delete): fix control-K to work
	properly at the end of the line (and therefore on empty lines)

	* gtk/gtktextbtree.c (gtk_text_btree_get_selection_bounds): Gee,
	maybe we should return a value...
2000-10-04 14:23:09 +00:00
Havoc Pennington
8ebf77d13b text_window_* weren't static and should have been. Start work on child
2000-10-02  Havoc Pennington  <hp@pobox.com>

        * gtk/gtktextview.c: text_window_* weren't static and should have
	        been.
		        Start work on child widgets; not yet complete,
syncing to
        office computer.

	        * gtk/gtktextchild.h: change this to contain a public interface,
		starting work on child interfaces.
		        * gtk/gtktextchildprivate.h: move private interfaces here

			* gtk/Makefile.am: update to reflect gtktextchildprivate.h

			* gtk/gtktextview.h, gtk/gtktextview.c, gtk/gtktextbuffer.h,
			gtk/gtktextbuffer.c, gtk/gtktextiter.h, gtk/gtk/textiter.c,
			gtk/gtktextmark.c: copyright notices

			* gtk/gtktextmarkprivate.h: reformat, and put _ in
front of
        internal functions

	* gtk/gtktextchild.c (_pixbuf_segment_new): put _ in front of
	internal function

	* gtk/gtktextlayout.c (gtk_text_layout_get_line_display):
	Reformatting
2000-10-02 14:29:24 +00:00
Havoc Pennington
632fda6f0b Handle NULL start/end pointers
2000-09-30  Havoc Pennington  <hp@pobox.com>

* gtk/gtktextbtree.c (gtk_text_btree_get_selection_bounds): Handle
NULL start/end pointers

* gtk/gtktextbuffer.c: Write some docs
(gtk_text_buffer_get_selection_bounds): Allow start/end to be
NULL, so you can just check whether there's a selection.

* gtk/gtktextbtree.c (gtk_text_btree_remove_mark): No need to
cleanup_line or segments_changed ourselves, it gets done
in unlink_segment

* gtk/gtktextmark.h:
s/gtk_text_mark_deleted/gtk_text_mark_get_deleted/

* gtk/gtktextsegment.h: Clean up some indentation and naming mess

* gtk/gtktextmark.c: delete some more old Tk cruft

* gtk/gtktextbuffer.c (gtk_text_buffer_delete_mark): add ref to
mark before removing it, so we can emit MARK_DELETED with a valid
pointer.
(gtk_text_buffer_mark_set): hold ref across signal emission

* gtk/gtktextbtree.c (gtk_text_btree_remove_mark): improve
whining about attempts to delete special marks

* gtk/gtktextbuffer.c (_gtk_text_buffer_spew): Prepend with
underscore, since it's internal.

* gtk/gtktextbuffer.h: Remove find_string prototype, this is
now implemented in terms of iterators in gtktextiter.h

* gtk/gtktextbuffer.c (gtk_text_buffer_set_text):
New function, destructively sets contents of buffer. Also
a convenient way to clear the buffer by setting text to ""

* gtk/gtktextiter.c (gtk_text_iter_make_surreal): reformat
multiline string literal

* gtk/testtext.c (text_changed_callback): Redraw line numbers if
text changes.

* gtk/gtktextiter.c (forward_char): Return FALSE if new location
is not dereferenceable
(gtk_text_iter_forward_lines): fix return value
2000-09-30 17:08:25 +00:00
Havoc Pennington
244996ffec fix indentation
2000-09-29  Havoc Pennington  <hp@redhat.com>

	* gtk/gtktexttag.c (gtk_text_tag_set_priority): fix indentation

        * gtk/gtktextview.c: Implement drag thresholding; change functions
	that set border window size to have nicer name
	(gtk_text_view_mark_set_handler):  Fix this to have the
	right signature.

	* gtk/testtextbuffer.c (fill_buffer): Update with pixbuf changes

	* gtk/testtext.c: Update with API changes, put line numbers on
	both sides.

	* gtk/gtktextiter.c (gtk_text_iter_get_pixbuf): Replace get_pixmap
	with this

	* gtk/gtktextchild.h, gtk/gtktextchild.c: replace all pixmap with
	pixbuf; delete a big block of #if 0 Tk code

	* gtk/gtktextbuffer.c (gtk_text_buffer_insert_pixbuf): Replace
	insert_pixmap with insert_pixbuf
2000-09-30 00:17:22 +00:00
Havoc Pennington
d0cbd57de8 Implement the side windows.
2000-09-29  Havoc Pennington  <hp@pobox.com>

* gtk/gtktextview.c: Implement the side windows.

* gtk/testtext.c: Implement simple line numbering in the
left side window; seems to make scrolling sloooow. Oops.
Also, cursor blink is for some reason causing redraws
of the line numbers. Should investigate...
2000-09-29 05:47:34 +00:00
Havoc Pennington
85735ec7f5 Set up infrastructure to deal with lots of scrolling child windows, and
2000-09-28  Havoc Pennington  <hp@redhat.com>

	* gtk/gtktextview.c: Set up infrastructure to deal with lots of
	scrolling child windows, and draw focus rectangle properly.

	(gtk_text_view_buffer_to_window_coords):
	Coordinate transformation to deal with all these freaking windows
	and offsets
	(gtk_text_view_window_to_buffer_coords): transform the other way

	* gtk/testtext.c (create_buffer): Update to match Pango API change

	* gtk/gtktexttagtable.c (gtk_text_tag_table_foreach): Go over the
	anonymous tags
	(foreach_unref): don't emit remove signal from finalize, just
	set tag's parent to NULL
2000-09-28 21:10:40 +00:00
Havoc Pennington
9bec105a66 Draw the focus, and leave space to do so.
2000-09-25  Havoc Pennington  <hp@redhat.com>

	* gtk/gtktextview.c: Draw the focus, and leave space to do so.

	* gtk/gtktexttypes.c: Remove Latin1 conversion stuff

	* gtk/gtktextbtree.c (gtk_text_btree_node_remove_data):
	Fix a bug when removing node data, we didn't properly
	re-splice the linked list after removing the data.

	* gtk/gtktextview.c (gtk_text_view_key_press_event): Pass through
	GDK_Tab as literal tab, Ctrl-Tab to tab to focus widget

	* gtk/gtktextbuffer.c (selection_received): fix g_convert usage

	* gtk/gtktextlayout.c (set_para_values): Set tab array
	for the layout from the GtkTextTag.

	* gtk/gtktexttypes.h: delete tab and search cruft,
	remove g_convert() in favor of GLib version

	* gtk/gtktexttypes.c: remove tab implementation from here,
	move to Pango

	* gtk/gtktexttag.h, gtk/gtktexttag.c: Implement
	tab stuff using new PangoTabArray from Pango

	* gtk/gtktexttag.c (gtk_text_attributes_fill_from_tags): Remove
	unused border_width stuff
2000-09-25 17:17:13 +00:00
Owen Taylor
39339f14f5 Remove g_convert (moved to glib) and now useless utf_to_latin1()
Thu Sep 14 12:21:12 2000  Owen Taylor  <otaylor@redhat.com>

        * gtk/gtktexttypes.[ch]: Remove g_convert (moved to
	glib) and now useless utf_to_latin1() latin1_to_utf()

	* gtk/gtktextview.[ch]: Change ::move_insert and
	::delete_text action signals to ::move and ::delete;
	create the signals with the right enumeration type,
	not GTK_TYPE_ENUM so that bindings work. Add C-d, M-d,
	C-v bindings, change Home, End to move to beginning/end
	of line, Add C-Home C-End to move to beginning/end
	of buffer. Change ::cut_text to ::cut_clipboard, etc;
	combine ::scroll_text into ::move; use new GtkSelectionData
	functions to simplify DND text handling.

	* gtk/gtkenums.h gtk/gtktextview.h: Move movement,
	deletion enumerations here, rename enumeration values to
	be consistently plural.

	* gtk/gtktextbuffer.c: Use new clipboard interfaces
	for cut/copy/paste and primary selection.

	* gtk/gtktextbuffer.[ch]: Remove excess time and
	'interactive' arguments from cut/copy/paste;
	rename cut to cut_clipboard, etc; remove
	gtk_text_buffer_get_clipboard_contents().

	* gtk/gtktextlayout.[ch]: Add
	gtk_text_layout_move_iter_to_line_end() to move	the iter to
	line ends.

	* gtk/gtkselection.[ch] (gtk_selection_data_set/get_text):
	Functions to set or get a UTF-8 string on the selection
	data.

	* gtk/gtkclipboard.[ch]: New, simplified selection handling
	interfaces.

	* gtk/gtkinvisible.c (gtk_invisible_new): Realize newly
	created widgets - one of these is useless if we don't.

	* gtk/gtkselection.[ch] (gtk_selection_clear_targets): Export
	a public function clear all targets registered for the
	widget.

	* gtk/gtkselection.c (gtk_selection_owner_set) docs/Changes-2.0.txt:
	Never call gtk_widget_realize() - that was just asking
	for bizarre side-effects.

	* gtk/gtkselection.c (gtk_selection_owner_set): Call
	gdk_selection_owner_set even if the widget is the
	same so that we reliably update the timestamp on
	the server.

	* gdk/x11/gdkevents-x11.c gdk/x11/gdkx.h: Add a
	gdk_x11_get_server_time() function.

	* gdk/x11/gdkevents-x11.c gdk/x11/gdkprivate-x11.h
	gdk/x11/gdkselection-x11.c gdk/x11/gdkwindow-x11.h:
	Add some tricky filtering on serial numbers for
	selection clear events to fix up long-standard
	race condition FIXME's in gtkselection.c.

	* gdk/gdkproperty.h gdk/x11/gdkselection-x11.h: Add
	routines to convert from utf8 to compound text or
	STRING and from a text property to UTF-8.

	* gtk/gtkmain.[ch] (gtk_get_current_event_time): Add
	a convenience function gdk_get_current_event_time().

	* gtk/gtkselection.c (gtk_selection_data_copy/free): Copy
	and free selection_data->data properly
2000-09-14 16:41:20 +00:00
Owen Taylor
2e2272aac1 Fix up visibility so that focus, cursor_visible and blink interact
Fri Sep  8 14:28:00 2000  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtktextview.c: Fix up visibility so that focus,
	cursor_visible and blink interact properly.  Reenable cursor blink
	which had been roughly disabled. Make blink and focus
	properly per-view.

	* gtk/gtktextlayout.[ch] (gtk_text_layout_set_cursor_visible):
	Add a flag for whether to display insertion cursor and
	a function to set the flag.

	* gtk/gtktextlayout.c (gtk_text_layout_get_line_yrange): Change
	get_line_y() to get_line_yrange(), to be a bit more generally
	useful.
2000-09-08 18:33:03 +00:00
Havoc Pennington
78500e9045 Rename GtkTextStyleValues to GtkTextAttributes
2000-08-31  Havoc Pennington  <hp@redhat.com>

	* gtk/gtktextiter.h, gtk/gtktextiter.c, gtk/gtktextlayout.h,
	gtk/gtktextlayout.c, gtk/gtktexttag.h, gtk/gtktexttag.c,
	gtk/gtktexttagprivate.h, gtk/gtktextview.c:
	Rename GtkTextStyleValues to GtkTextAttributes
2000-08-31 17:08:45 +00:00
Havoc Pennington
a4762fbff4 update to reflect text widget changes.
2000-07-25  Havoc Pennington  <hp@redhat.com>

* gtk/testtext.c, gtk/testtextbuffer.c: update to reflect text
widget changes.

* gtk/gtktextview.h: To be consistent with usage of "line"
throughout the API to mean "newline-terminated thingy", change
MOVEMENT_LINE to be MOVEMENT_WRAPPED_LINE, and MOVEMENT_PARAGRAPH
to MOVEMENT_LINE.

(GtkTextView): Add flags for default editability, and whether to
show the cursor. Add functions to get/set that. Add

(gtk_text_view_get_iter_location): new function

* gtk/gtktexttypes.h: Move GtkTextLine typedef from here to
gtktextlayout.h
(g_convert): Add g_convert temporarily, will go in glib in a bit

* gtk/gtktexttagtable.h: include gtktexttag.h, and define
GtkTextTagTableForeach instead of brokenly using GHFunc.
Change gtk_text_tag_table_foreach() so it doesn't use GHFunc.

* gtk/gtktexttagprivate.h: Remove GtkTextStyleValues from here,
moved to public header.

* gtk/gtktexttag.h: Rename the "elide" attribute of tags to
"invisible", since "elide" was a bad name.
(gtk_text_tag_get_priority): Added

(GtkTextStyleValues): put this in public header, along with
functions to use it.

* gtk/gtktextmarkprivate.h: Include more headers, since we no
longer include gtktextbtree.h.

* gtk/gtktextmark.h: Add gtk_text_mark_ref, gtk_text_mark_unref,
gtk_text_mark_deleted

* gtk/gtktextlayout.h: Don't include the "really private" headers,
only buffer/iter. Forward declare GtkTextLIne and GtkTextLineData
to make this possible. Now we only need to install
gtktextlayout.h, not gtktextbtree.h and gtktext*private.h.
(However the Makefile.am isn't changed yet because of the
logistics of merging gtk-hp-patches piecemeal)

* gtk/gtktextiterprivate.h: include btree header, so it compiles;
rename gtk_text_iter_get_line to gtk_text_iter_get_text_line since
gtk_text_iter_get_line is now used in the public API for a
different purpose.

* gtk/gtktextiter.h: Clean up function names to be more
consistent. Always call char offset "offset" and byte index
"index". A "line" is always a line number.

(gtk_text_iter_is_last): new function, more efficient than
the existing way to check
(gtk_text_iter_is_first): new function, also more efficient

(gtk_text_iter_up_lines, gtk_text_iter_down_lines): Remove these

(gtk_text_iter_next_char, gtk_text_iter_prev_char): Renamed from
gtk_text_iter_forward_char, etc.

(gtk_text_iter_forward_to_tag_toggle): Renamed from
forward_find_tag_toggle, since this isn't a linear search

(GtkTextCharPredicate): rename from GtkTextViewCharPredicate

(gtk_text_iter_forward_search, gtk_text_iter_backward_search):
New functions, search for a buffer substring.

* gtk/gtktextbuffer.h: Add fields to store whether a paste is
interactive and default editable (since we need to store that info
until we receive the selection data).

Remove all the _at_char and at_line etc. versions of functions;
only have iterator versions.

Add _interactive() versions of functions, that consider the
editability of text. (FIXME add interactive flag to the
insert/delete signals per Darin's suggestion)

(gtk_text_buffer_get_tag_table): new function, demand-creates the
tag table if necessary

Remove declaration of gtk_text_buffer_get_iter_from_string

(_gtk_text_buffer_get_btree): private/internal function, added.


* gtk/gtktextbtree.h: Remove forward decl of GtkTextLineData.
(gtk_text_line_is_last): new function
2000-07-25 23:59:38 +00:00
Owen Taylor
6a2c2edf05 Fix bug where redraw wasn't being done properly when height of dirty
Sat Jul 22 11:16:05 2000  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtktextview.c (changed_handler): Fix bug where
	redraw wasn't being done properly when height of
	dirty region changed.

	* demos/Makefile.am: Remove various references to
	-lgmodule

	* Makefile.am (test_gdk_pixbuf_LDADD): Remove -lgmodule
2000-07-22 15:21:31 +00:00
Owen Taylor
0bcf86c032 use FALSE for size_only most of the time when calling
Fri Jul 14 16:21:26 2000  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtktextlayout.c: use FALSE for size_only most
	of the time when calling gtk_text_layout_get_line_display()
	to avoid causing double reshapes when a redraw follows
	immediately after.

Tue Jul 11 11:13:40 2000  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtkrange.c (gtk_range_default_[hv]slider_update): Invalidate
	appropriate region and gdk_window_process_updates() so trough
	updating doesn't lag behind the window being scrolled.

        * gdk/gdkgc.c: Make parent_class pointer static.

Sun Jul  9 21:31:23 2000  Owen Taylor  <otaylor@redhat.com>

        * gdk/gdk-pixbuf.c gtk/gdk-pixbuf-loader.c gtk/gtktextview.c:
	include <string.h>.

	* gdk/gdkpixbuf-render.c (gdk_pixbuf_render_to_drawable): Fix
	cut-and-paste error in computing memory offset for 4 channels.
2000-07-14 20:24:14 +00:00
Owen Taylor
b02ebc65e4 Call gtk_widget_size_request() on reparented child, if one. Otherwise,
Sun Jul  2 14:37:58 2000  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtkoptionmenu.c (gtk_option_menu_size_request): Call
	gtk_widget_size_request() on reparented child, if one. Otherwise,
	queue_resize() on the child never results in it getting size-requested
	at all.

	* gtk/testgtk.c (build_option_menu): Remove silly radio-menu-items
	in option menus, so that (with luck) people won't copy it into
	their apps in the future.

	* gtk/gtkoptionmenu.c: Connect ::size_request on the menu
	to gtk_option_menu_calc_size. This isn't perfect, but should fix
	a lot of problems with changing the size of the menu's menu
	items after adding it to the option menu.

	* gtk/gtktexttag.c: Include gtkmain.h for gtk_get_default_language().

	* gtk/gtkwidget.[ch]: Add a ::direction_changed that triggers when
	the text direction for a widget changes.

	* gtk/gtk{entry.c,label.[ch],textview.[ch]} gtk/testgtk.c: Use
	::direction_changed to get rid of various hacks.
2000-07-02 18:41:29 +00:00