Commit Graph

1688 Commits

Author SHA1 Message Date
Owen Taylor
d541b30482 Patch from Sebastian Wilhelmi <wilhelmi@ira.uka.de> to use
Wed Jan 27 20:08:54 1999  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtkfilesel.c (open_user_dir): Patch from
	Sebastian Wilhelmi  <wilhelmi@ira.uka.de> to
	use g_get_home_dir() instead of calling getpwuid()
	ourselves.
1999-01-28 01:04:38 +00:00
Owen Taylor
77e99440df Change signatures for gdk_drag_begin() and gdk_drag_motion() so that the
Wed Jan 27 18:57:57 1999  Owen Taylor  <otaylor@redhat.com>

	* gdk/gdk.h gdk/gdkdnd.c: Change signatures for
	gdk_drag_begin() and gdk_drag_motion() so that the set
	of possible actions is passed on each motion, not just at
	the beginning of the drag. We do this so that
	we can restrict the set of possible drag events
	when the user presses a modifier key during a
	drag.

	* gdk/gdkdnd.c: Send a motif Operation-changed
	message when the set of possible actions change,
	as well as when the suggested action change.

	* gdk/gdkdnd.c: Change the XdndActionList whenever
	the set of actions change.

	* gdk/gdkdnd.c: Add a filter to catch changes to
	the XdndActionList property for the source widget.

	* gtk/gtkdnd.c: Change the set of possible actions
	when the user presses Control, Shift, or Control-Shift,
	to only include the corresponding action.

	* gtk/gtkdnd.c (gtk_drag_button_release_cb):
	Disconnect button signals before we possibly
	free info structure.
1999-01-28 01:03:15 +00:00
Owen Taylor
4998934dcb Removed some g_print()'s
Wed Jan 27 20:06:06 1999  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtklayout.c (gtk_layout_adjustment_changed):
	Removed some g_print()'s
1999-01-28 01:02:09 +00:00
Owen Taylor
9e5e63f0a1 Hack scrollwheel support into the eventloop, by treating button 4-5
Wed Jan 27 18:40:50 1999  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtkmain.c (gtk_main_do_event): Hack scrollwheel
	support into the eventloop, by treating button 4-5
	presses on scrolled windows and scrollbars specially.
	Put it here to keep the ugliness small and confined.
	(We need to intercept the normal propagation in any case
	to have this work reliably right now, since some
	subwidgets will trap the button presses)

	* gtk/gtkviewport.c (gtk_viewport_realize): Select for
	BUTTON_PRESS to	support the above hack.
1999-01-28 00:57:18 +00:00
Owen Taylor
7934cf9aea Remove TimJ's checks for already being mapped or hidden. See the ICCCM's
Tue Jan 26 14:02:50 1999  Owen Taylor  <otaylor@redhat.com>

	* gdk/gdkwindow.c (gdk_window_show/hide): Remove TimJ's
	checks for already being mapped or hidden. See
	the ICCCM's section on state changes for why this
	is a bad idea.
1999-01-27 23:49:34 +00:00
Owen Taylor
607949ed5e Separate out GLIB_LIBS and GLIB_DEPLIBS. This may fix the --with-glib
Wed Jan 27 17:05:40 1999  Owen Taylor  <otaylor@redhat.com>

	* Separate out GLIB_LIBS and GLIB_DEPLIBS. This
	may fix the --with-glib option. GLIB_LIBS are
	the libs to link example programs against, while
	GLIB_DEPLIBS are dependency libraries.
