diff options
author | Andy Williams <andy@andywilliams.me> | 2017-07-25 23:54:21 +0100 |
---|---|---|
committer | Andy Williams <andy@andywilliams.me> | 2017-07-25 23:54:21 +0100 |
commit | 77db870b6150d6f1bbc0ba6185bd3e14dd217c6b (patch) | |
tree | 84a4ed201bd5e69f3c98afe6a4d5c78d1fb902e3 | |
parent | 69c6cbfdf19c032f32cbf7d39e2136856ceea5b1 (diff) | |
download | efl-77db870b6150d6f1bbc0ba6185bd3e14dd217c6b.tar.gz |
elm_code: Fix missing middle button selection paste
Resolves task T5520
@fix
-rw-r--r-- | src/lib/elementary/elm_code_widget.c | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/src/lib/elementary/elm_code_widget.c b/src/lib/elementary/elm_code_widget.c index 04f20edcd6..2846959f7c 100644 --- a/src/lib/elementary/elm_code_widget.c +++ b/src/lib/elementary/elm_code_widget.c @@ -969,6 +969,24 @@ _elm_code_widget_clicked_readonly_cb(Elm_Code_Widget *widget, unsigned int row) } static void +_mouse_selection_paste_at_position(Elm_Code_Widget *widget, + unsigned int row, unsigned int col) +{ + char *text; + + if (elm_code_widget_selection_is_empty(widget)) + return; + + text = elm_code_widget_selection_text_get(widget); + elm_code_widget_selection_clear(widget); + + elm_code_widget_cursor_position_set(widget, row, col); + elm_code_widget_text_at_cursor_insert(widget, text); + + free(text); +} + +static void _elm_code_widget_mouse_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) { @@ -986,10 +1004,18 @@ _elm_code_widget_mouse_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj ctrl = evas_key_modifier_is_set(event->modifiers, "Control"); shift = evas_key_modifier_is_set(event->modifiers, "Shift"); - if (event->button == 3 && !ctrl) + if (!ctrl) { - _popup_menu_show(widget, event->canvas.x, event->canvas.y); - return; + if (event->button == 3) + { + _popup_menu_show(widget, event->canvas.x, event->canvas.y); + return; + } + else if (event->button == 2) + { + _mouse_selection_paste_at_position(widget, row, col); + return; + } } if (!shift) |