aboutsummaryrefslogtreecommitdiffstats
path: root/e-util/e-table-group-leaf.c
diff options
context:
space:
mode:
Diffstat (limited to 'e-util/e-table-group-leaf.c')
-rw-r--r--e-util/e-table-group-leaf.c35
1 files changed, 34 insertions, 1 deletions
diff --git a/e-util/e-table-group-leaf.c b/e-util/e-table-group-leaf.c
index 027ba299ec..a052e36913 100644
--- a/e-util/e-table-group-leaf.c
+++ b/e-util/e-table-group-leaf.c
@@ -55,10 +55,21 @@ enum {
PROP_CURSOR_MODE,
PROP_LENGTH_THRESHOLD,
PROP_SELECTION_MODEL,
- PROP_UNIFORM_ROW_HEIGHT
+ PROP_UNIFORM_ROW_HEIGHT,
+ PROP_IS_EDITING
};
static void
+etgl_item_is_editing_changed_cb (ETableItem *item,
+ GParamSpec *param,
+ ETableGroupLeaf *etgl)
+{
+ g_return_if_fail (E_IS_TABLE_GROUP_LEAF (etgl));
+
+ g_object_notify (G_OBJECT (etgl), "is-editing");
+}
+
+static void
etgl_dispose (GObject *object)
{
ETableGroupLeaf *etgl = E_TABLE_GROUP_LEAF (object);
@@ -98,6 +109,9 @@ etgl_dispose (GObject *object)
etgl->item,
etgl->etgl_start_drag_id);
+ g_signal_handlers_disconnect_by_func (etgl->item,
+ etgl_item_is_editing_changed_cb, etgl);
+
etgl->etgl_cursor_change_id = 0;
etgl->etgl_cursor_activated_id = 0;
etgl->etgl_double_click_id = 0;
@@ -354,6 +368,9 @@ etgl_realize (GnomeCanvasItem *item)
etgl->item, "start_drag",
G_CALLBACK (etgl_start_drag), etgl);
+ g_signal_connect (etgl->item, "notify::is-editing",
+ G_CALLBACK (etgl_item_is_editing_changed_cb), etgl);
+
e_canvas_item_request_reflow (item);
}
@@ -650,6 +667,10 @@ etgl_get_property (GObject *object,
break;
case PROP_UNIFORM_ROW_HEIGHT:
g_value_set_boolean (value, etgl->uniform_row_height);
+ break;
+ case PROP_IS_EDITING:
+ g_value_set_boolean (value, e_table_group_leaf_is_editing (etgl));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -804,6 +825,11 @@ e_table_group_leaf_class_init (ETableGroupLeafClass *class)
"Uniform row height",
FALSE,
G_PARAM_READWRITE));
+
+ g_object_class_override_property (
+ object_class,
+ PROP_IS_EDITING,
+ "is-editing");
}
static void
@@ -837,3 +863,10 @@ e_table_group_leaf_init (ETableGroupLeaf *etgl)
e_canvas_item_set_reflow_callback (GNOME_CANVAS_ITEM (etgl), etgl_reflow);
}
+gboolean
+e_table_group_leaf_is_editing (ETableGroupLeaf *etgl)
+{
+ g_return_val_if_fail (E_IS_TABLE_GROUP_LEAF (etgl), FALSE);
+
+ return etgl->item && e_table_item_is_editing (etgl->item);
+}