1999-01-27 22:08:46 +00:00
Stuart Parmenter
342e557c58 add GTK_HAVE_FEATURES_1_1_14 1999-01-27 20:56:34 +00:00
Owen Taylor
1472462639 Use floor() instead of truncating to integer values so we get translation
Wed Jan 20 11:19:00 1999  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtklabel.c: Use floor() instead of truncating
	to integer values so we get translation invariance.

	* gtk/gtklayout.c (gtk_layout_size_allocate): Set upper
	and lower values for adjustments in size_allocate().

	* gdk/gdkwindow.c gdk/gdk.h gdk/gdkprivate.h: New
	function gdk_window_set_static_gravities() to set
	up a window for guffaw scrolling.

	* gdk/gdkwindow.c (gdk_window_internal_destroy): Set flags
	indicating destroyed state before cleanup.

	* gtk/gtkprivate.h gtk/gtkwidget.c: Add a new
	private flag IS_OFFSCREEN. If set, this indicates
	to GTK+ that the widget is not to be considered
	viewable regardless of its map state. Queued draws
	on offscreen widgets are suppressed.

	Added new function static gtk_widget_is_offscreen() to
	check this flag on a widget and its ancestors.

	* gtk/gtklayout.[ch]: Major revisions.

	- Use gdk_window_set_static_gravities to set static gravity
	on all child windows, and thus avoid having to create a window
	for NO_WINDOW children.

	- Adjust allocations of children as we scroll them
	so queued draws work correctly.

	- Don't allocate our children directly in a put()
	or move(); just queue a resize() like every other
	widget.

	* gtk/testgtk.c: Make the arrows on the scrollbars
	work, create a larger and more demanding test.
1999-01-27 18:21:20 +00:00
Tim Janik
90c7ea0b91 assert ref_count>0.
Wed Jan 27 09:19:07 1999  Tim Janik  <timj@gtk.org>

        * gdk/gdkcolor.c (gdk_colormap_unref): assert ref_count>0.
1999-01-27 08:53:36 +00:00
Owen Taylor
8e979f59b4 New functions to set the colormap or visual of an existing widget. These
Mon Jan 25 20:05:22 1999  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtkwidget.c (gtk_widget_set_{visual,colormap}):
	New functions to set the colormap or visual
	of an existing widget. These functions should not
	be called on a widget that has previosly been
	realized.
1999-01-26 01:18:13 +00:00
Owen Taylor
84c1a71045 Changed log 1999-01-26 01:17:30 +00:00
Owen Taylor
df403d5908 New functions to set the colormap or visual of an existing widget. These
Mon Jan 25 20:05:22 1999  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtkwidget.c (gtk_widget_set_{visual,colormap}):
	New functions to set the colormap or visual
	of an existing widget. These functions should not
	be called on a widget that has previosly been
	realized.

	* gtk/gtkcolorsel.c (gtk_color_selection_dialog_init):
	Set the visual and colormap on the toplevel dialog,
	then push them for the child widgets. As opposed
	to push/pop in _new(), this way, things will work
	properly with gtk_widget_new().
