aboutsummaryrefslogtreecommitdiffstats
path: root/e-util/e-tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'e-util/e-tree.c')
-rw-r--r--e-util/e-tree.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/e-util/e-tree.c b/e-util/e-tree.c
index 8db2009fa0..d8fb95e6d2 100644
--- a/e-util/e-tree.c
+++ b/e-util/e-tree.c
@@ -97,6 +97,7 @@ enum {
PROP_DRAW_FOCUS,
PROP_ETTA,
PROP_UNIFORM_ROW_HEIGHT,
+ PROP_IS_EDITING,
PROP_ALWAYS_SEARCH,
PROP_HADJUSTMENT,
PROP_VADJUSTMENT,
@@ -259,6 +260,16 @@ G_DEFINE_TYPE_WITH_CODE (ETree, e_tree, GTK_TYPE_TABLE,
G_IMPLEMENT_INTERFACE (GTK_TYPE_SCROLLABLE, NULL))
static void
+tree_item_is_editing_changed_cb (ETableItem *item,
+ GParamSpec *param,
+ ETree *tree)
+{
+ g_return_if_fail (E_IS_TREE (tree));
+
+ g_object_notify (G_OBJECT (tree), "is-editing");
+}
+
+static void
et_disconnect_from_etta (ETree *tree)
{
if (tree->priv->table_model_change_id != 0)
@@ -1131,6 +1142,9 @@ et_build_item (ETree *tree)
g_signal_connect (
tree->priv->item, "start_drag",
G_CALLBACK (item_start_drag), tree);
+ g_signal_connect (
+ tree->priv->item, "notify::is-editing",
+ G_CALLBACK (tree_item_is_editing_changed_cb), tree);
}
static void
@@ -1888,6 +1902,10 @@ et_get_property (GObject *object,
g_value_set_boolean (value, tree->priv->uniform_row_height);
break;
+ case PROP_IS_EDITING:
+ g_value_set_boolean (value, e_tree_is_editing (tree));
+ break;
+
case PROP_ALWAYS_SEARCH:
g_value_set_boolean (value, tree->priv->always_search);
break;
@@ -3198,6 +3216,16 @@ e_tree_class_init (ETreeClass *class)
g_object_class_install_property (
object_class,
+ PROP_IS_EDITING,
+ g_param_spec_boolean (
+ "is-editing",
+ "Whether is in an editing mode",
+ "Whether is in an editing mode",
+ FALSE,
+ G_PARAM_READABLE));
+
+ g_object_class_install_property (
+ object_class,
PROP_ALWAYS_SEARCH,
g_param_spec_boolean (
"always_search",
@@ -3336,3 +3364,11 @@ e_tree_thaw_state_change (ETree *tree)
e_tree_state_change (tree);
}
}
+
+gboolean
+e_tree_is_editing (ETree *tree)
+{
+ g_return_val_if_fail (E_IS_TREE (tree), FALSE);
+
+ return tree->priv->item && e_table_item_is_editing (E_TABLE_ITEM (tree->priv->item));
+}