[Xfce4-commits] <design:master> Work on row expansion, insensitivity of separators and categories.

Jannis Pohlmann noreply at xfce.org
Sun May 29 23:24:01 CEST 2011


Updating branch refs/heads/master
         to 8734ae0efd6dcdabefa449e82a8eb84164923925 (commit)
       from e8cb4393724fdddd4f846a02740a04475235b9be (commit)

commit 8734ae0efd6dcdabefa449e82a8eb84164923925
Author: Jannis Pohlmann <jannis at xfce.org>
Date:   Sun May 29 23:21:51 2011 +0200

    Work on row expansion, insensitivity of separators and categories.

 .../treeview-mockup/vala/mockup.vala               |   58 +++++++++++++++++---
 1 files changed, 51 insertions(+), 7 deletions(-)

diff --git a/thunar/shortcuts-pane/treeview-mockup/vala/mockup.vala b/thunar/shortcuts-pane/treeview-mockup/vala/mockup.vala
index 5bf1d66..5cf9241 100644
--- a/thunar/shortcuts-pane/treeview-mockup/vala/mockup.vala
+++ b/thunar/shortcuts-pane/treeview-mockup/vala/mockup.vala
@@ -89,17 +89,21 @@ public class ShortcutsModel : GLib.Object, TreeModel {
   public static enum Column {
     ICON,
     NAME,
+    CATEGORY,
     ACTION_WIDGET,
     SEPARATOR,
     SENSITIVE,
+    HEIGHT,
   }
 
   private static Type[] ColumnTypes = {
     typeof (Icon),
     typeof (string),
+    typeof (Category),
     typeof (Button),
     typeof (bool),
-    typeof (bool)
+    typeof (bool),
+    typeof (int)
   };
 
   private GenericArray<Category> categories = new GenericArray<Category> ();
@@ -217,7 +221,10 @@ public class ShortcutsModel : GLib.Object, TreeModel {
     if (item_index < 0) {
       switch (column) {
       case Column.NAME:
-        value = "<span size='large' weight='medium' color='#353535'>" + category.name + "</span>";
+        value = "<span size='larger' weight='medium' color='#353535'>" + category.name + "</span>";
+        break;
+      case Column.CATEGORY:
+        value = category;
         break;
       case Column.SEPARATOR:
         bool is_separator = category is SeparatorCategory;
@@ -227,6 +234,10 @@ public class ShortcutsModel : GLib.Object, TreeModel {
         bool is_sensitive = !(category is SeparatorCategory);
         value = is_sensitive;
         break;
+      case Column.HEIGHT:
+        bool is_separator = category is SeparatorCategory;
+        value = is_separator ? 0 : -1;
+        break;
       default:
         value = Value (ColumnTypes[column]);
         break;
@@ -236,11 +247,14 @@ public class ShortcutsModel : GLib.Object, TreeModel {
       assert (item != null);
 
       switch (column) {
+      case Column.ICON:
+        value = item.icon;
+        break;
       case Column.NAME:
         value = item.name;
         break;
-      case Column.ICON:
-        value = item.icon;
+      case Column.CATEGORY:
+        value = Value (ColumnTypes[Column.CATEGORY]);
         break;
       case Column.SEPARATOR:
         value = false;
@@ -248,6 +262,9 @@ public class ShortcutsModel : GLib.Object, TreeModel {
       case Column.SENSITIVE:
         value = true;
         break;
+      case Column.HEIGHT:
+        value = -1;
+        break;
       default:
         value = Value (ColumnTypes[column]);
         break;
@@ -690,25 +707,47 @@ public class ShortcutsView : Frame {
     view.set_model (model);
     view.set_headers_visible (false);
     view.set_level_indentation (-14);
+    view.set_fixed_height_mode (false);
     scrollwin.add (view);
     view.show ();
 
+    view.row_activated.connect (row_activated);
     view.get_selection ().set_select_function (select_row);
 
     var shortcut_renderer = new ShortcutRenderer ();
 
     var column = new TreeViewColumn ();
+    column.set_clickable (true);
     column.set_title ("Shortcut");
     column.pack_start (shortcut_renderer, true);
     column.set_attributes (shortcut_renderer,
                            "icon", ShortcutsModel.Column.ICON,
                            "markup", ShortcutsModel.Column.NAME,
-                           "sensitive", ShortcutsModel.Column.SENSITIVE);
+                           "sensitive", ShortcutsModel.Column.SENSITIVE,
+                           "height", ShortcutsModel.Column.HEIGHT);
     view.append_column(column);
 
     view.expand_all ();
   }
 
+  private void row_activated (TreePath path, TreeViewColumn column) {
+    TreeIter iter;
+
+    if (model.get_iter (out iter, path)) {
+      Category category = null;
+
+      model.get (iter, ShortcutsModel.Column.CATEGORY, out category, -1);
+
+      if (category != null) {
+        if (view.is_row_expanded (path)) {
+          view.collapse_row (path);
+        } else {
+          view.expand_row (path, false);
+        }
+      }
+    }
+  }
+
   private bool select_row (TreeSelection selection,
                            TreeModel model,
                            TreePath path,
@@ -717,9 +756,14 @@ public class ShortcutsView : Frame {
     TreeIter iter;
 
     if (model.get_iter (out iter, path)) {
+      Category category = null;
       bool is_separator = false;
-      model.get (iter, ShortcutsModel.Column.SEPARATOR, out is_separator, -1);
-      return !is_separator;
+
+      model.get (iter,
+                 ShortcutsModel.Column.SEPARATOR, out is_separator,
+                 ShortcutsModel.Column.CATEGORY, out category, -1);
+
+      return (category == null);
     } else {
       return false;
     }



More information about the Xfce4-commits mailing list