[Pkg-e-commits] [SCM] Core abstraction layer for enlightenment DR 0.17 branch, upstream-vcs, updated. fbccf3b6cae3945e0db311041de91f346fccbae1

urandom urandom at alioth.debian.org
Mon Jun 9 12:38:19 UTC 2008


The following commit has been merged in the upstream-vcs branch:
commit 037461241510ca4f3037b4256226b8d4c0e8cae0
Author: urandom <urandom>
Date:   Fri May 30 22:30:57 2008 +0000

    ecore_x:
      * in ecore_x_pointer_xy_get, fill x & y with '-1', if the pointer is not in the same screen as the given window
      * add 'same_screen' and 'root_win' information for the XEvents dealing with keyboard and mouse events
    
    e:
      * make sure e_manager_current_get returns the correct manager for the current screen
      * fix various modules to use the correct window, when dealing with events

diff --git a/src/lib/ecore_x/Ecore_X.h b/src/lib/ecore_x/Ecore_X.h
index 8ee23ca..b09dbd8 100644
--- a/src/lib/ecore_x/Ecore_X.h
+++ b/src/lib/ecore_x/Ecore_X.h
@@ -298,8 +298,10 @@ struct _Ecore_X_Event_Key_Down
    char   *keysymbol;
    char   *key_compose;
    int     modifiers;
+   int	   same_screen;
    Ecore_X_Window  win;
    Ecore_X_Window  event_win;
+   Ecore_X_Window  root_win;
    Ecore_X_Time    time;
 };
 
@@ -309,8 +311,10 @@ struct _Ecore_X_Event_Key_Up
    char   *keysymbol;
    char   *key_compose;
    int     modifiers;
+   int	   same_screen;
    Ecore_X_Window  win;
    Ecore_X_Window  event_win;
+   Ecore_X_Window  root_win;
    Ecore_X_Time    time;
 };
 
@@ -319,11 +323,13 @@ struct _Ecore_X_Event_Mouse_Button_Down
    int     button;
    int     modifiers;
    int     x, y;
+   int	   same_screen;
    struct {
       int  x, y;
    } root;
    Ecore_X_Window  win;
    Ecore_X_Window  event_win;
+   Ecore_X_Window  root_win;
    Ecore_X_Time    time;
    unsigned int    double_click : 1;
    unsigned int    triple_click : 1;
@@ -334,11 +340,13 @@ struct _Ecore_X_Event_Mouse_Button_Up
    int     button;
    int     modifiers;
    int     x, y;
+   int	   same_screen;
    struct {
       int  x, y;
    } root;
    Ecore_X_Window  win;
    Ecore_X_Window  event_win;
+   Ecore_X_Window  root_win;
    Ecore_X_Time    time;
    unsigned int    double_click : 1;
    unsigned int    triple_click : 1;
@@ -348,11 +356,13 @@ struct _Ecore_X_Event_Mouse_Move
 {
    int     modifiers;
    int     x, y;
+   int	   same_screen;
    struct {
       int  x, y;
    } root;
    Ecore_X_Window  win;
    Ecore_X_Window  event_win;
+   Ecore_X_Window  root_win;
    Ecore_X_Time    time;
 };
 
@@ -360,13 +370,15 @@ struct _Ecore_X_Event_Mouse_In
 {
    int                  modifiers;
    int                  x, y;
+   int			same_screen;
    struct {
       int  x, y;
    } root;
    Ecore_X_Window               win;
    Ecore_X_Window               event_win;
-   Ecore_X_Event_Mode   mode;
-   Ecore_X_Event_Detail detail;
+   Ecore_X_Window		root_win;
+   Ecore_X_Event_Mode		mode;
+   Ecore_X_Event_Detail		detail;
    Ecore_X_Time                 time;
 };
 
@@ -374,13 +386,15 @@ struct _Ecore_X_Event_Mouse_Out
 {
    int                  modifiers;
    int                  x, y;
+   int			same_screen;
    struct {
       int  x, y;
    } root;
    Ecore_X_Window               win;
    Ecore_X_Window               event_win;
-   Ecore_X_Event_Mode   mode;
-   Ecore_X_Event_Detail detail;
+   Ecore_X_Window		root_win;
+   Ecore_X_Event_Mode		mode;
+   Ecore_X_Event_Detail		detail;
    Ecore_X_Time                 time;
 };
 
