diff options
Diffstat (limited to 'e-util/e-tree.c')
-rw-r--r-- | e-util/e-tree.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/e-util/e-tree.c b/e-util/e-tree.c index 5a6b52452e..56b807f2d6 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, @@ -260,6 +261,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 *et) { if (et->priv->table_model_change_id != 0) @@ -1137,6 +1148,9 @@ et_build_item (ETree *et) g_signal_connect ( et->priv->item, "start_drag", G_CALLBACK (item_start_drag), et); + g_signal_connect ( + et->priv->item, "notify::is-editing", + G_CALLBACK (tree_item_is_editing_changed_cb), et); } static void @@ -1997,6 +2011,10 @@ et_get_property (GObject *object, g_value_set_boolean (value, etree->priv->uniform_row_height); break; + case PROP_IS_EDITING: + g_value_set_boolean (value, e_tree_is_editing (etree)); + break; + case PROP_ALWAYS_SEARCH: g_value_set_boolean (value, etree->priv->always_search); break; @@ -3762,6 +3780,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", @@ -3902,3 +3930,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)); +} |