[dia] [diagram-tree] implement Locate for the new view
- From: Hans Breuer <hans src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [dia] [diagram-tree] implement Locate for the new view
- Date: Sat, 31 Jul 2010 18:09:08 +0000 (UTC)
commit a0a447a001c543cf57d450c335c1e59d9e46f9f5
Author: Hans Breuer <hans breuer org>
Date: Sat Jul 31 19:55:33 2010 +0200
[diagram-tree] implement Locate for the new view
app/diagram_tree_view.c | 43 ++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 42 insertions(+), 1 deletions(-)
---
diff --git a/app/diagram_tree_view.c b/app/diagram_tree_view.c
index 24f51c0..a2911c0 100644
--- a/app/diagram_tree_view.c
+++ b/app/diagram_tree_view.c
@@ -347,7 +347,48 @@ static void
_dtv_locate_item (GtkAction *action,
DiagramTreeView *dtv)
{
- /* FIXME: implement */
+ GtkTreeSelection *selection;
+ GtkTreeModel *model;
+ GList *rows, *r;
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (dtv));
+ rows = gtk_tree_selection_get_selected_rows (selection, &model);
+ r = rows;
+ while (r) {
+ GtkTreeIter iter;
+
+ if (gtk_tree_model_get_iter (model, &iter, r->data)) {
+ Diagram *diagram;
+ Layer *layer;
+ DiaObject *object;
+
+ gtk_tree_model_get (model, &iter, DIAGRAM_COLUMN, &diagram, -1);
+ gtk_tree_model_get (model, &iter, OBJECT_COLUMN, &object, -1);
+
+ if (object && diagram) {
+ /* It's kind of stupid to have this running in two loops:
+ * - one may expect to have one presentation for all selected objects
+ * - if there really would be multiple displays and objects we would
+ * iterate through them with a very questionable order ;)
+ */
+ GSList *displays;
+
+ for (displays = diagram->displays;
+ displays != NULL; displays = g_slist_next (displays)) {
+ DDisplay *ddisp = (DDisplay *)displays->data;
+
+ ddisplay_present_object (ddisp, object);
+ }
+ }
+ /* drop all references got from the model */
+ if (diagram) {
+ g_object_unref (diagram);
+ }
+ }
+ r = g_list_next (r);
+ }
+ g_list_foreach (rows, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free (rows);
}
static void
_dtv_showprops_item (GtkAction *action,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]