@@ -390,6 +404,7 @@ struct _Ecore_X_Event_Mouse_Wheel
    int z; /* ...,-2,-1 = down, 1,2,... = up */
    int modifiers;
    int x, y;
+   int same_screen;
 
    struct {
       int x, y;
@@ -397,6 +412,7 @@ struct _Ecore_X_Event_Mouse_Wheel
 
    Ecore_X_Window win;
    Ecore_X_Window event_win;
+   Ecore_X_Window root_win;
    Ecore_X_Time   time;
 };
 
diff --git a/src/lib/ecore_x/ecore_x.c b/src/lib/ecore_x/ecore_x.c
index afa931c..fbfde45 100644
--- a/src/lib/ecore_x/ecore_x.c
+++ b/src/lib/ecore_x/ecore_x.c
@@ -1486,10 +1486,11 @@ EAPI void
 ecore_x_pointer_xy_get(Ecore_X_Window win, int *x, int *y)
 {
    Window rwin, cwin;
-   int rx, ry, wx, wy;
+   int rx, ry, wx, wy, ret;
    unsigned int mask;
    
-   XQueryPointer(_ecore_x_disp, win, &rwin, &cwin, &rx, &ry, &wx, &wy, &mask);
+   ret = XQueryPointer(_ecore_x_disp, win, &rwin, &cwin, &rx, &ry, &wx, &wy, &mask);
+   if (!ret) wx = wy = -1;
    if (x) *x = wx;
    if (y) *y = wy;
 }
diff --git a/src/lib/ecore_x/ecore_x_events.c b/src/lib/ecore_x/ecore_x_events.c
index e51e5be..7d18a96 100644
--- a/src/lib/ecore_x/ecore_x_events.c
+++ b/src/lib/ecore_x/ecore_x_events.c
@@ -228,6 +228,8 @@ _ecore_x_event_handle_key_press(XEvent *xevent)
    e->event_win = xevent->xkey.window;
    e->time = xevent->xkey.time;
    e->modifiers = xevent->xkey.state;
+   e->same_screen = xevent->xkey.same_screen;
+   e->root_win = xevent->xkey.root;
    _ecore_x_event_last_time = e->time;
    ecore_event_add(ECORE_X_EVENT_KEY_DOWN, e, _ecore_x_event_free_key_down, NULL);
 }
@@ -279,6 +281,8 @@ _ecore_x_event_handle_key_release(XEvent *xevent)
    e->event_win = xevent->xkey.window;
    e->time = xevent->xkey.time;
    e->modifiers = xevent->xkey.state;
+   e->same_screen = xevent->xkey.same_screen;
+   e->root_win = xevent->xkey.root;
    _ecore_x_event_last_time = e->time;
    ecore_event_add(ECORE_X_EVENT_KEY_UP, e, _ecore_x_event_free_key_up, NULL);
 }
@@ -331,6 +335,8 @@ _ecore_x_event_handle_button_press(XEvent *xevent)
 	  e->win = xevent->xbutton.window;
 	
 	e->event_win = xevent->xbutton.window;
+	e->same_screen = xevent->xbutton.same_screen;
+	e->root_win = xevent->xbutton.root;
 	e->time = xevent->xbutton.time;
 	_ecore_x_event_last_time = e->time;
 	_ecore_x_event_last_win = e->win;
@@ -374,6 +380,8 @@ _ecore_x_event_handle_button_press(XEvent *xevent)
 	     e->root.y = xevent->xbutton.y_root;
 	     if (xevent->xbutton.subwindow) e->win = xevent->xbutton.subwindow;
 	     else e->win = xevent->xbutton.window;
+	     e->same_screen = xevent->xbutton.same_screen;
+	     e->root_win = xevent->xbutton.root;
 	     e->event_win = xevent->xbutton.window;
 	     e->time = xevent->xbutton.time;
 	     _ecore_x_event_last_time = e->time;
@@ -405,6 +413,8 @@ _ecore_x_event_handle_button_press(XEvent *xevent)
 	     e->root.y = xevent->xbutton.y_root;
 	     if (xevent->xbutton.subwindow) e->win = xevent->xbutton.subwindow;
 	     else e->win = xevent->xbutton.window;
+	     e->same_screen = xevent->xbutton.same_screen;
+	     e->root_win = xevent->xbutton.root;
 	     e->event_win = xevent->xbutton.window;
 	     e->time = xevent->xbutton.time;
 	     if (e->win == e->event_win)