1999-01-26 01:15:47 +00:00
Owen Taylor
65dd58ffa3 Queue a redraw on the tab area when a tab changes size. (Includes
Mon Jan 25 19:41:56 1999  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtknotebook.c (gtk_notebook_page_allocate): Queue
	a redraw on the tab area when a tab changes size.
	(Includes improvements from Lars Hamann)
1999-01-26 00:37:58 +00:00
Owen Taylor
d355451c51 Back out the last solution to updating problem. And try a different one
Mon Jan 25 19:00:13 1999  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtkcolorsel.c (gtk_color_selection_value_events):
	 Back out the last solution to updating problem. And
	 try a different one that is less dependent on
	 the state of the widget. Just redraw the value_marker
	 when it gets mapped. Somebody needs to analyze
	 this widget more carefully and figure out
1999-01-26 00:28:13 +00:00
Owen Taylor
08f1e8098f Removed some GTK_WIDGET_DRAWABLE() tests - we need to update the value
Mon Jan 25 17:48:03 1999  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtkcolorsel.c: Removed some GTK_WIDGET_DRAWABLE()
	tests - we need to update the value bar's contents
	even when the widget is unmapped.
1999-01-25 22:43:50 +00:00
Owen Taylor
7d5e1b0ccf Don't define ENABLE_NLS unless we have a working NLS. (This should keep
Mon Jan 25 15:47:46 1999  Owen Taylor  <otaylor@redhat.com>

	* acinclude.m4 (ac_result): Don't define ENABLE_NLS
	 unless we have a working NLS. (This should keep
	 libintl.h from being included when it doesn't
	 exist).
1999-01-25 21:11:13 +00:00
George Lebl
4b8095d525 set RECEIVES_DEFAULT on init, and a button press on the widget doesn't
Mon Jan 25 11:05:10 1999  George Lebl  <jirka@5z.com>

        * gtk/gtkbutton.c: set RECEIVES_DEFAULT on init, and a
          button press on the widget doesn't grab default anymore

        * gtk/gtkcheckbutton.c,gtk/gtkoptionmenu.c,gtk/gtkradiobutton.c:
          unset RECEIVES_DEFAULT on init

        * gtk/gtkwidget.[ch]: add a RECEIVES_DEFAULT flag to widget
          flags

        * gtk/gtkwindow.c,gtk/gtkplug.c: on pressing <enter>, activate
          the focused widget if it is a RECEIVES_DEFAULT widget,
          no matter what the current default_widget is

        * gtk/gtkwindow.c: on focus change, migrate the HAS_DEFAULT
          flag to CAN_DEFAULT widgets if they RECEIVE_DEFAULT as well
          or migrate it back to the default_widget if the focus widget
          doesn't "RECEIVE_DEFAULT"
1999-01-25 19:05:58 +00:00
Owen Taylor
8ac2b1dda6 Byteswap
Sun Jan 24 18:09:24 1999  Owen Taylor  <otaylor@redhat.com>

	* gdk/gdkdnd.c (motif_read_initiator_info): Byteswap
1999-01-24 23:07:33 +00:00
Owen Taylor
a1cc053be2 Fix reversed assertion. (Pointed out by Austin Donnelly
Sun Jan 24 12:17:39 1999  Owen Taylor  <otaylor@redhat.com>

	* gdk/gdkcolor.c (gdk_colormap_real_destroy): Fix
	 reversed assertion.
	 (Pointed out by Austin Donnelly <austin@greenend.org.uk>)

	* gtk/gtkruler.c (gtk_ruler_expose): Remove unecessary
	 and harmful call to gtk_paint_box(). We are going
	 to paint onto the backing store later anyways.
1999-01-24 17:19:21 +00:00
Sergey I. Panov
42ffb3727e tiny style corrections 1999-01-24 16:12:22 +00:00
Owen Taylor
79fbe48242 X expects longs, not uint32 for XChangeProperty, when format == 32.
Sat Jan 23 11:15:39 1999  Owen Taylor  <otaylor@gtk.org>

	* gdk/gdkdnd.c (gdk_window_register_dnd): X expects
	 longs, not uint32 for XChangeProperty, when
	 format == 32.

	* gdk/gdkdnd.c (motif_read_initiator_info): Byte-swap
	 the MotifInitiatorInfo structure if necessary.

 	* gdk/gdkdnd.c: When extracting and constructing
         Motif DND messages, don't use data.s[], data.l[]
	 since on 64bit architectures, these won't necessarily
	 be in the same place with data.b[].

 	* gtk/testdnd.c (target_drag_drop): Return TRUE for
	 drag_drop within the drop zone.

	* gtk/gtkdnd.c (gtk_drag_dest_handle_event): Only send
	 a XmTRANSFER_FAILURE if no drop site is found, not
	 on every drop!
1999-01-23 20:32:20 +00:00
Owen Taylor
6a690c6d3f Add flags field to GtkTargetEntry table.
Fri Jan 22 19:22:39 1999  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtkeditable.c: Add flags field to
	 GtkTargetEntry table.

	* gdk/gdkwindow.c (gdk_window_is_viewable): Treat foreign
	 windows as always viewable, since we can't track their
	 map-state reliably without speed problems. (Fixes
	 problem where updating didn't occur properly within
	 GtkPlug)
1999-01-23 20:31:42 +00:00
Jeff Garzik
0e9b9e32db Don't search selection list twice. (real_select_row): Remove extra ';',
Sat Jan 23 13:41:00 1999  Jeff Garzik  <jgarzik@pobox.com>

        * gtk/gtkctree.c
        (tree_delete): Don't search selection list twice.
        (real_select_row): Remove extra ';', add default for clarity.
1999-01-23 18:44:36 +00:00
Lars Hamann
f37d395c4f removed extra gtk_spin_button_update calls again. unblock dnd signal
Sat Jan 23 01:44:43 1999  Lars Hamann  <lars@gtk.org>

	* gtk/gtkspinbutton.c (gtk_spin_button_get_value_as_int)
	(gtk_spin_button_get_value_as_float): removed extra
 	gtk_spin_button_update calls again.
	* gtk/gtkclist.c (gtk_clist_unmap): unblock dnd signal handler if
	neccessary
	* gtk/gtknotebook.c (gtk_notebook_button_press): grab_focus before
	switch_page
	(gtk_notebook_set_shape): don't use cur_page if it's NULL.
1999-01-23 01:04:33 +00:00
Jeff Garzik
ad987142c1 Fix recent change to match existing coding style.
Fri Jan 22 12:20:54 1999  Jeff Garzik  <jgarzik@pobox.com>

        * gtk/gtktooltips.c:
        Fix recent change to match existing coding style.
1999-01-22 17:23:55 +00:00
Tim Janik
060c32e4e0 take value_spacing into account for GTK_POS_LEFT.
Fri Jan 22 07:33:44 1999  Tim Janik  <timj@gtk.org>

        * gtk/gtkvscale.c (gtk_vscale_pos_trough): take value_spacing into
        account for GTK_POS_LEFT.

        * gtk/gtkradiobutton.c (gtk_radio_button_set_group): use
        gtk_toggle_button_set_active () to set the new state.
        (gtk_radio_button_new): only _set_group if group != NULL.
        (gtk_radio_button_clicked): reference the widget.
        (gtk_radio_button_init): make radio buttons active upon
        startup.
1999-01-22 08:12:00 +00:00
Sergey I. Panov
cb4bf0657c A few updates. 1999-01-22 03:59:16 +00:00
Jeff Garzik
ba58aa201d Check args for NULL. (gtk_selection_default_handler): Replace manual list
Thu Jan 21 17:13:12 1999  Jeff Garzik  <jgarzik@pobox.com>

        * gtk/gtkselection.c:
        (gtk_selection_property_notify): Check args for NULL.
        (gtk_selection_default_handler):
        Replace manual list count with call to g_list_length.
        Remove signedness of temp var 'count' to agree with usage.
        Slight spacing adjustment for readability.

        * gtk/gtkbox.c, gtk/gtklayout.c, gtk/gtkselection.c:
        Init a few ptrs to NULL, to quiet warnings.
1999-01-21 22:29:58 +00:00
Manish Singh
cb2eb293e6 Shut up cvs
-Yosh
1999-01-21 21:52:53 +00:00
Owen Taylor
a0fa647a64 [ Tried to commit wrong file last time ]
Thu Jan 21 16:03:02 1999  Owen Taylor  <otaylor@redhat.com>


	* gtk/gtktreeitem.c: Add a paint routine, fix up bugs
	in drawing where if the expose area was contained
	completely in the right side of the tree the background
	wasn't redraw, etc.
1999-01-21 21:09:03 +00:00
Owen Taylor
6878910ad4 Code cleanup.
Thu Jan 21 16:03:02 1999  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtkbutton.c (gtk_button_expose): Code cleanup.

	* gtk/gtktree.c: Add a paint routine, fix up bugs
	in drawing where if the expose area was contained
	completely in the right side of the tree the background
	wasn't redraw, etc.

	* gtk/gtkwidget.c (gtk_widget_clip_rect): Fix a bug
	in clipping draw regions while propagating them
	upwards.
1999-01-21 21:06:13 +00:00
Owen Taylor
d1d9c5bf04 Pushing and popping the visual/cmap in the init() function does no good,
Thu Jan 21 12:20:51 1999  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtkcolorsel.c (gtk_color_selection_dialog_new):
	Pushing	and popping the visual/cmap in the init()
	function does no good, because the window itself needs
	to be create with that visual/cmap.

	So do it in the new() function instead.

	This will require people doing gtk_widget_new() to do
	the push/pop themselves, but I don't see any way around
	it other than digging in and tweaking the window
	widget's colormap and visual ourselves, which
	is highly non-kosher, but would be safe...
1999-01-21 17:27:23 +00:00
Tristan Tarrant
a46ac625c9 Updated Italian texts 1999-01-21 15:16:06 +00:00
Timur Bakeyev
7cef937760 It was reported by Owen Taylor <otaylor@redhat.com>, that LC_ALL produce
Thu Jan 21 16:04:35 1999  Timur Bakeyev <mc@bat.ru>

	* gtk/gtkrc.c (gtk_rc_init): It was reported by Owen Taylor
	<otaylor@redhat.com>, that LC_ALL produce unparsable garbage
	on some glibc'ed systems and HP/UX. So, falling to LC_CTYPE.
1999-01-21 13:26:35 +00:00
Owen Taylor
fea53a95f8 Set and read the XdndActionList property defined in the Xdnd spec. We do
Thu Jan 21 02:11:44 1999  Owen Taylor  <otaylor@redhat.com>

	* Set and read the XdndActionList property defined
	in the Xdnd spec. We do this always, not just for
	XdndActionAsk like the spec says, but if we don't
	find it, we fall back to actions = suggested_action,
	which is compatible with the language of the spec.
1999-01-21 07:08:25 +00:00
Jeff Garzik
8dc58cb2d3 Move not-null assertion before pointer de-ref.
* gdk/gdkdnd.c (gdk_drag_context_unref):
        Move not-null assertion before pointer de-ref.

        * gdk/gdkevents.c (gdk_event_queue_find_first):
        Fix infinite loop bug.  Someone should look at this further to
        make sure the events_pending tests are correct.
1999-01-21 06:24:09 +00:00
Owen Taylor
e7b04a53ac Default handling for drops should be keyed on GTK_DRAG_DEFAULT_DROP not
Thu Jan 21 00:44:47 1999  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtkdnd.c (gtk_drag_dest_drop): Default handling
	for drops should be keyed on GTK_DRAG_DEFAULT_DROP
	not GTK_DRAG_DEFAULT_MOTION.
1999-01-21 05:59:04 +00:00
Jeff Garzik
a646da3f1e Don't search entire row list twice for element being removed.
* gtk/gtkclist.c (real_remove_row):
        Don't search entire row list twice for element being removed.

        * gtk/gtkmenushell.c (gtk_menu_shell_insert):
        Replaced hand-coded implementation of g_list_insert with
        call to g_list_insert.

        * gtk/gtktooltips.c
          (gtk_tooltips_destroy_data, gtk_tooltips_layout_text):
        tooltipsdata->row test not-null test now properly encompasses
        both g_list_* calls.
1999-01-21 03:46:32 +00:00
Lars Hamann
1a58d9b3cf few cleanups. (gtk_notebook_key_press): call select page function for
Thu Jan 21 02:47:36 1999  Lars Hamann  <lars@gtk.org>

	* gtk/gtknotebook.c (gtk_notebook_focus): few cleanups.
	(gtk_notebook_key_press): call select page function for
	GDK_DOWN key in case of tab_pos == TOP. Changed other
	positions accordingly.
1999-01-21 02:13:13 +00:00
Owen Taylor
21993dcb10 Start off with the cursor for "no drop" since if we'll get a status if we
Wed Jan 20 19:57:14 1999  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtkdnd.c (gtk_drag_begin): Start off with the
	cursor for "no drop" since if we'll get a status
	if we are over a drag window, but none if we aren't
	over one.
1999-01-21 01:03:27 +00:00
Jeff Garzik
6e3e247b9a . Free 'nprefix', closing a memory leak. Spaced out the code a bit to make
.
        * gtk/gtkcombo.c (gtk_combo_entry_key_press):
        Free 'nprefix', closing a memory leak.
        Spaced out the code a bit to make it more readable.

        * gtk/gtkhbox.[ch] (gtk_hbox_new),
          gtk/gtkvbox.[ch] (gtk_vbox_new):
        Change 'homogenous' arg from gint to gboolean.

        * gtk/gtktogglebutton.[ch]:
        New function gtk_toggle_button_get_active().
1999-01-21 00:37:48 +00:00
Federico Mena Quintero
df21a7064f Allow button 2 to act as GDK_ACTION_ASK. Also, allow MOD1 to specify
1999-01-20  Federico Mena Quintero  <federico@nuclecu.unam.mx>

	* gtk/gtkdnd.c (gtk_drag_get_event_action): Allow button 2 to act
	as GDK_ACTION_ASK.  Also, allow MOD1 to specify GDK_ACTION_ASK
	only if that action is enabled in the actions argument.
1999-01-20 23:53:29 +00:00
Raja R Harinath
255005f0e9 New variable. Define to $prefix/$DATADIRNAME/locale. This will point to
* configure.in (gtklocaledir): New variable.  Define to
	$prefix/$DATADIRNAME/locale.  This will point to the directory
	where po/Makefile actually installs the message translation
	tables.
	* gtk/Makefile.am (INCLUDES): Define GTK_LOCALEDIR to
	$(gtklocaledir) rather than $prefix/share/locale.
1999-01-20 23:43:08 +00:00
Timur I. Bakeyev
5ce6bea660 Under some systems (notably, BSDI), there is no LC_MESSAGES category in
Under some systems (notably, BSDI), there is no LC_MESSAGES category in
locale.h. In this case it is good guess to relay on the value of LC_ALL
(in fact, LC_CTYPE will be more precise).
1999-01-20 18:35:53 +00:00
Owen Taylor
6205bbbf65 Instead of drawing a background pixmap in with gdk_draw_pixmap(), set it
Wed Jan 20 13:06:51 1999  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtktext.[ch] (clear_[focus_]area): Instead of drawing
	a background pixmap in with gdk_draw_pixmap(), set
	it as a tile pixmap for a GC. This should speed
	up things considerably and also will hide a bug
	where text->first_onscreen_ver_pixel is being
	corrupted, causing the bg pixmap drawing code to generate
	graphics exposes.
1999-01-20 18:06:31 +00:00
Lars Hamann
0543c806f9 only call grab_add if pointer_grab succeeds. (gtk_list_unmap): remove
Tue Jan 19 22:15:10 1999  Lars Hamann  <lars@gtk.org>

	* gtk/gtklist.c
	(gtk_list_button_press):  only call grab_add if pointer_grab succeeds.
	(gtk_list_unmap): remove pointer/widget grabs if needed.
	(gtk_list_signal_focus_lost): removed.
	(gtk_list_focus) (gtk_list_set_focus_child): set last_focus_child.
	(gtk_list_remove_items_internal) (gtk_list_clear_items): unset
 	undo_focus_child if necessary. In case of SELECTION_BROWSE/EXTENDED
 	select a new item if selection is empty.
1999-01-20 01:09:16 +00:00
Tim Janik
17127d2c6d add compatibility define for gtk_ctree_set_reorderable.
Tue Jan 19 00:21:15 1999  Tim Janik  <timj@gtk.org>

        * gtk/gtkcompat.h: add compatibility define for
        gtk_ctree_set_reorderable.
1999-01-18 23:51:43 +00:00
Lars Hamann
abb7ed1cea add a sanity check [from Todd Dukes <todddukes@netscape.net>]
Tue Jan 19 00:02:10 1999  Lars Hamann  <lars@gtk.org>

	* gtk/gtkctree.c (gtk_ctree_node_set_row_data_full):
	add a sanity check [from Todd Dukes <todddukes@netscape.net>]
1999-01-18 23:09:50 +00:00
Lars Hamann
28df7201ca only call grab_add if pointer_grab succeeds. (gtk_clist_unmap): remove
Mon Jan 18 22:54:11 1999  Lars Hamann  <lars@gtk.org>

	* gtk/gtkclist.c (gtk_clist_button_press): only call grab_add
	if pointer_grab succeeds.
	(gtk_clist_unmap): remove pointer/widget grabs if needed.
1999-01-18 23:02:08 +00:00
Owen Taylor
03f25c7ade Initialize label->label_wc. (We allocate labels from a memchunk)
Mon Jan 18 15:46:14 1999  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtklabel.c (gtk_label_init): Initialize
	label->label_wc. (We allocate labels from
	a memchunk)
1999-01-18 20:46:51 +00:00