From 4a101290fdb546296f7bc0a9a34ba342e741895a Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Fri, 21 Jun 2013 15:56:34 +0200 Subject: Calendar views inline text edit with Ctrl+C/V/X does not work The shortcuts Ctrl+C/V/X are used for whole calendar items copy/paste/cut, not for text when editing event details inline, either in a day/week view or in a list view. By tracking the is-editing property of respective cell editor and using it when enabling/disabling clipboard actions makes the respective text operations work as expected. --- e-util/e-table-group-container.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'e-util/e-table-group-container.c') diff --git a/e-util/e-table-group-container.c b/e-util/e-table-group-container.c index 72fee11c26..fece704449 100644 --- a/e-util/e-table-group-container.c +++ b/e-util/e-table-group-container.c @@ -60,7 +60,8 @@ enum { PROP_CURSOR_MODE, PROP_SELECTION_MODEL, PROP_LENGTH_THRESHOLD, - PROP_UNIFORM_ROW_HEIGHT + PROP_UNIFORM_ROW_HEIGHT, + PROP_IS_EDITING }; static EPrintable * @@ -992,6 +993,9 @@ etgc_get_property (GObject *object, case PROP_UNIFORM_ROW_HEIGHT: g_value_set_boolean (value, etgc->uniform_row_height); break; + case PROP_IS_EDITING: + g_value_set_boolean (value, e_table_group_container_is_editing (etgc)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; @@ -1148,6 +1152,11 @@ e_table_group_container_class_init (ETableGroupContainerClass *class) "Minimum Width", 0.0, G_MAXDOUBLE, 0.0, G_PARAM_READWRITE)); + + g_object_class_override_property ( + object_class, + PROP_IS_EDITING, + "is-editing"); } static void @@ -1666,3 +1675,21 @@ etgc_get_printable (ETableGroup *etg) return printable; } + +gboolean +e_table_group_container_is_editing (ETableGroupContainer *etgc) +{ + GList *list; + + g_return_val_if_fail (E_IS_TABLE_GROUP_CONTAINER (etgc), FALSE); + + for (list = etgc->children; list; list = g_list_next (list)) { + ETableGroupContainerChildNode *child_node = (ETableGroupContainerChildNode *) list->data; + + if (e_table_group_is_editing (child_node->child)) { + return TRUE; + } + } + + return FALSE; +} -- cgit