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