raster pushed a commit to branch efl-1.22.

http://git.enlightenment.org/core/efl.git/commit/?id=eace1d1d5f94f63c1f3652c15033872401d57bfc

commit eace1d1d5f94f63c1f3652c15033872401d57bfc
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Thu Aug 15 13:27:54 2019 +0100

    elm - dnd - fix drop target del to not nuke handler all the time
    
    this broke dnd if u have multiple drop targets in a window... keep the
    functions there if we still have drop targets... especially in x11.
    
    @fix
---
 src/lib/elementary/efl_ui_selection_manager.c | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/src/lib/elementary/efl_ui_selection_manager.c 
b/src/lib/elementary/efl_ui_selection_manager.c
index 5c4db17b0c..d0608ddf6c 100644
--- a/src/lib/elementary/efl_ui_selection_manager.c
+++ b/src/lib/elementary/efl_ui_selection_manager.c
@@ -4999,6 +4999,7 @@ _efl_ui_selection_manager_drop_target_del(Eo *obj 
EINA_UNUSED, Efl_Ui_Selection_
 {
    Sel_Manager_Dropable *dropable = NULL;
    Sel_Manager_Seat_Selection *seat_sel;
+   Eina_Bool remove_handler = EINA_FALSE;
 
    dropable = efl_key_data_get(target_obj, "__elm_dropable");
    if (dropable)
@@ -5040,14 +5041,21 @@ _efl_ui_selection_manager_drop_target_del(Eo *obj 
EINA_UNUSED, Efl_Ui_Selection_
                   break;
                }
           }
-        if (!have_drop_list) ecore_x_dnd_aware_set(xwin, EINA_FALSE);
+        if (!have_drop_list)
+          {
+             ecore_x_dnd_aware_set(xwin, EINA_FALSE);
+             remove_handler = EINA_TRUE;
+          }
      }
 #endif
-   seat_sel = _sel_manager_seat_selection_init(pd, seat);
-   ELM_SAFE_FREE(seat_sel->pos_handler, ecore_event_handler_del);
-   ELM_SAFE_FREE(seat_sel->drop_handler, ecore_event_handler_del);
-   ELM_SAFE_FREE(seat_sel->enter_handler, ecore_event_handler_del);
-   ELM_SAFE_FREE(seat_sel->leave_handler, ecore_event_handler_del);
+   if (remove_handler)
+     {
+        seat_sel = _sel_manager_seat_selection_init(pd, seat);
+        ELM_SAFE_FREE(seat_sel->pos_handler, ecore_event_handler_del);
+        ELM_SAFE_FREE(seat_sel->drop_handler, ecore_event_handler_del);
+        ELM_SAFE_FREE(seat_sel->enter_handler, ecore_event_handler_del);
+        ELM_SAFE_FREE(seat_sel->leave_handler, ecore_event_handler_del);
+     }
 }
 
 EOLIAN static void

-- 


Reply via email to