From 6ce2698bb5b9051bc72adf776125a414c4908bea Mon Sep 17 00:00:00 2001 From: Ali Alzyod Date: Fri, 7 Feb 2020 14:15:20 +0100 Subject: [PATCH] efl.ui.textbox: prevent longpress + right click from working on scrollbars summary_: Longpress and right click one textbox scrollbars will not show up the menu. Reviewers: woohyun, bu5hm4n Subscribers: cedric, #reviewers, #committers Tags: #efl Maniphest Tasks: T8604 Reviewed-by: Marcel Hollerbach Differential Revision: https://phab.enlightenment.org/D11295 --- src/lib/elementary/efl_ui_textbox.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/lib/elementary/efl_ui_textbox.c b/src/lib/elementary/efl_ui_textbox.c index 936471c643..a53c265d38 100644 --- a/src/lib/elementary/efl_ui_textbox.c +++ b/src/lib/elementary/efl_ui_textbox.c @@ -1049,11 +1049,31 @@ _menu_call(Evas_Object *obj) } } +static Eina_Bool +_is_pointer_inside_viewport(Eo *textbox,Efl_Ui_Textbox_Data *sd) +{ + if (sd->scroller) + { + Eo *top = efl_provider_find(textbox, EFL_UI_WIN_CLASS); + Eina_Position2D pos = {0}; + if (efl_canvas_scene_pointer_position_get(top, NULL, &pos)) + { + Eina_Rect rc = efl_ui_scrollable_viewport_geometry_get(sd->scroller); + if (!eina_rectangle_coords_inside(&rc.rect, pos.x, pos.y)) + return EINA_FALSE; + } + } + return EINA_TRUE; +} + static void _long_press_cb(void *data, const Efl_Event *ev EINA_UNUSED) { EFL_UI_TEXT_DATA_GET(data, sd); + if (!_is_pointer_inside_viewport(data, sd)) + return; + /* Context menu will not appear if context menu disabled is set * as false on a long press callback */ if (!_elm_config->context_menu_disabled && @@ -1122,6 +1142,8 @@ _mouse_down_cb(void *data, const Efl_Event *event) { if (_elm_config->desktop_entry) { + if (!_is_pointer_inside_viewport(data, sd)) + return; sd->use_down = 1; _menu_call(data); }