[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