@@ -495,6 +505,8 @@ _ecore_x_event_handle_button_release(XEvent *xevent)
 	     e->root.y = xevent->xbutton.y_root;
 	     if (xevent->xbutton.subwindow) e->win = xevent->xbutton.subwindow;
 	     else e->win = xevent->xbutton.window;
+	     e->same_screen = xevent->xbutton.same_screen;
+	     e->root_win = xevent->xbutton.root;
 	     e->event_win = xevent->xbutton.window;
 	     e->time = xevent->xbutton.time;
 	     _ecore_x_event_last_time = e->time;
@@ -516,6 +528,8 @@ _ecore_x_event_handle_button_release(XEvent *xevent)
 	     e->root.y = xevent->xbutton.y_root;
 	     if (xevent->xbutton.subwindow) e->win = xevent->xbutton.subwindow;
 	     else e->win = xevent->xbutton.window;
+	     e->same_screen = xevent->xbutton.same_screen;
+	     e->root_win = xevent->xbutton.root;
 	     e->event_win = xevent->xbutton.window;
 	     e->time = xevent->xbutton.time;
              _ecore_x_mouse_up_count++;
@@ -561,6 +575,8 @@ _ecore_x_event_handle_motion_notify(XEvent *xevent)
    e->root.y = xevent->xmotion.y_root;
    if (xevent->xmotion.subwindow) e->win = xevent->xmotion.subwindow;
    else e->win = xevent->xmotion.window;
+   e->same_screen = xevent->xmotion.same_screen;
+   e->root_win = xevent->xmotion.root;
    e->event_win = xevent->xmotion.window;
    e->time = xevent->xmotion.time;
    _ecore_x_event_last_time = e->time;
@@ -589,6 +605,8 @@ _ecore_x_event_handle_enter_notify(XEvent *xevent)
 	e->root.y = xevent->xcrossing.y_root;
 	if (xevent->xcrossing.subwindow) e->win = xevent->xcrossing.subwindow;
 	else e->win = xevent->xcrossing.window;
+	e->same_screen = xevent->xcrossing.same_screen;
+	e->root_win = xevent->xcrossing.root;
 	e->event_win = xevent->xcrossing.window;
 	e->time = xevent->xcrossing.time;
 	_ecore_x_event_last_time = e->time;
@@ -609,6 +627,8 @@ _ecore_x_event_handle_enter_notify(XEvent *xevent)
 	e->root.y = xevent->xcrossing.y_root;
 	if (xevent->xcrossing.subwindow) e->win = xevent->xcrossing.subwindow;
 	else e->win = xevent->xcrossing.window;
+	e->same_screen = xevent->xcrossing.same_screen;
+	e->root_win = xevent->xcrossing.root;
 	e->event_win = xevent->xcrossing.window;
 	if      (xevent->xcrossing.mode == NotifyNormal) e->mode = ECORE_X_EVENT_MODE_NORMAL;
 	else if (xevent->xcrossing.mode == NotifyGrab)   e->mode = ECORE_X_EVENT_MODE_GRAB;
@@ -639,6 +659,8 @@ _ecore_x_event_handle_leave_notify(XEvent *xevent)
 	e->root.y = xevent->xcrossing.y_root;
 	if (xevent->xcrossing.subwindow) e->win = xevent->xcrossing.subwindow;
 	else e->win = xevent->xcrossing.window;
+	e->same_screen = xevent->xcrossing.same_screen;
+	e->root_win = xevent->xcrossing.root;
 	e->event_win = xevent->xcrossing.window;
 	e->time = xevent->xcrossing.time;
 	_ecore_x_event_last_time = e->time;
@@ -659,6 +681,8 @@ _ecore_x_event_handle_leave_notify(XEvent *xevent)
 	e->root.y = xevent->xcrossing.y_root;
 	if (xevent->xcrossing.subwindow) e->win = xevent->xcrossing.subwindow;
 	else e->win = xevent->xcrossing.window;
+	e->same_screen = xevent->xcrossing.same_screen;
+	e->root_win = xevent->xcrossing.root;
 	e->event_win = xevent->xcrossing.window;
 	if      (xevent->xcrossing.mode == NotifyNormal) e->mode = ECORE_X_EVENT_MODE_NORMAL;
 	else if (xevent->xcrossing.mode == NotifyGrab)   e->mode = ECORE_X_EVENT_MODE_GRAB;

-- 
Core abstraction layer for enlightenment DR 0.17



More information about the Pkg-e-commits mailing list