Hi Richard! Another patch that put the focus in the right place when a new group is added. Also, I have modified the focus when you add a resource, so the task name cell is selected and in edit mode. Cheers -- Alvaro
? group-focus.diff ? intltool-modules ? resource-undo-name.diff ? resource-undo-name.diff2 ? resource-undo.diff ? dotnet/Makefile ? dotnet/Makefile.in ? dotnet/libplanner/Makefile ? dotnet/libplanner/Makefile.in ? dotnet/samples/Makefile ? dotnet/samples/Makefile.in ? src/planner-resource-view.c.diff Index: src/planner-group-dialog.c =================================================================== RCS file: /cvs/gnome/planner/src/planner-group-dialog.c,v retrieving revision 1.2 diff -u -b -B -p -r1.2 planner-group-dialog.c --- src/planner-group-dialog.c 11 Dec 2003 10:52:46 -0000 1.2 +++ src/planner-group-dialog.c 28 Jan 2004 08:22:08 -0000 @@ -42,6 +42,70 @@ typedef struct { GtkWidget *remove_button; } DialogData; +typedef struct { + MrpGroup *group; + GtkTreePath *found_path; + GtkTreeIter *found_iter; +} FindGroupData; + +static void +group_dialog_free_find_group_data (FindGroupData *data) +{ + if (data->found_path) { + gtk_tree_path_free (data->found_path); + } + if (data->found_iter) { + gtk_tree_iter_free (data->found_iter); + } + + g_free (data); +} + +static gboolean +group_dialog_foreach_find_group_func (GtkTreeModel *model, + GtkTreePath *path, + GtkTreeIter *iter, + FindGroupData *data) +{ + MrpGroup *group; + + gtk_tree_model_get (model, iter, + GROUP_COL, &group, + -1); + + if (group == data->group) { + data->found_path = gtk_tree_path_copy (path); + data->found_iter = gtk_tree_iter_copy (iter); + return TRUE; + } + + return FALSE; +} + +static FindGroupData * +group_dialog_find_group (GtkTreeView *tree_view, MrpGroup *group) +{ + FindGroupData *data; + GtkTreeModel *model; + + data = g_new0 (FindGroupData, 1); + data->group = group; + data->found_path = NULL; + + model = gtk_tree_view_get_model (tree_view); + + gtk_tree_model_foreach (model, + (GtkTreeModelForeachFunc) group_dialog_foreach_find_group_func, + data); + + if (data->found_path) { + return data; + } + + g_free (data); + return NULL; +} + static GtkWidget * group_dialog_create (MrpProject *project); @@ -159,6 +223,9 @@ group_dialog_insert_group_cb (GtkWidget { DialogData *data; MrpGroup *group; + FindGroupData *find_data; + GtkTreeModel *model; + GtkTreePath *path; g_return_if_fail (GTK_IS_DIALOG (dialog)); @@ -167,6 +234,24 @@ group_dialog_insert_group_cb (GtkWidget group = mrp_group_new (); mrp_project_add_group (data->project, group); + + if (!GTK_WIDGET_HAS_FOCUS (data->tree_view)) { + gtk_widget_grab_focus (GTK_WIDGET (data->tree_view)); + } + + find_data = group_dialog_find_group (data->tree_view, group); + if (find_data) { + model = gtk_tree_view_get_model (data->tree_view); + path = gtk_tree_model_get_path (model, find_data->found_iter); + + gtk_tree_view_set_cursor (data->tree_view, + path, + gtk_tree_view_get_column (data->tree_view, 0), + TRUE); + gtk_tree_path_free (path); + + group_dialog_free_find_group_data (find_data); + } } static void Index: src/planner-group-model.c =================================================================== RCS file: /cvs/gnome/planner/src/planner-group-model.c,v retrieving revision 1.2 diff -u -b -B -p -r1.2 planner-group-model.c --- src/planner-group-model.c 11 Dec 2003 10:52:46 -0000 1.2 +++ src/planner-group-model.c 28 Jan 2004 08:22:08 -0000 @@ -158,6 +158,9 @@ mgm_get_column_type (GtkTreeModel *tree_ case GROUP_COL_GROUP_DEFAULT: return G_TYPE_BOOLEAN; + case GROUP_COL: + return MRP_TYPE_GROUP; + default: return G_TYPE_INVALID; } @@ -223,6 +226,12 @@ mgm_get_value (GtkTreeModel *tree_model, break; + case GROUP_COL: + g_value_init (value, MRP_TYPE_GROUP); + g_value_set_object (value, group); + + break; + default: g_assert_not_reached (); } Index: src/planner-group-model.h =================================================================== RCS file: /cvs/gnome/planner/src/planner-group-model.h,v retrieving revision 1.2 diff -u -b -B -p -r1.2 planner-group-model.h --- src/planner-group-model.h 11 Dec 2003 10:52:46 -0000 1.2 +++ src/planner-group-model.h 28 Jan 2004 08:22:08 -0000 @@ -60,6 +60,7 @@ enum { GROUP_COL_MANAGER_NAME, GROUP_COL_MANAGER_PHONE, GROUP_COL_MANAGER_EMAIL, + GROUP_COL, NUMBER_OF_GROUP_COLS }; Index: src/planner-resource-view.c =================================================================== RCS file: /cvs/gnome/planner/src/planner-resource-view.c,v retrieving revision 1.6 diff -u -b -B -p -r1.6 planner-resource-view.c --- src/planner-resource-view.c 28 Jan 2004 06:21:09 -0000 1.6 +++ src/planner-resource-view.c 28 Jan 2004 08:22:13 -0000 @@ -4,7 +4,7 @@ * Copyright (C) 2002 CodeFactory AB * Copyright (C) 2002 Richard Hult <richard imendio com> * Copyright (C) 2002 Mikael Hallendal <micke imendio com> - * Copyright (C) 2002 Alvaro del Castillo <acs barrapunto com> + * Copyright (C) 2002-2004 Alvaro del Castillo <acs barrapunto com> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -812,8 +813,8 @@ resource_view_insert_resource_cb (Bonobo gtk_tree_view_set_cursor (priv->tree_view, path, - NULL, - FALSE); + gtk_tree_view_get_column (priv->tree_view, 0), + TRUE); gtk_tree_path_free (path);
Attachment:
signature.asc
Description: Esta parte del mensaje =?ISO-8859-1?Q?est=E1?= firmada digitalmente