1. 22 Jan, 2004 5 commits
    • Federico Mena Quintero's avatar
      Added documentation for GtkWidget::popup_menu. · 2361bd9f
      Federico Mena Quintero authored
      2004-01-22  Federico Mena Quintero  <federico@ximian.com>
      
      	* gtk/gtkwidget.c (gtk_widget_class_init): Added documentation for
      	GtkWidget::popup_menu.
      2361bd9f
    • Matthias Clasen's avatar
      Remove the attach info after calling gtk_menu_do_remove(), since that · d49500e4
      Matthias Clasen authored
      Thu Jan 22 21:45:24 2004  Matthias Clasen  <maclas@gmx.de>
      
      	* gtk/gtkmenu.c (gtk_menu_remove): Remove the attach
      	info after calling gtk_menu_do_remove(), since that function
      	uses the attach info. Doh!
      
      	* gtk/gtkmenu.c (gtk_menu_do_remove): Don't check priv->columns
      	for being 1 directly after setting it to 0.
      d49500e4
    • Soeren Sandmann's avatar
      Updates · 6a3e3b20
      Soeren Sandmann authored
      Thu Jan 22 21:38:52 2004  Soeren Sandmann  <sandmann@daimi.au.dk>
      
      	* NEWS: Updates
      6a3e3b20
    • Alexander Larsson's avatar
      Fix typo · 465d6e35
      Alexander Larsson authored
      2004-01-22  Alexander Larsson  <alexl@redhat.com>
      
      	* gdk/x11/gdkwindow-x11.c (WINDOW_IS_TOPLEVEL):
      	Fix typo
      465d6e35
    • Federico Mena Quintero's avatar
      Free the path fields. · 56913b4b
      Federico Mena Quintero authored
      2004-01-21  Federico Mena Quintero  <federico@ximian.com>
      
      	* gtk/gtkfilechooserdefault.c (gtk_file_chooser_default_finalize):
      	Free the path fields.
      
      	* gtk/gtkfilesystemmodel.c (gtk_file_system_model_finalize): Free
      	the root_path, reported by <scott@asofyet.org>
      	(gtk_file_system_model_finalize): Unref the file system.
      
      	* gtk/gtkfilefilter.c (filter_rule_free): default:
      	g_assert_not_reached().
      	(gtk_file_filter_finalize): Free the filter->name, reported by
      	<scott@asofyet.org>
      	(gtk_file_filter_finalize): Free the rules list.
      56913b4b
  2. 21 Jan, 2004 2 commits
    • Jonathan Blandford's avatar
      redraw the color button when an alpha is set. · 92362986
      Jonathan Blandford authored
      Wed Jan 21 18:10:40 2004  Jonathan Blandford  <jrb@gnome.org>
      
              * gtk/gtkcolorbutton.c (gtk_color_button_set_color):redraw the
              color button when an alpha is set.
              (gtk_color_button_set_alpha): redraw the color button when an
              alpha is set.
      92362986
    • Matthias Clasen's avatar
      Fix #131869: · a1843107
      Matthias Clasen authored
      Wed Jan 21 23:27:14 2004  Matthias Clasen  <maclas@gmx.de>
      
      	Fix #131869:
      
      	* gtk/gtkaction.c (_gtk_action_emit_activate): Hold
      	a reference to the group while emitting the signals.
      
      	* gtk/gtkactiongroup.c (gtk_action_group_init): Use a
      	destroy notify which does not only unref, but also resets
      	the action_group property of the action.
      a1843107
  3. 20 Jan, 2004 6 commits
    • Federico Mena Quintero's avatar
      Added details about GtkFileChooser changes. · 246ef6d2
      Federico Mena Quintero authored
      2004-01-20  Federico Mena Quintero  <federico@ximian.com>
      
      	* NEWS: Added details about GtkFileChooser changes.
      246ef6d2
    • Federico Mena Quintero's avatar
      Fix #99425, add accessor functions for GtkPaned's children. · 3ccf6187
      Federico Mena Quintero authored
      2004-01-20  Federico Mena Quintero  <federico@ximian.com>
      
      	Fix #99425, add accessor functions for GtkPaned's children.
      
      	* gtk/gtkpaned.c (gtk_paned_get_child1): New function.
      	(gtk_paned_get_child2): New function.
      3ccf6187
    • Matthias Clasen's avatar
      Start of 2.3.2 section. · 7c6dc86b
      Matthias Clasen authored
      Tue Jan 20 23:49:52 2004  Matthias Clasen  <maclas@gmx.de>
      
      	* NEWS: Start of 2.3.2 section.
      7c6dc86b
    • Matthias Clasen's avatar
      Fixes for #130370, based on a patch by Michael Meeks: · d7bfabeb
      Matthias Clasen authored
      Tue Jan 20 22:11:31 2004  Matthias Clasen  <maclas@gmx.de>
      
      	Fixes for #130370, based on a patch by Michael Meeks:
      
      	* gtk/gtkmenu.c (gtk_menu_do_remove): New auxiliary function to
      	adjust cell positions and recalculate row and column counts after
      	removing an item.
      
      	* gtk/gtkmenu.c (gtk_menu_remove): Call gtk_menu_do_remove.
      
      	* gtk/gtkmenu.c (gtk_menu_do_insert): Don't leave empty rows when
      	appending items.
      
      	* gtk/gtkmenu.c (gtk_menu_attach): Don't call gtk_menu_shell_append,
      	to avoid an unintended recursion.
      d7bfabeb
    • Jody Goldberg's avatar
      add stock indent, unindent I would have prefered outdent, but · 245308c3
      Jody Goldberg authored
      
      2004-01-05  Jody Goldberg <jody@gnome.org>
      
      	* gtk/gtkiconfactory.c (get_default_icons) : add stock indent, unindent
      	  I would have prefered outdent, but compatibility seems more
      	  important.
      	* gtk/gtkstock.c (builtin_items) : ditto.
      	* gtk/gtkstock.h : ditto.
      	* gtk/stock-icons/Makefile.am : ditto.
      	* gtk/stock-icons/stock_text_indent_16.png :
      	* gtk/stock-icons/stock_text_indent_24.png :
      	* gtk/stock-icons/stock_text_unindent_16.png :
      	* gtk/stock-icons/stock_text_unindent_24.png : from gnome-icon-theme
      
      2003-12-18  Jody Goldberg <jody@gnome.org>
      
      	* gtk/gtkicontheme.c (gtk_icon_theme_lookup_icon)) : Add a sanity test
      	  to ensure that the base hicolor theme is installed.  Silently
      	  failing to produce icons that apps assume exist in the theme seems
      	  like a bad idea.
      245308c3
    • Federico Mena Quintero's avatar
      Fix #131418. · 45e6ab2d
      Federico Mena Quintero authored
      2004-01-19  Federico Mena Quintero  <federico@ximian.com>
      
      	Fix #131418.
      
      	* gtk/gtkfilechooserdefault.c (set_select_multiple): New helper
      	function.
      	(gtk_file_chooser_default_set_property): Use
      	set_select_multiple().  Also, re-set this mode to single if the
      	file chooser is set to Save mode.
      	(entry_activate): Handle the case where the entry is completely
      	empty *and* its current folder does exist.  Also, there is need to
      	test for select_multiple here now that we ensure that it won't
      	happen during Save mode.
      45e6ab2d
  4. 18 Jan, 2004 3 commits
    • Soeren Sandmann's avatar
      Add _gtk_toolbar_paint_space_line(), _gtk_toolbar_get_default_space_size · 8578431f
      Soeren Sandmann authored
      Sun Jan 18 15:25:39 2004  Soeren Sandmann  <sandmann@daimi.au.dk>
      
      	* gtk/gtktoolbar.[ch]: Add _gtk_toolbar_paint_space_line(),
      	_gtk_toolbar_get_default_space_size ();
      
      	* gtk/gtkseparatortoolitem.c (gtk_separator_tool_item_expose,
      	get_space_size): Use them here.
      8578431f
    • Soeren Sandmann's avatar
      Set a small size request and make the window resizable, to test · accc299d
      Soeren Sandmann authored
      Sun Jan 18 13:16:34 2004  Soeren Sandmann  <sandmann@daimi.au.dk>
      
      	* tests/testgtk.c (create_toolbar): Set a small size request and
      	make the window resizable, to test mapping/unmapping of buttons.
      
      	* gtk/gtktoolbar.c (gtk_toolbar_remove_content,
      	gtk_toolbar_insert_tool_item): remove these functions.
      
      	* gtk/gtktoolbar.c (gtk_toolbar_show_all,
      	toolbar_content_show_all, gtk_toolbar_hide_all,
      	toolbar_content_hide_all): New functions.
      
      	Ignore show_all/hide_all for buttons created in compatibility mode.
      
      	* gtk/gtktoolbar.c (internal_insert_element, gtk_toolbar_show_all,
      	gtk_toolbar_hide_all): Make sure buttons are ignored by
      	gtk_toolbar_show_all() and gtk_toolbar_hide_all().
      
      	* gtk/gtktoolbar.c: s/regular_widget/compatibility/g
      
      	* gtk/gtktoolbar.c (struct _ToolbarContent): Allocate
      	GtkToolbarChild inline. Get rid of GtkToolbarChildSpace.
      
      	* gtk/gtktoolbar.c (toolbar_content_expose): Fix bug where widget
      	could become NULL.
      
      	* gtk/gtktoolbar.c (gtk_toolbar_add): Append new tool items
      	instead of prepending them.
      
      	* gtk/gtktoolbar.c (gtk_toolbar_size_allocate): Use the same
      	'elapsed' for all items.
      
      	* gtk/gtktoolbar.c (struct _GtkToolbarPrivate): Turn booleans
      	into bitfields.
      
      	* gtk/gtktoolbar.c: Many formatting fixes
      accc299d
    • Matthias Clasen's avatar
      Add the necessary magic to create po-properties/Makefile. · 75f9a9ce
      Matthias Clasen authored
      Sun Jan 18 01:51:12 2004  Matthias Clasen  <maclas@gmx.de>
      
      	* configure.in: Add the necessary magic to create
      	po-properties/Makefile.
      
      Sun Jan 18 01:52:04 2004  Matthias Clasen  <maclas@gmx.de>
      
      	* Makefile.in.in (subdir): Define appropriately.
      75f9a9ce
  5. 17 Jan, 2004 6 commits
    • Matthias Clasen's avatar
    • Soeren Sandmann's avatar
      Fix rest of #128678: Implement all the toolbar_content() methods for the · a28128d8
      Soeren Sandmann authored
      Sat Jan 17 22:00:07 2004  Soeren Sandmann  <sandmann@daimi.au.dk>
      
      	* gtk/gtktoolbar.c:
      
      	Fix rest of #128678: Implement all the toolbar_content()
      	methods for the old API case.
      a28128d8
    • Soeren Sandmann's avatar
      Phase 1 of fixing #128678: Only access ToolbarContent through a set of new · 540fa75f
      Soeren Sandmann authored
      Sat Jan 17 16:53:08 2004  Soeren Sandmann  <sandmann@daimi.au.dk>
      
      	* gtk/gtktoolbar.c:
      
      	Phase 1 of fixing #128678: Only access ToolbarContent through a
      	set of new functions:
      
      	toolbar_content_expose, toolbar_content_visible,
      	toolbar_content_size_request, toolbar_content_is_homogeneous,
      	toolbar_content_get_child_requisition,
      	toolbar_content_is_placeholder, toolbar_content_disappearing,
      	toolbar_content_get_state, toolbar_content_child_visible,
      	toolbar_content_get_goal_allocation,
      	toolbar_content_get_allocation,
      	toolbar_content_set_start_allocation,
      	toolbar_content_get_start_allocation, toolbar_content_get_expand,
      	toolbar_content_set_goal_allocation,
      	toolbar_content_set_child_visible, toolbar_content_size_allocate,
      	toolbar_content_set_state, toolbar_content_get_widget,
      	toolbar_content_set_disappearing,
      	toolbar_content_set_size_request,
      	toolbar_content_toolbar_reconfigured,
      	toolbar_content_retrieve_menu_item,
      	toolbar_content_new_tool_item, toolbar_content_destroy,
      	toolbar_content_is_separator
      
      	Also fix #127092.
      540fa75f
    • Soeren Sandmann's avatar
      don't leak the menu item ID. · 1daf55ae
      Soeren Sandmann authored
      Sat Jan 17 12:55:13 2004  Soeren Sandmann  <sandmann@daimi.au.dk>
      
      	* gtk/gtktoolitem.c (gtk_tool_item_finalize): don't leak the menu
      	item ID.
      1daf55ae
    • Soeren Sandmann's avatar
      Don't leak the overflow menu. · 43b44fff
      Soeren Sandmann authored
      Sat Jan 17 12:37:46 2004  Soeren Sandmann  <sandmann@daimi.au.dk>
      
      	* gtk/gtktoolbar.c (gtk_toolbar_finalize): Don't leak the
      	overflow menu.
      
      	* gtk/gtktoolbar.h (struct _GtkToolbar): Make some fields public.
      	[#127726]
      43b44fff
    • Federico Mena Quintero's avatar
      Added a has_editable field. (_gtk_file_system_model_add_editable): New · 02cb4554
      Federico Mena Quintero authored
      2004-01-16  Federico Mena Quintero  <federico@ximian.com>
      
      	* gtk/gtkfilesystemmodel.c (struct _GtkFileSystemModel): Added a
      	has_editable field.
      	(_gtk_file_system_model_add_editable): New function.
      	(_gtk_file_system_model_remove_editable): New function.
      	(gtk_file_system_model_get_value): Return appropriate values for
      	the temporary editable row.
      	(_gtk_file_system_model_get_info): Handle the editable row.
      	(_gtk_file_system_model_get_path): Likewise.
      
      	* gtk/gtkfilechooserdefault.c (shortcuts_append_bookmarks):
      	Removed an unused variable.
      	(toolbar_button_new): Optionally show the button.
      	(up_button_clicked_cb): Renamed from up_button_cb(), fixed prototype.
      	(toolbar_create): Add a "New Folder" button for Save mode.
      	(error_building_filename_dialog): New helper function.
      	(gtk_file_chooser_default_get_paths): Use error_building_filename_dialog().
      	(create_file_list): Connect to the "edited" signal of the text
      	cell renderer.  Store the name column and text renderer in the
      	impl structure.
      	(renderer_edited_cb): New callback.
      	(gtk_file_chooser_default_set_property): Show/hide the "New
      	folder" button when the save action changes.
      	(COMPARE_DIRECTORIES): Allow the info values to be NULL.
      	(COMPARE_DIRECTORIES): Duh, use the list_model, not the
      	tree_model.
      	(get_list_file_info): Likewise!
      	(list_icon_data_func): Handle the path being NULL.
      	(new_folder_button_clicked): New callback.
      	(list_name_data_func): If we are on the editable row, set the text
      	to "Type name of new folder".
      	(list_selection_changed): Handle the editable row.
      	(list_mtime_data_func): Likewise.
      
      	* gtk/gtkfilesystemunix.c (gtk_file_system_unix_make_path): Return
      	NULL, not FALSE.
      	(gtk_file_system_unix_create_folder): Test the result of mkdir() correctly.
      02cb4554
  6. 16 Jan, 2004 4 commits
    • Matthias Clasen's avatar
      The first part of the fix for #114351 (see also gdk-pixbuf/ChangeLog and · 07d4d314
      Matthias Clasen authored
      Fri Jan 16 23:59:01 2004  Matthias Clasen  <maclas@gmx.de>
      
      	The first part of the fix for #114351 (see also
      	gdk-pixbuf/ChangeLog and po/ChangeLog):
      
      	* gtk/gtkintl.h:
      	* gdk-pixbuf/gdk-pixbuf-i18n.h:
      	* gdk/gdkintl.h: Define P_() for property blurbs and nicks.
      
      	* gdk/gdkdisplaymanager.c:
      	* gdk-pixbuf/gdk-pixbuf.c:
      	* modules/input/gtkimcontextxim.c:
      	* gtk/*.c:  Mark property blurbs and nicks with P_().
      
      	* po/Makefile.in.in: Add --keyword=P_ to the xgettext
      	invocation, since property blurbs and nicks are
      	now marked with P_().
      07d4d314
    • Federico Mena Quintero's avatar
      Fix #130969. · fb526d23
      Federico Mena Quintero authored
      2004-01-16  Federico Mena Quintero  <federico@ximian.com>
      
      	Fix #130969.
      
      	* gtk/gtkcellrenderer.h (struct _GtkCellRendererClass): Added an
      	editing_canceled signal.
      
      	* gtk/gtkcellrenderer.c (gtk_cell_renderer_class_init): Create the
      	"editing-canceled" signal.
      	(gtk_cell_renderer_editing_canceled): New function.
      
      	* gtk/gtkcellrenderertext.c (gtk_cell_renderer_text_editing_done):
      	Call gtk_cell_renderer_editing_canceled().
      fb526d23
    • Federico Mena Quintero's avatar
      Do not allow setting select_multiple when in Save mode. (set_list_model): · c6860c11
      Federico Mena Quintero authored
      2004-01-16  Federico Mena Quintero  <federico@ximian.com>
      
      	* gtk/gtkfilechooserdefault.c
      	(gtk_file_chooser_default_set_property): Do not allow setting
      	select_multiple when in Save mode.
      	(set_list_model): No need to nullify the list_model and
      	sort_model.
      	(gtk_file_chooser_default_get_paths): Handle folder mode as well.
      	(get_paths_foreach): Likewise.
      
      	* gtk/gtkfilechooser.c (gtk_file_chooser_get_filename): Clarify
      	documentation about folder mode.
      	(gtk_file_chooser_get_uri): Likewise.
      c6860c11
    • Federico Mena Quintero's avatar
      New get_volume_for_path() method. (struct _GtkFileSystemIface): Finally · f2f12b9a
      Federico Mena Quintero authored
      2004-01-16  Federico Mena Quintero  <federico@ximian.com>
      
      	* gtk/gtkfilesystem.h (struct _GtkFileSystemIface): New
      	get_volume_for_path() method.
      	(struct _GtkFileSystemIface): Finally removed the list_roots() and
      	get_root_info() methods, and the "roots-changed" signal.
      
      	* gtk/gtkfilesystem.c (gtk_file_system_get_volume_for_path): New
      	function.
      	(gtk_file_system_list_roots): Removed.
      	(gtk_file_system_get_root_info): Removed.
      
      	* gtk/gtkfilesystemunix.c
      	(gtk_file_system_unix_get_volume_for_path): Implement.
      	(get_root_volume): New helper function.
      	(gtk_file_system_unix_list_volumes): Use get_root_volume().
      	(gtk_file_system_unix_list_roots): Removed.
      	(gtk_file_system_unix_get_root_info): Removed.
      
      	* gtk/gtkfilesystemmodel.c (_gtk_file_system_model_new): Don't
      	accept a NULL root_path.
      	(struct _GtkFileSystemModel): Add a field to remember the
      	root_path.
      	(_gtk_file_system_model_new): Store the root_path in the model
      	structure.
      	(find_and_ref_path): Stop going up the hierarchy at the root_path
      	of the model.  Also, don't return prematurely when walking up the
      	hierarchy.
      
      	* gtk/gtkfilechooserdefault.c (create_file_list): Sigh, restore
      	the rules_hint.
      	(struct _GtkFileChooserDefault): Added a current_volume_path field.
      	(set_tree_model): New function; create the folder tree model here.
      	(create_folder_tree): Don't create the model here.
      	(set_list_model): Set the show_hidden flag on the list model.
      f2f12b9a
  7. 15 Jan, 2004 3 commits
  8. 14 Jan, 2004 4 commits
  9. 13 Jan, 2004 1 commit
  10. 12 Jan, 2004 1 commit
    • Jody Goldberg's avatar
      Adjust to the new connect_proxy signals. · c73ab06e
      Jody Goldberg authored
      Mon Jan 12 23:40:34 2004  Matthias Clasen  <maclas@gmx.de>
      
      	* tests/testmerge.c: Adjust to the new connect_proxy signals.
      
      	* gtk/gtkuimanager.c
      	* gtk/gtkactiongroup.c
      	* gtk/gtkaction.c: Move the connect_proxy and disconnect_proxy signals
      	from GtkAction to GtkActionGroup and proxy it on GtkUIManager. This
      	removes the confusion between the disconnect_/connect_proxy signals
      	and the (unrelated) virtual functions of the same name and aligns
      	the setup with the pre_/post_activate signals.
      
      2004-01-12  Jody Goldberg <jody@gnome.org>
      
      	* gtk/gtkaction.c (connect_proxy) : only connect activate for menus
      	  with no submenus otherwise it looks like we activate every time a
      	  submenu opens.
      
      2004-01-10  Jody Goldberg <jody@gnome.org>
      
      	* gtk/gtkuimanager.c (d) : Add a debug macro to quiet the spew.
      	s/merge_signals/ui_manager_signals/ for readability.
      	(gtk_ui_manager_class_init) : add pre_activate and post_activate
      	  signals.
      	(cb_proxy_pre_activate) : new.
      	(cb_proxy_post_activate) : new.
      	(gtk_ui_manager_insert_action_group) : connect the proxies for
      	  GtkActionGroup::pre/post_activate
      	(gtk_ui_manager_remove_action_group) : disconnect them.
      
      	* gtk/gtkactiongroup.c (gtk_action_group_class_init) : add
      	  'sensitive', and 'visible' properties.  Also add pre_activate and
      	  post_activate signals to help deal with activations at a higher
      	  level (eg GtkUIManager)
      	(gtk_action_group_init) : init sensitive and visible
      	(gtk_action_group_set_property) : add sensitive and visible
      	(gtk_action_group_get_property) : add sensitive and visible
      	(gtk_action_group_get_sensitive) : new.
      	(gtk_action_group_get_visible) : new.
      	(cb_set_action_sensitivity) : new with minor optimization that only
      	  signals sensitivity changes if the action could possibly change.
      	(cb_set_action_visiblility) : ditto.
      	(gtk_action_group_set_sensitive) : new.  walk the actions directly
      	  rather than using notify::sensitive because that is simpler, easier
      	  to read, and more efficient.
      	(gtk_action_group_set_visible) : ditto.
      	(gtk_action_group_add_action) : Each action can only be in 1 group,
      	  set GtkAction::action_group.
      	(gtk_action_group_remove_action) : clear it.
      	(gtk_action_group_add_toggle_actions_full) : warning suppression.
      	(gtk_action_group_add_radio_actions_full) : warning suppression.
      	(_gtk_action_group_emit_pre_activate) : new protected routine for use
      	  by GtkAction.
      	(_gtk_action_group_emit_post_activate) : ditto.
      
      	* gtk/gtkaction.c (gtk_action_class_init) : add 'action_group' property.
      	(gtk_action_init) : initialize it.
      	(gtk_action_get_property) : get.
      	(gtk_action_set_property) : set it via
      	(gtk_action_set_action_group) : new function.
      	(gtk_action_sync_sensitivity) : new routine to sync proxy sensitivity
      	  with the logical sensitivity (action & group) rather than the simple
      	  action::sensitivity.
      	(gtk_action_sync_visible) : use gtk_action_is_visible to handle
      	  logical visibility (action & group) rather than the simple
      	  action::visible.  Use widget show/hide directly.
      	(connect_proxy) : handle the custom sensitivity handler.
      	  Make the TOOL_BUTTON signals more general and support TOOL_ITEM
      	  directly, with special cases for TOOL_BUTTON.  Still not especially
      	  good it might be useful to handle label/use_underline by parmspec
      	  lookup.  Those are likely to be implemented by custom types, and are
      	  assumed to exist in GtkToolItem.
      	(disconnect_proxy) : disconnect the new sensitivity handler.
      	(_gtk_action_emit_activate) : add pre/post signals.
      	(gtk_action_activate) : use logical sensitivity.
      	(gtk_action_is_sensitive) : logical sensitivity.
      	(gtk_action_get_sensitive) : actual sensitivity.
      	(closure_accel_activate) : use logical sensitivity.
      c73ab06e
  11. 11 Jan, 2004 2 commits
    • Matthias Clasen's avatar
      Remove accidentially committed debug spew. · 93bc689c
      Matthias Clasen authored
      Mon Jan 12 00:10:20 2004  Matthias Clasen  <maclas@gmx.de>
      
      	* gtk/gtkuimanager.c: Remove accidentially committed debug spew.
      93bc689c
    • Matthias Clasen's avatar
      Remove accidentally committed notification stuff. · 130c18a1
      Matthias Clasen authored
      Sun Jan 11 01:55:07 2004  Matthias Clasen  <maclas@gmx.de>
      
      	* gtk/gtkaccelmap.c: Remove accidentally committed notification stuff.
      	(gtk_accel_map_lock_path):
      	(gtk_accel_map_unlock_path): Path locking can now be nested, a missing
      	entry is silently created during lock_path(), and treated as an error
      	during unlock_path(). These changes have been requested by Tim Janik.
      130c18a1
  12. 09 Jan, 2004 3 commits