diff options
author | Milan Crha <mcrha@redhat.com> | 2013-06-21 22:22:15 +0800 |
---|---|---|
committer | Milan Crha <mcrha@redhat.com> | 2013-06-21 22:22:15 +0800 |
commit | 2a3580e43deb40eca14ed7ff16ad5cac6a7a5e2b (patch) | |
tree | 402d45d600bd36c44deca42f35340a439b1cef33 /e-util/e-table-click-to-add.c | |
parent | 0c18d2e755acbb84f48dd3b4ba783dac047ec4a2 (diff) | |
download | gsoc2013-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-click-to-add.c')
-rw-r--r-- | e-util/e-table-click-to-add.c | 46 |
1 files changed, 45 insertions, 1 deletions
diff --git a/e-util/e-table-click-to-add.c b/e-util/e-table-click-to-add.c index 6de00f913b..f44b4a2235 100644 --- a/e-util/e-table-click-to-add.c +++ b/e-util/e-table-click-to-add.c @@ -59,7 +59,8 @@ enum { PROP_MODEL, PROP_MESSAGE, PROP_WIDTH, - PROP_HEIGHT + PROP_HEIGHT, + PROP_IS_EDITING }; static void @@ -310,6 +311,9 @@ etcta_get_property (GObject *object, case PROP_HEIGHT: g_value_set_double (value, etcta->height); break; + case PROP_IS_EDITING: + g_value_set_boolean (value, e_table_click_to_add_is_editing (etcta)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; @@ -367,6 +371,16 @@ set_initial_selection (ETableClickToAdd *etcta) } static void +table_click_to_add_row_is_editing_changed_cb (ETableItem *item, + GParamSpec *param, + ETableClickToAdd *etcta) +{ + g_return_if_fail (E_IS_TABLE_CLICK_TO_ADD (etcta)); + + g_object_notify (G_OBJECT (etcta), "is-editing"); +} + +static void finish_editing (ETableClickToAdd *etcta) { if (etcta->row) { @@ -400,7 +414,13 @@ finish_editing (ETableClickToAdd *etcta) etcta->row, "key_press", G_CALLBACK (item_key_press), etcta); + g_signal_connect ( + etcta->row, "notify::is-editing", + G_CALLBACK (table_click_to_add_row_is_editing_changed_cb), etcta); + set_initial_selection (etcta); + + g_object_notify (G_OBJECT (etcta), "is-editing"); } } @@ -451,9 +471,15 @@ etcta_event (GnomeCanvasItem *item, etcta->row, "key_press", G_CALLBACK (item_key_press), etcta); + g_signal_connect ( + etcta->row, "notify::is-editing", + G_CALLBACK (table_click_to_add_row_is_editing_changed_cb), etcta); + e_canvas_item_grab_focus (GNOME_CANVAS_ITEM (etcta->row), TRUE); set_initial_selection (etcta); + + g_object_notify (G_OBJECT (etcta), "is-editing"); } break; @@ -587,6 +613,16 @@ etcta_class_init (ETableClickToAddClass *class) G_PARAM_READABLE | G_PARAM_LAX_VALIDATION)); + 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)); + etcta_signals[CURSOR_CHANGE] = g_signal_new ( "cursor_change", G_OBJECT_CLASS_TYPE (object_class), @@ -664,3 +700,11 @@ e_table_click_to_add_commit (ETableClickToAdd *etcta) create_rect_and_text (etcta); e_canvas_item_move_absolute (etcta->text, 3, 3); } + +gboolean +e_table_click_to_add_is_editing (ETableClickToAdd *etcta) +{ + g_return_val_if_fail (E_IS_TABLE_CLICK_TO_ADD (etcta), FALSE); + + return etcta->row && e_table_item_is_editing (E_TABLE_ITEM (etcta->row)); +} |