aboutsummaryrefslogtreecommitdiffstats
path: root/e-util/e-table-item.c
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2013-06-21 22:22:15 +0800
committerMilan Crha <mcrha@redhat.com>2013-06-21 22:22:15 +0800
commit2a3580e43deb40eca14ed7ff16ad5cac6a7a5e2b (patch)
tree402d45d600bd36c44deca42f35340a439b1cef33 /e-util/e-table-item.c
parent0c18d2e755acbb84f48dd3b4ba783dac047ec4a2 (diff)
downloadgsoc2013-evolution-2a3580e43deb40eca14ed7ff16ad5cac6a7a5e2b.tar
gsoc2013-evolution-2a3580e43deb40eca14ed7ff16ad5cac6a7a5e2b.tar.gz
gsoc2013-evolution-2a3580e43deb40eca14ed7ff16ad5cac6a7a5e2b.tar.bz2
gsoc2013-evolution-2a3580e43deb40eca14ed7ff16ad5cac6a7a5e2b.tar.lz
gsoc2013-evolution-2a3580e43deb40eca14ed7ff16ad5cac6a7a5e2b.tar.xz
gsoc2013-evolution-2a3580e43deb40eca14ed7ff16ad5cac6a7a5e2b.tar.zst
gsoc2013-evolution-2a3580e43deb40eca14ed7ff16ad5cac6a7a5e2b.zip
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.
Diffstat (limited to 'e-util/e-table-item.c')
-rw-r--r--e-util/e-table-item.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/e-util/e-table-item.c b/e-util/e-table-item.c
index de749ead68..ad6c0890f4 100644
--- a/e-util/e-table-item.c
+++ b/e-util/e-table-item.c
@@ -99,6 +99,7 @@ enum {
PROP_LENGTH_THRESHOLD,
PROP_CURSOR_ROW,
PROP_UNIFORM_ROW_HEIGHT,
+ PROP_IS_EDITING,
PROP_MINIMUM_WIDTH,
PROP_WIDTH,
@@ -1697,6 +1698,9 @@ eti_get_property (GObject *object,
case PROP_UNIFORM_ROW_HEIGHT:
g_value_set_boolean (value, eti->uniform_row_height);
break;
+ case PROP_IS_EDITING:
+ g_value_set_boolean (value, e_table_item_is_editing (eti));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -3273,6 +3277,16 @@ eti_class_init (ETableItemClass *class)
FALSE,
G_PARAM_READWRITE));
+ 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));
+
eti_signals[CURSOR_CHANGE] = g_signal_new (
"cursor_change",
G_OBJECT_CLASS_TYPE (object_class),
@@ -3582,6 +3596,8 @@ e_table_item_enter_edit (ETableItem *eti,
eti->editing_row = row;
eti->edit_ctx = e_cell_enter_edit (eti->cell_views[col], view_to_model_col (eti, col), col, row);
+
+ g_object_notify (G_OBJECT (eti), "is-editing");
}
/**
@@ -3616,6 +3632,8 @@ e_table_item_leave_edit (ETableItem *eti)
eti->cell_views[col],
view_to_model_col (eti, col),
col, row, edit_ctx);
+
+ g_object_notify (G_OBJECT (eti), "is-editing");
}
/**
@@ -4039,3 +4057,17 @@ e_table_item_get_printable (ETableItem *item)
return printable;
}
+
+/**
+ * e_table_item_is_editing:
+ * @eti: an %ETableItem
+ *
+ * Returns: Whether the table item is currently editing cell content.
+ **/
+gboolean
+e_table_item_is_editing (ETableItem *eti)
+{
+ g_return_val_if_fail (E_IS_TABLE_ITEM (eti), FALSE);
+
+ return eti_editing (eti);
+}