devilhorns pushed a commit to branch master.

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

commit 2af4858e2aad8cffac7248398786d37df1a29845
Author: Chris Michael <[email protected]>
Date:   Tue Jan 17 11:34:24 2017 -0500

    elput: Return touch coordinates when we have no pointer
    
    If a user calls elput_input_pointer_xy_get (as is done via
    ecore_evas_drm) and a pointer does not exist, we never return any
    coordinates for this function.
    
    Enlightenment is using ecore_evas_pointer_xy_get (which when using the
    drm ee, ends up calling elput_input_pointer_xy_get). If we have no
    pointer device, then no coordinates are ever returned and touch
    clicking does not function properly.
    
    To fix that we will check if a touch device exists and supply the
    coordinates from that (in the case where there is no pointer device).
    
    @fix
    
    Signed-off-by: Chris Michael <[email protected]>
---
 src/lib/elput/elput_input.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/lib/elput/elput_input.c b/src/lib/elput/elput_input.c
index 1dde85a..706e4f7 100644
--- a/src/lib/elput/elput_input.c
+++ b/src/lib/elput/elput_input.c
@@ -425,6 +425,16 @@ elput_input_pointer_xy_get(Elput_Manager *manager, const 
char *seat, int *x, int
           continue;
         if (x) *x = eseat->ptr->x;
         if (y) *y = eseat->ptr->y;
+        return;
+     }
+
+   EINA_LIST_FOREACH(manager->input.seats, l, eseat)
+     {
+        if (!eseat->touch) continue;
+        if ((eseat->name) && (strcmp(eseat->name, seat)))
+          continue;
+        if (x) *x = eseat->touch->x;
+        if (y) *y = eseat->touch->y;
         break;
      }
 }

-- 


Reply via email to