Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
#include "ecore_xcb_private.h"
|
2011-07-14 08:35:42 -07:00
|
|
|
//#include "Ecore_X_Atoms.h"
|
|
|
|
#include <langinfo.h>
|
|
|
|
#include <xcb/xcb_icccm.h>
|
|
|
|
#include <xcb/xcb_event.h>
|
|
|
|
# ifdef ECORE_XCB_DAMAGE
|
|
|
|
# include <xcb/damage.h>
|
|
|
|
# endif
|
|
|
|
# ifdef ECORE_XCB_RANDR
|
|
|
|
# include <xcb/randr.h>
|
|
|
|
# endif
|
|
|
|
# ifdef ECORE_XCB_SCREENSAVER
|
|
|
|
# include <xcb/screensaver.h>
|
|
|
|
# endif
|
|
|
|
# ifdef ECORE_XCB_SYNC
|
|
|
|
# include <xcb/sync.h>
|
|
|
|
# endif
|
|
|
|
# ifdef ECORE_XCB_XFIXES
|
|
|
|
# include <xcb/xfixes.h>
|
|
|
|
# endif
|
2011-11-04 05:44:28 -07:00
|
|
|
# ifdef ECORE_XCB_XGESTURE
|
|
|
|
# include <xcb/gesture.h>
|
|
|
|
# endif
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
|
|
|
#ifndef CODESET
|
2011-07-14 08:35:42 -07:00
|
|
|
# define CODESET "INVALID"
|
|
|
|
#endif
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
typedef struct _Ecore_X_Mouse_Down_Info
|
2011-08-30 12:22:51 -07:00
|
|
|
{
|
|
|
|
EINA_INLIST;
|
2011-10-20 22:40:59 -07:00
|
|
|
int dev;
|
|
|
|
Ecore_X_Time last_time;
|
|
|
|
Ecore_X_Time last_last_time;
|
2011-08-30 12:22:51 -07:00
|
|
|
Ecore_X_Window last_win;
|
|
|
|
Ecore_X_Window last_last_win;
|
|
|
|
Ecore_X_Window last_event_win;
|
|
|
|
Ecore_X_Window last_last_event_win;
|
2011-10-20 22:40:59 -07:00
|
|
|
Eina_Bool did_double : 1;
|
|
|
|
Eina_Bool did_triple : 1;
|
2011-08-30 12:22:51 -07:00
|
|
|
} Ecore_X_Mouse_Down_Info;
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
/* local function prototypes */
|
2011-10-20 22:40:59 -07:00
|
|
|
static void _ecore_xcb_event_handle_any_event(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_key_press(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_key_release(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_button_press(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_button_release(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_motion_notify(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_enter_notify(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_leave_notify(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_keymap_notify(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_focus_in(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_focus_out(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_expose(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_graphics_exposure(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_visibility_notify(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_create_notify(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_destroy_notify(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_map_notify(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_unmap_notify(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_map_request(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_reparent_notify(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_configure_notify(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_configure_request(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_gravity_notify(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_resize_request(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_circulate_notify(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_circulate_request(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_property_notify(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_selection_clear(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_selection_request(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_selection_notify(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_colormap_notify(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_client_message(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_mapping_notify(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_damage_notify(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_randr_change(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_randr_notify(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_randr_crtc_change(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_randr_output_change(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_randr_output_property_change(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_screensaver_notify(xcb_generic_event_t *event);
|
2011-11-04 05:44:28 -07:00
|
|
|
#ifdef ECORE_XCB_XGESTURE
|
|
|
|
static void _ecore_xcb_event_handle_gesture_notify_flick(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_gesture_notify_pan(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_gesture_notify_pinchrotation(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_gesture_notify_tap(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_gesture_notify_tapnhold(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_gesture_notify_hold(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_gesture_notify_group(xcb_generic_event_t *event);
|
|
|
|
#endif
|
2011-07-14 08:35:42 -07:00
|
|
|
#ifdef ECORE_XCB_SHAPE
|
2011-10-20 22:40:59 -07:00
|
|
|
static void _ecore_xcb_event_handle_shape_change(xcb_generic_event_t *event);
|
2011-07-14 08:35:42 -07:00
|
|
|
#endif
|
2011-10-20 22:40:59 -07:00
|
|
|
static void _ecore_xcb_event_handle_sync_counter(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_sync_alarm(xcb_generic_event_t *event);
|
2012-11-25 01:55:32 -08:00
|
|
|
static void _ecore_xcb_event_handle_xfixes_selection_notify(xcb_generic_event_t *event EINA_UNUSED);
|
2011-10-20 22:40:59 -07:00
|
|
|
static void _ecore_xcb_event_handle_xfixes_cursor_notify(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_generic_event(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_handle_input_event(xcb_generic_event_t *event);
|
|
|
|
|
|
|
|
static void _ecore_xcb_event_key_press(xcb_generic_event_t *event);
|
|
|
|
static void _ecore_xcb_event_key_release(xcb_generic_event_t *event);
|
2012-11-25 01:55:32 -08:00
|
|
|
static void _ecore_xcb_event_mouse_move_free(void *data EINA_UNUSED,
|
2011-10-20 22:40:59 -07:00
|
|
|
void *event);
|
|
|
|
static Ecore_X_Event_Mode _ecore_xcb_event_mode_get(uint8_t mode);
|
|
|
|
static Ecore_X_Event_Detail _ecore_xcb_event_detail_get(uint8_t detail);
|
2012-11-25 01:55:32 -08:00
|
|
|
static void _ecore_xcb_event_xdnd_enter_free(void *data EINA_UNUSED,
|
2011-10-20 22:40:59 -07:00
|
|
|
void *event);
|
2012-11-25 01:55:32 -08:00
|
|
|
static void _ecore_xcb_event_selection_notify_free(void *data EINA_UNUSED,
|
2011-10-20 22:40:59 -07:00
|
|
|
void *event);
|
|
|
|
static void _ecore_xcb_event_generic_event_free(void *data,
|
|
|
|
void *event);
|
|
|
|
static void _ecore_xcb_event_mouse_down_info_clear(void);
|
2011-08-30 12:22:51 -07:00
|
|
|
static Ecore_X_Mouse_Down_Info *_ecore_xcb_event_mouse_down_info_get(int dev);
|
2011-07-14 08:35:42 -07:00
|
|
|
|
|
|
|
/* local variables */
|
|
|
|
static Eina_Bool _ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
2011-09-20 00:17:55 -07:00
|
|
|
//static Ecore_Event *_ecore_xcb_event_last_mouse_move_event = NULL;
|
2011-08-30 12:22:51 -07:00
|
|
|
static Eina_Inlist *_ecore_xcb_mouse_down_info_list = NULL;
|
|
|
|
static Ecore_X_Time _ecore_xcb_event_last_time;
|
2011-07-14 08:35:42 -07:00
|
|
|
static Ecore_X_Window _ecore_xcb_event_last_window = 0;
|
|
|
|
|
|
|
|
/* public variables */
|
|
|
|
int16_t _ecore_xcb_event_last_root_x = 0;
|
|
|
|
int16_t _ecore_xcb_event_last_root_y = 0;
|
|
|
|
|
|
|
|
EAPI int ECORE_X_EVENT_ANY = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_MOUSE_IN = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_MOUSE_OUT = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_WINDOW_FOCUS_IN = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_WINDOW_FOCUS_OUT = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_WINDOW_KEYMAP = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_WINDOW_DAMAGE = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_WINDOW_VISIBILITY_CHANGE = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_WINDOW_CREATE = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_WINDOW_DESTROY = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_WINDOW_HIDE = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_WINDOW_SHOW = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_WINDOW_SHOW_REQUEST = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_WINDOW_REPARENT = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_WINDOW_CONFIGURE = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_WINDOW_CONFIGURE_REQUEST = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_WINDOW_GRAVITY = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_WINDOW_RESIZE_REQUEST = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_WINDOW_STACK = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_WINDOW_STACK_REQUEST = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_WINDOW_PROPERTY = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_WINDOW_COLORMAP = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_WINDOW_MAPPING = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_MAPPING_CHANGE = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_SELECTION_CLEAR = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_SELECTION_REQUEST = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_SELECTION_NOTIFY = 0;
|
2011-08-08 07:36:02 -07:00
|
|
|
EAPI int ECORE_X_EVENT_FIXES_SELECTION_NOTIFY = 0;
|
2011-07-14 08:35:42 -07:00
|
|
|
EAPI int ECORE_X_EVENT_CLIENT_MESSAGE = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_WINDOW_SHAPE = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_SCREENSAVER_NOTIFY = 0;
|
2011-11-04 05:44:28 -07:00
|
|
|
EAPI int ECORE_X_EVENT_GESTURE_NOTIFY_FLICK = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_GESTURE_NOTIFY_PAN = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_GESTURE_NOTIFY_PINCHROTATION = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_GESTURE_NOTIFY_TAP = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_GESTURE_NOTIFY_TAPNHOLD = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_GESTURE_NOTIFY_HOLD = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_GESTURE_NOTIFY_GROUP = 0;
|
2011-07-14 08:35:42 -07:00
|
|
|
EAPI int ECORE_X_EVENT_SYNC_COUNTER = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_SYNC_ALARM = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_SCREEN_CHANGE = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_DAMAGE_NOTIFY = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_RANDR_CRTC_CHANGE = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_RANDR_OUTPUT_CHANGE = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_RANDR_OUTPUT_PROPERTY_NOTIFY = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_WINDOW_DELETE_REQUEST = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_WINDOW_MOVE_RESIZE_REQUEST = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_WINDOW_STATE_REQUEST = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_FRAME_EXTENTS_REQUEST = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_PING = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_DESKTOP_CHANGE = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_STARTUP_SEQUENCE_NEW = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_STARTUP_SEQUENCE_CHANGE = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE = 0;
|
2012-08-18 04:29:47 -07:00
|
|
|
EAPI int ECORE_X_EVENT_XKB_STATE_NOTIFY = 0;
|
|
|
|
EAPI int ECORE_X_EVENT_XKB_NEWKBD_NOTIFY = 0;
|
2011-07-14 08:35:42 -07:00
|
|
|
EAPI int ECORE_X_EVENT_GENERIC = 0;
|
|
|
|
|
2012-10-03 22:56:59 -07:00
|
|
|
EAPI int ECORE_X_RAW_BUTTON_PRESS = 0;
|
|
|
|
EAPI int ECORE_X_RAW_BUTTON_RELEASE = 0;
|
|
|
|
EAPI int ECORE_X_RAW_MOTION = 0;
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
void
|
|
|
|
_ecore_xcb_events_init(void)
|
2009-04-19 01:37:50 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
2009-04-19 01:37:50 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!ECORE_X_EVENT_ANY)
|
2009-04-19 01:37:50 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
ECORE_X_EVENT_ANY = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_MOUSE_IN = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_MOUSE_OUT = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_WINDOW_FOCUS_IN = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_WINDOW_FOCUS_OUT = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_WINDOW_KEYMAP = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_WINDOW_DAMAGE = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_WINDOW_VISIBILITY_CHANGE = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_WINDOW_CREATE = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_WINDOW_DESTROY = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_WINDOW_HIDE = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_WINDOW_SHOW = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_WINDOW_SHOW_REQUEST = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_WINDOW_REPARENT = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_WINDOW_CONFIGURE = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_WINDOW_CONFIGURE_REQUEST = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_WINDOW_GRAVITY = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_WINDOW_RESIZE_REQUEST = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_WINDOW_STACK = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_WINDOW_STACK_REQUEST = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_WINDOW_PROPERTY = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_WINDOW_COLORMAP = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_WINDOW_MAPPING = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_MAPPING_CHANGE = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_SELECTION_CLEAR = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_SELECTION_REQUEST = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_SELECTION_NOTIFY = ecore_event_type_new();
|
2011-08-08 11:05:07 -07:00
|
|
|
ECORE_X_EVENT_FIXES_SELECTION_NOTIFY = ecore_event_type_new();
|
2011-07-14 08:35:42 -07:00
|
|
|
ECORE_X_EVENT_CLIENT_MESSAGE = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_WINDOW_SHAPE = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_SCREENSAVER_NOTIFY = ecore_event_type_new();
|
2011-11-04 05:44:28 -07:00
|
|
|
ECORE_X_EVENT_GESTURE_NOTIFY_FLICK = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_GESTURE_NOTIFY_PAN = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_GESTURE_NOTIFY_PINCHROTATION = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_GESTURE_NOTIFY_TAP = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_GESTURE_NOTIFY_TAPNHOLD = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_GESTURE_NOTIFY_HOLD = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_GESTURE_NOTIFY_GROUP = ecore_event_type_new();
|
2011-07-14 08:35:42 -07:00
|
|
|
ECORE_X_EVENT_SYNC_COUNTER = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_SYNC_ALARM = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_SCREEN_CHANGE = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_RANDR_CRTC_CHANGE = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_RANDR_OUTPUT_CHANGE = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_RANDR_OUTPUT_PROPERTY_NOTIFY = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_DAMAGE_NOTIFY = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_WINDOW_DELETE_REQUEST = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_DESKTOP_CHANGE = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_WINDOW_MOVE_RESIZE_REQUEST = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_WINDOW_STATE_REQUEST = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_FRAME_EXTENTS_REQUEST = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_PING = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_STARTUP_SEQUENCE_NEW = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_STARTUP_SEQUENCE_CHANGE = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE = ecore_event_type_new();
|
2012-08-18 04:29:47 -07:00
|
|
|
ECORE_X_EVENT_XKB_STATE_NOTIFY = ecore_event_type_new();
|
|
|
|
ECORE_X_EVENT_XKB_NEWKBD_NOTIFY = ecore_event_type_new();
|
2011-07-14 08:35:42 -07:00
|
|
|
ECORE_X_EVENT_GENERIC = ecore_event_type_new();
|
2012-10-03 22:56:59 -07:00
|
|
|
|
|
|
|
ECORE_X_RAW_BUTTON_PRESS = ecore_event_type_new();
|
|
|
|
ECORE_X_RAW_BUTTON_RELEASE = ecore_event_type_new();
|
|
|
|
ECORE_X_RAW_MOTION = ecore_event_type_new();
|
2009-04-19 01:37:50 -07:00
|
|
|
}
|
2011-07-14 08:35:42 -07:00
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
void
|
|
|
|
_ecore_xcb_events_shutdown(void)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
|
|
|
2011-08-30 12:22:51 -07:00
|
|
|
_ecore_xcb_event_mouse_down_info_clear();
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
2011-10-20 22:40:59 -07:00
|
|
|
// if (_ecore_xcb_event_last_mouse_move_event)
|
2011-09-20 00:17:55 -07:00
|
|
|
// {
|
|
|
|
// ecore_event_del(_ecore_xcb_event_last_mouse_move_event);
|
|
|
|
// _ecore_xcb_event_last_mouse_move_event = NULL;
|
|
|
|
// }
|
2011-07-14 08:35:42 -07:00
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
void
|
|
|
|
_ecore_xcb_events_handle(xcb_generic_event_t *ev)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
uint8_t response = 0;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-08-30 12:22:51 -07:00
|
|
|
// LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
2011-09-20 02:12:02 -07:00
|
|
|
CHECK_XCB_CONN;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
/* strip highest bit (set if event is generated) */
|
|
|
|
response = (ev->response_type & ~0x80);
|
2011-10-20 22:40:59 -07:00
|
|
|
if (response == 0)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
xcb_generic_error_t *err;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
err = (xcb_generic_error_t *)ev;
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
/* NB: There is no way to check access of destroyed windows,
|
|
|
|
* so trap those cases and ignore. We also ignore BadValue from
|
|
|
|
* xcb_grab/ungrab_button (happens when we are using any_mod)
|
2011-07-14 08:35:42 -07:00
|
|
|
* and a few others */
|
2011-08-01 18:32:10 -07:00
|
|
|
if (err->error_code == XCB_WINDOW) return;
|
2011-10-20 22:40:59 -07:00
|
|
|
else if (err->error_code == XCB_MATCH)
|
2011-08-01 18:32:10 -07:00
|
|
|
{
|
2011-10-20 22:40:59 -07:00
|
|
|
if ((err->major_code == XCB_SET_INPUT_FOCUS) ||
|
2011-08-01 18:32:10 -07:00
|
|
|
(err->major_code == XCB_CONFIGURE_WINDOW))
|
|
|
|
return;
|
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else if (err->error_code == XCB_VALUE)
|
2011-08-01 18:32:10 -07:00
|
|
|
{
|
2011-10-20 22:40:59 -07:00
|
|
|
if ((err->major_code == XCB_KILL_CLIENT) ||
|
|
|
|
(err->major_code == XCB_GRAB_BUTTON) ||
|
2011-08-01 18:32:10 -07:00
|
|
|
(err->major_code == XCB_UNGRAB_BUTTON))
|
|
|
|
return;
|
|
|
|
}
|
2011-09-20 00:17:55 -07:00
|
|
|
WRN("Got Event Error:");
|
|
|
|
WRN("\tMajor Code: %d", err->major_code);
|
|
|
|
WRN("\tMinor Code: %d", err->minor_code);
|
|
|
|
WRN("\tRequest: %s", xcb_event_get_request_label(err->major_code));
|
|
|
|
WRN("\tError: %s", xcb_event_get_error_label(err->error_code));
|
2011-09-23 22:33:29 -07:00
|
|
|
if (err->error_code == 2) // bad value
|
2011-09-20 00:17:55 -07:00
|
|
|
WRN("\tValue: %d", ((xcb_value_error_t *)err)->bad_value);
|
2011-09-23 22:33:29 -07:00
|
|
|
else if (err->error_code == 8) // bad match
|
2011-09-20 00:17:55 -07:00
|
|
|
WRN("\tMatch: %d", ((xcb_match_error_t *)err)->bad_value);
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
if (err->major_code == XCB_SEND_EVENT)
|
2011-09-20 00:17:55 -07:00
|
|
|
{
|
|
|
|
WRN("\tSend Event Error");
|
|
|
|
WRN("\t\tSeq: %d", ev->sequence);
|
|
|
|
WRN("\t\tFull Seq: %d", ev->full_sequence);
|
|
|
|
WRN("\t\tType: %d", ev->response_type);
|
|
|
|
}
|
2011-07-14 08:35:42 -07:00
|
|
|
/* if (err->major_code == 148) */
|
|
|
|
/* { */
|
|
|
|
/* printf("GOT 148 Error\n"); */
|
|
|
|
/* } */
|
|
|
|
return;
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-25 19:31:13 -07:00
|
|
|
/* FIXME: Filter event for xim when xcb supports xim */
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_handle_any_event(ev);
|
|
|
|
|
|
|
|
if (response == XCB_KEY_PRESS)
|
|
|
|
_ecore_xcb_event_handle_key_press(ev);
|
|
|
|
else if (response == XCB_KEY_RELEASE)
|
|
|
|
_ecore_xcb_event_handle_key_release(ev);
|
2011-10-20 22:40:59 -07:00
|
|
|
else if (response == XCB_BUTTON_PRESS)
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_handle_button_press(ev);
|
|
|
|
else if (response == XCB_BUTTON_RELEASE)
|
|
|
|
_ecore_xcb_event_handle_button_release(ev);
|
|
|
|
else if (response == XCB_MOTION_NOTIFY)
|
|
|
|
_ecore_xcb_event_handle_motion_notify(ev);
|
2011-10-20 22:40:59 -07:00
|
|
|
else if (response == XCB_ENTER_NOTIFY)
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_handle_enter_notify(ev);
|
2011-10-20 22:40:59 -07:00
|
|
|
else if (response == XCB_LEAVE_NOTIFY)
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_handle_leave_notify(ev);
|
|
|
|
else if (response == XCB_KEYMAP_NOTIFY)
|
|
|
|
_ecore_xcb_event_handle_keymap_notify(ev);
|
2011-10-20 22:40:59 -07:00
|
|
|
else if (response == XCB_FOCUS_IN)
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_handle_focus_in(ev);
|
2011-10-20 22:40:59 -07:00
|
|
|
else if (response == XCB_FOCUS_OUT)
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_handle_focus_out(ev);
|
|
|
|
else if (response == XCB_EXPOSE)
|
|
|
|
_ecore_xcb_event_handle_expose(ev);
|
|
|
|
else if (response == XCB_GRAPHICS_EXPOSURE)
|
|
|
|
_ecore_xcb_event_handle_graphics_exposure(ev);
|
|
|
|
else if (response == XCB_VISIBILITY_NOTIFY)
|
|
|
|
_ecore_xcb_event_handle_visibility_notify(ev);
|
|
|
|
else if (response == XCB_CREATE_NOTIFY)
|
|
|
|
_ecore_xcb_event_handle_create_notify(ev);
|
|
|
|
else if (response == XCB_DESTROY_NOTIFY)
|
|
|
|
_ecore_xcb_event_handle_destroy_notify(ev);
|
2011-10-20 22:40:59 -07:00
|
|
|
else if (response == XCB_MAP_NOTIFY)
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_handle_map_notify(ev);
|
2011-10-20 22:40:59 -07:00
|
|
|
else if (response == XCB_UNMAP_NOTIFY)
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_handle_unmap_notify(ev);
|
|
|
|
else if (response == XCB_MAP_REQUEST)
|
|
|
|
_ecore_xcb_event_handle_map_request(ev);
|
|
|
|
else if (response == XCB_REPARENT_NOTIFY)
|
|
|
|
_ecore_xcb_event_handle_reparent_notify(ev);
|
2011-10-20 22:40:59 -07:00
|
|
|
else if (response == XCB_CONFIGURE_NOTIFY)
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_handle_configure_notify(ev);
|
2011-10-20 22:40:59 -07:00
|
|
|
else if (response == XCB_CONFIGURE_REQUEST)
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_handle_configure_request(ev);
|
|
|
|
else if (response == XCB_GRAVITY_NOTIFY)
|
|
|
|
_ecore_xcb_event_handle_gravity_notify(ev);
|
|
|
|
else if (response == XCB_RESIZE_REQUEST)
|
|
|
|
_ecore_xcb_event_handle_resize_request(ev);
|
|
|
|
else if (response == XCB_CIRCULATE_NOTIFY)
|
|
|
|
_ecore_xcb_event_handle_circulate_notify(ev);
|
|
|
|
else if (response == XCB_CIRCULATE_REQUEST)
|
|
|
|
_ecore_xcb_event_handle_circulate_request(ev);
|
|
|
|
else if (response == XCB_PROPERTY_NOTIFY)
|
|
|
|
_ecore_xcb_event_handle_property_notify(ev);
|
|
|
|
else if (response == XCB_SELECTION_CLEAR)
|
|
|
|
_ecore_xcb_event_handle_selection_clear(ev);
|
|
|
|
else if (response == XCB_SELECTION_REQUEST)
|
|
|
|
_ecore_xcb_event_handle_selection_request(ev);
|
|
|
|
else if (response == XCB_SELECTION_NOTIFY)
|
|
|
|
_ecore_xcb_event_handle_selection_notify(ev);
|
|
|
|
else if (response == XCB_COLORMAP_NOTIFY)
|
|
|
|
_ecore_xcb_event_handle_colormap_notify(ev);
|
2011-10-20 22:40:59 -07:00
|
|
|
else if (response == XCB_CLIENT_MESSAGE)
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_handle_client_message(ev);
|
2011-10-20 22:40:59 -07:00
|
|
|
else if (response == XCB_MAPPING_NOTIFY)
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_handle_mapping_notify(ev);
|
|
|
|
else if (response == 35) /* GenericEvent == 35 */
|
|
|
|
_ecore_xcb_event_handle_generic_event(ev);
|
|
|
|
#ifdef ECORE_XCB_DAMAGE
|
2011-10-20 22:40:59 -07:00
|
|
|
else if ((_ecore_xcb_event_damage >= 0) &&
|
2011-08-08 11:05:07 -07:00
|
|
|
(response == (_ecore_xcb_event_damage + XCB_DAMAGE_NOTIFY)))
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_handle_damage_notify(ev);
|
|
|
|
#endif
|
|
|
|
#ifdef ECORE_XCB_RANDR
|
2011-10-20 22:40:59 -07:00
|
|
|
else if ((_ecore_xcb_event_randr >= 0) &&
|
|
|
|
(response ==
|
|
|
|
_ecore_xcb_event_randr + XCB_RANDR_SCREEN_CHANGE_NOTIFY))
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_handle_randr_change(ev);
|
2011-10-20 22:40:59 -07:00
|
|
|
else if ((_ecore_xcb_event_randr >= 0) &&
|
2011-07-14 08:35:42 -07:00
|
|
|
(response == (_ecore_xcb_event_randr + XCB_RANDR_NOTIFY)))
|
|
|
|
_ecore_xcb_event_handle_randr_notify(ev);
|
|
|
|
#endif
|
|
|
|
#ifdef ECORE_XCB_SCREENSAVER
|
2011-10-20 22:40:59 -07:00
|
|
|
else if ((_ecore_xcb_event_screensaver >= 0) &&
|
|
|
|
(response ==
|
|
|
|
_ecore_xcb_event_screensaver + XCB_SCREENSAVER_NOTIFY))
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_handle_screensaver_notify(ev);
|
|
|
|
#endif
|
2011-11-04 05:44:28 -07:00
|
|
|
#ifdef ECORE_XCB_XGESTURE
|
|
|
|
else if ((_ecore_xcb_event_gesture >= 0) &&
|
|
|
|
(response ==
|
|
|
|
_ecore_xcb_event_gesture + XCB_GESTURE_NOTIFY_FLICK))
|
|
|
|
_ecore_xcb_event_handle_gesture_notify_flick(ev);
|
|
|
|
else if ((_ecore_xcb_event_gesture >= 0) &&
|
|
|
|
(response ==
|
|
|
|
_ecore_xcb_event_gesture + XCB_GESTURE_NOTIFY_PAN))
|
|
|
|
_ecore_xcb_event_handle_gesture_notify_pan(ev);
|
|
|
|
else if ((_ecore_xcb_event_gesture >= 0) &&
|
|
|
|
(response ==
|
|
|
|
_ecore_xcb_event_gesture + XCB_GESTURE_NOTIFY_PINCH_ROTATION))
|
|
|
|
_ecore_xcb_event_handle_gesture_notify_pinchrotation(ev);
|
|
|
|
else if ((_ecore_xcb_event_gesture >= 0) &&
|
|
|
|
(response ==
|
|
|
|
_ecore_xcb_event_gesture + XCB_GESTURE_NOTIFY_TAP))
|
|
|
|
_ecore_xcb_event_handle_gesture_notify_tap(ev);
|
|
|
|
else if ((_ecore_xcb_event_gesture >= 0) &&
|
|
|
|
(response ==
|
|
|
|
_ecore_xcb_event_gesture + XCB_GESTURE_NOTIFY_TAP_N_HOLD))
|
|
|
|
_ecore_xcb_event_handle_gesture_notify_tapnhold(ev);
|
|
|
|
else if ((_ecore_xcb_event_gesture >= 0) &&
|
|
|
|
(response ==
|
|
|
|
_ecore_xcb_event_gesture + XCB_GESTURE_NOTIFY_HOLD))
|
|
|
|
_ecore_xcb_event_handle_gesture_notify_hold(ev);
|
|
|
|
else if ((_ecore_xcb_event_gesture >= 0) &&
|
|
|
|
(response ==
|
|
|
|
_ecore_xcb_event_gesture + XCB_GESTURE_NOTIFY_GROUP))
|
|
|
|
_ecore_xcb_event_handle_gesture_notify_group(ev);
|
|
|
|
#endif
|
2011-07-14 08:35:42 -07:00
|
|
|
#ifdef ECORE_XCB_SHAPE
|
2011-10-20 22:40:59 -07:00
|
|
|
else if ((_ecore_xcb_event_shape >= 0) &&
|
2011-08-08 11:05:07 -07:00
|
|
|
(response == (_ecore_xcb_event_shape + XCB_SHAPE_NOTIFY)))
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_handle_shape_change(ev);
|
|
|
|
#endif
|
|
|
|
#ifdef ECORE_XCB_SYNC
|
2011-10-20 22:40:59 -07:00
|
|
|
else if ((_ecore_xcb_event_sync >= 0) &&
|
2011-07-14 08:35:42 -07:00
|
|
|
(response == (_ecore_xcb_event_sync + XCB_SYNC_COUNTER_NOTIFY)))
|
|
|
|
_ecore_xcb_event_handle_sync_counter(ev);
|
2011-10-20 22:40:59 -07:00
|
|
|
else if ((_ecore_xcb_event_sync >= 0) &&
|
2011-07-14 08:35:42 -07:00
|
|
|
(response == (_ecore_xcb_event_sync + XCB_SYNC_ALARM_NOTIFY)))
|
|
|
|
_ecore_xcb_event_handle_sync_alarm(ev);
|
|
|
|
#endif
|
|
|
|
#ifdef ECORE_XCB_XFIXES
|
2011-10-20 22:40:59 -07:00
|
|
|
else if ((_ecore_xcb_event_xfixes >= 0) &&
|
|
|
|
(response ==
|
|
|
|
_ecore_xcb_event_xfixes + XCB_XFIXES_SELECTION_NOTIFY))
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_handle_xfixes_selection_notify(ev);
|
2011-10-20 22:40:59 -07:00
|
|
|
else if ((_ecore_xcb_event_xfixes >= 0) &&
|
2011-07-14 08:35:42 -07:00
|
|
|
(response == (_ecore_xcb_event_xfixes + XCB_XFIXES_CURSOR_NOTIFY)))
|
|
|
|
_ecore_xcb_event_handle_xfixes_cursor_notify(ev);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
Ecore_X_Time
|
|
|
|
_ecore_xcb_events_last_time_get(void)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
|
|
|
|
|
|
return _ecore_xcb_event_last_time;
|
|
|
|
}
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
EAPI void
|
|
|
|
ecore_x_event_mask_set(Ecore_X_Window win,
|
|
|
|
Ecore_X_Event_Mask mask)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
|
|
|
xcb_get_window_attributes_cookie_t cookie;
|
|
|
|
xcb_get_window_attributes_reply_t *reply;
|
2011-07-14 08:35:42 -07:00
|
|
|
uint32_t list;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
2011-09-20 02:12:02 -07:00
|
|
|
CHECK_XCB_CONN;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!win) win = ((xcb_screen_t *)_ecore_xcb_screen)->root;
|
|
|
|
cookie = xcb_get_window_attributes_unchecked(_ecore_xcb_conn, win);
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
reply = xcb_get_window_attributes_reply(_ecore_xcb_conn, cookie, NULL);
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!reply) return;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
list = (mask | reply->your_event_mask);
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
free(reply);
|
2011-10-20 22:40:59 -07:00
|
|
|
xcb_change_window_attributes(_ecore_xcb_conn, win,
|
2011-07-14 08:35:42 -07:00
|
|
|
XCB_CW_EVENT_MASK, &list);
|
2011-09-13 09:32:34 -07:00
|
|
|
// ecore_x_flush();
|
2011-07-14 08:35:42 -07:00
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
EAPI void
|
|
|
|
ecore_x_event_mask_unset(Ecore_X_Window win,
|
|
|
|
Ecore_X_Event_Mask mask)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
xcb_get_window_attributes_cookie_t cookie;
|
|
|
|
xcb_get_window_attributes_reply_t *reply;
|
|
|
|
uint32_t list;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
2011-09-20 02:12:02 -07:00
|
|
|
CHECK_XCB_CONN;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!win) win = ((xcb_screen_t *)_ecore_xcb_screen)->root;
|
|
|
|
cookie = xcb_get_window_attributes_unchecked(_ecore_xcb_conn, win);
|
|
|
|
reply = xcb_get_window_attributes_reply(_ecore_xcb_conn, cookie, NULL);
|
|
|
|
if (!reply) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
list = (reply->your_event_mask & ~mask);
|
|
|
|
free(reply);
|
2011-10-20 22:40:59 -07:00
|
|
|
xcb_change_window_attributes(_ecore_xcb_conn, win,
|
2011-07-14 08:35:42 -07:00
|
|
|
XCB_CW_EVENT_MASK, &list);
|
2011-09-13 09:32:34 -07:00
|
|
|
// ecore_x_flush();
|
2011-07-14 08:35:42 -07:00
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
unsigned int
|
|
|
|
_ecore_xcb_events_modifiers_get(unsigned int state)
|
2009-04-19 01:37:50 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
unsigned int modifiers = 0;
|
2009-04-19 01:37:50 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
2010-08-02 11:54:27 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
if (state & ECORE_X_MODIFIER_SHIFT)
|
|
|
|
modifiers |= ECORE_EVENT_MODIFIER_SHIFT;
|
2010-08-02 11:54:27 -07:00
|
|
|
if (state & ECORE_X_MODIFIER_CTRL)
|
2011-07-14 08:35:42 -07:00
|
|
|
modifiers |= ECORE_EVENT_MODIFIER_CTRL;
|
2010-08-02 11:54:27 -07:00
|
|
|
if (state & ECORE_X_MODIFIER_ALT)
|
2011-07-14 08:35:42 -07:00
|
|
|
modifiers |= ECORE_EVENT_MODIFIER_ALT;
|
2010-08-02 11:54:27 -07:00
|
|
|
if (state & ECORE_X_MODIFIER_WIN)
|
2011-07-14 08:35:42 -07:00
|
|
|
modifiers |= ECORE_EVENT_MODIFIER_WIN;
|
2012-06-28 00:30:32 -07:00
|
|
|
if (state & ECORE_X_MODIFIER_ALTGR)
|
|
|
|
modifiers |= ECORE_EVENT_MODIFIER_ALTGR;
|
2010-08-02 11:54:27 -07:00
|
|
|
if (state & ECORE_X_LOCK_SCROLL)
|
2011-07-14 08:35:42 -07:00
|
|
|
modifiers |= ECORE_EVENT_LOCK_SCROLL;
|
2010-08-02 11:54:27 -07:00
|
|
|
if (state & ECORE_X_LOCK_CAPS)
|
2011-07-14 08:35:42 -07:00
|
|
|
modifiers |= ECORE_EVENT_LOCK_CAPS;
|
|
|
|
if (state & ECORE_X_LOCK_NUM)
|
|
|
|
modifiers |= ECORE_EVENT_LOCK_NUM;
|
|
|
|
if (state & ECORE_X_LOCK_SHIFT)
|
|
|
|
modifiers |= ECORE_EVENT_LOCK_SHIFT;
|
2009-04-19 01:37:50 -07:00
|
|
|
|
|
|
|
return modifiers;
|
2011-07-14 08:35:42 -07:00
|
|
|
}
|
2009-04-19 01:37:50 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
/* local functions */
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_any_event(xcb_generic_event_t *event)
|
2009-04-19 01:37:50 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
xcb_generic_event_t *ev;
|
2009-04-19 01:37:50 -07:00
|
|
|
|
2011-08-30 12:22:51 -07:00
|
|
|
// LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
2009-04-19 01:37:50 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
ev = malloc(sizeof(xcb_generic_event_t));
|
|
|
|
if (!ev) return;
|
2009-04-19 01:37:50 -07:00
|
|
|
|
2009-04-16 10:29:00 -07:00
|
|
|
memcpy(ev, event, sizeof(xcb_generic_event_t));
|
|
|
|
ecore_event_add(ECORE_X_EVENT_ANY, ev, NULL, NULL);
|
2011-07-14 08:35:42 -07:00
|
|
|
}
|
2009-04-16 10:29:00 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_key_press(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_key_press(event);
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_key_release(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_key_release(event);
|
|
|
|
}
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_button_press(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
|
|
|
xcb_button_press_event_t *ev;
|
2011-07-14 08:35:42 -07:00
|
|
|
|
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
|
|
|
ev = (xcb_button_press_event_t *)event;
|
2011-10-20 22:40:59 -07:00
|
|
|
if ((ev->detail > 3) && (ev->detail < 8))
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
Ecore_Event_Mouse_Wheel *e;
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = malloc(sizeof(Ecore_Event_Mouse_Wheel)))) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
|
|
|
e->timestamp = ev->time;
|
2011-07-14 08:35:42 -07:00
|
|
|
e->modifiers = _ecore_xcb_events_modifiers_get(ev->state);
|
2011-10-20 22:40:59 -07:00
|
|
|
switch (ev->detail)
|
2010-08-02 11:54:27 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
case 4:
|
|
|
|
e->direction = 0;
|
|
|
|
e->z = -1;
|
|
|
|
break;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
case 5:
|
|
|
|
e->direction = 0;
|
|
|
|
e->z = 1;
|
|
|
|
break;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
case 6:
|
|
|
|
e->direction = 1;
|
|
|
|
e->z = -1;
|
|
|
|
break;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
case 7:
|
|
|
|
e->direction = 1;
|
|
|
|
e->z = 1;
|
|
|
|
break;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
default:
|
|
|
|
e->direction = 0;
|
|
|
|
e->z = 0;
|
|
|
|
break;
|
|
|
|
}
|
2010-08-02 11:54:27 -07:00
|
|
|
e->x = ev->event_x;
|
|
|
|
e->y = ev->event_y;
|
|
|
|
e->root.x = ev->root_x;
|
|
|
|
e->root.y = ev->root_y;
|
|
|
|
if (ev->child)
|
2011-07-14 08:35:42 -07:00
|
|
|
e->window = ev->child;
|
2010-08-02 11:54:27 -07:00
|
|
|
else
|
2011-07-14 08:35:42 -07:00
|
|
|
e->window = ev->event;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
|
|
|
e->event_window = ev->event;
|
|
|
|
e->same_screen = ev->same_screen;
|
|
|
|
e->root_window = ev->root;
|
2011-07-14 08:35:42 -07:00
|
|
|
|
2010-08-02 11:54:27 -07:00
|
|
|
_ecore_xcb_event_last_time = e->timestamp;
|
|
|
|
_ecore_xcb_event_last_window = e->window;
|
|
|
|
_ecore_xcb_event_last_root_x = e->root.x;
|
|
|
|
_ecore_xcb_event_last_root_y = e->root.y;
|
2011-07-14 08:35:42 -07:00
|
|
|
|
2010-08-02 11:54:27 -07:00
|
|
|
ecore_event_add(ECORE_EVENT_MOUSE_WHEEL, e, NULL, NULL);
|
2011-07-14 08:35:42 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
_ecore_xcb_window_grab_allow_events(ev->event, ev->child,
|
|
|
|
ECORE_EVENT_MOUSE_WHEEL,
|
2011-07-14 08:35:42 -07:00
|
|
|
e, ev->time);
|
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
Ecore_Event_Mouse_Button *e;
|
|
|
|
unsigned int child_win = 0;
|
|
|
|
|
|
|
|
child_win = (ev->child ? ev->child : ev->event);
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
_ecore_xcb_event_mouse_move(ev->time, ev->state,
|
|
|
|
ev->event_x, ev->event_y,
|
|
|
|
ev->root_x, ev->root_y,
|
|
|
|
ev->event, child_win,
|
|
|
|
ev->root, ev->same_screen,
|
|
|
|
0, 1, 1, 1.0, 0.0,
|
|
|
|
ev->event_x, ev->event_y,
|
2011-07-14 08:35:42 -07:00
|
|
|
ev->root_x, ev->root_y);
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
e = _ecore_xcb_event_mouse_button(ECORE_EVENT_MOUSE_BUTTON_DOWN,
|
|
|
|
ev->time,
|
|
|
|
ev->state, ev->detail,
|
|
|
|
ev->event_x, ev->event_y,
|
|
|
|
ev->root_x, ev->root_y, ev->event,
|
|
|
|
child_win,
|
|
|
|
ev->root, ev->same_screen,
|
|
|
|
0, 1, 1, 1.0, 0.0,
|
|
|
|
ev->event_x, ev->event_y,
|
2011-07-14 08:35:42 -07:00
|
|
|
ev->root_x, ev->root_y);
|
|
|
|
if (e)
|
2011-10-20 22:40:59 -07:00
|
|
|
_ecore_xcb_window_grab_allow_events(ev->event, ev->child,
|
|
|
|
ECORE_EVENT_MOUSE_BUTTON_DOWN,
|
2011-07-14 08:35:42 -07:00
|
|
|
e, ev->time);
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
}
|
2011-07-14 08:35:42 -07:00
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_button_release(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
|
|
|
xcb_button_release_event_t *ev;
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
ev = (xcb_button_release_event_t *)event;
|
2011-10-20 22:40:59 -07:00
|
|
|
if ((ev->detail <= 3) || (ev->detail > 7))
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-10-20 22:40:59 -07:00
|
|
|
_ecore_xcb_event_mouse_move(ev->time, ev->state,
|
|
|
|
ev->event_x, ev->event_y,
|
|
|
|
ev->root_x, ev->root_y,
|
|
|
|
ev->event,
|
|
|
|
(ev->child ? ev->child : ev->event),
|
|
|
|
ev->root, ev->same_screen,
|
|
|
|
0, 1, 1, 1.0, 0.0,
|
|
|
|
ev->event_x, ev->event_y,
|
2011-07-14 08:35:42 -07:00
|
|
|
ev->root_x, ev->root_y);
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
_ecore_xcb_event_mouse_button(ECORE_EVENT_MOUSE_BUTTON_UP, ev->time,
|
|
|
|
ev->state, ev->detail,
|
|
|
|
ev->event_x, ev->event_y, ev->root_x,
|
|
|
|
ev->root_y, ev->event,
|
|
|
|
(ev->child ? ev->child : ev->event),
|
|
|
|
ev->root, ev->same_screen,
|
|
|
|
0, 1, 1, 1.0, 0.0,
|
|
|
|
ev->event_x, ev->event_y,
|
2011-07-14 08:35:42 -07:00
|
|
|
ev->root_x, ev->root_y);
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
}
|
2011-07-14 08:35:42 -07:00
|
|
|
}
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_motion_notify(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
|
|
|
xcb_motion_notify_event_t *ev;
|
|
|
|
|
|
|
|
ev = (xcb_motion_notify_event_t *)event;
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
/* if (_ecore_xcb_event_last_mouse_move_event) */
|
|
|
|
/* { */
|
|
|
|
/* ecore_event_del(_ecore_xcb_event_last_mouse_move_event); */
|
|
|
|
/* _ecore_xcb_event_last_mouse_move = EINA_FALSE; */
|
|
|
|
/* _ecore_xcb_event_last_mouse_move_event = NULL; */
|
|
|
|
/* } */
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
_ecore_xcb_event_mouse_move(ev->time, ev->state,
|
|
|
|
ev->event_x, ev->event_y,
|
|
|
|
ev->root_x, ev->root_y,
|
|
|
|
ev->event,
|
|
|
|
(ev->child ? ev->child : ev->event),
|
|
|
|
ev->root, ev->same_screen,
|
|
|
|
0, 1, 1, 1.0, 0.0,
|
|
|
|
ev->event_x, ev->event_y,
|
2011-07-14 08:35:42 -07:00
|
|
|
ev->root_x, ev->root_y);
|
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_TRUE;
|
|
|
|
|
|
|
|
_ecore_xcb_dnd_drag(ev->root, ev->root_x, ev->root_y);
|
|
|
|
}
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_enter_notify(xcb_generic_event_t *event)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
xcb_enter_notify_event_t *ev;
|
|
|
|
Ecore_X_Event_Mouse_In *e;
|
2009-04-19 01:37:50 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
ev = (xcb_enter_notify_event_t *)event;
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
_ecore_xcb_event_mouse_move(ev->time, ev->state,
|
|
|
|
ev->event_x, ev->event_y,
|
|
|
|
ev->root_x, ev->root_y,
|
|
|
|
ev->event,
|
|
|
|
(ev->child ? ev->child : ev->event),
|
|
|
|
ev->root, ev->same_screen_focus,
|
|
|
|
0, 1, 1, 1.0, 0.0,
|
|
|
|
ev->event_x, ev->event_y,
|
2011-07-14 08:35:42 -07:00
|
|
|
ev->root_x, ev->root_y);
|
|
|
|
|
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Mouse_In)))) return;
|
|
|
|
|
|
|
|
e->modifiers = _ecore_xcb_events_modifiers_get(ev->state);
|
|
|
|
e->x = ev->event_x;
|
|
|
|
e->y = ev->event_y;
|
|
|
|
e->root.x = ev->root_x;
|
|
|
|
e->root.y = ev->root_y;
|
|
|
|
if (ev->child)
|
|
|
|
e->win = ev->child;
|
|
|
|
else
|
|
|
|
e->win = ev->event;
|
|
|
|
e->event_win = ev->event;
|
|
|
|
e->same_screen = ev->same_screen_focus;
|
|
|
|
e->root_win = ev->root;
|
|
|
|
e->mode = _ecore_xcb_event_mode_get(ev->mode);
|
|
|
|
e->detail = _ecore_xcb_event_detail_get(ev->detail);
|
|
|
|
e->time = ev->time;
|
|
|
|
_ecore_xcb_event_last_time = e->time;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_MOUSE_IN, e, NULL, NULL);
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_leave_notify(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
|
|
|
xcb_leave_notify_event_t *ev;
|
2011-07-14 08:35:42 -07:00
|
|
|
Ecore_X_Event_Mouse_Out *e;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
ev = (xcb_enter_notify_event_t *)event;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
_ecore_xcb_event_mouse_move(ev->time, ev->state,
|
|
|
|
ev->event_x, ev->event_y,
|
|
|
|
ev->root_x, ev->root_y,
|
|
|
|
ev->event,
|
|
|
|
(ev->child ? ev->child : ev->event),
|
|
|
|
ev->root, ev->same_screen_focus,
|
|
|
|
0, 1, 1, 1.0, 0.0,
|
|
|
|
ev->event_x, ev->event_y,
|
2011-07-14 08:35:42 -07:00
|
|
|
ev->root_x, ev->root_y);
|
|
|
|
|
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Mouse_Out)))) return;
|
|
|
|
|
|
|
|
e->modifiers = _ecore_xcb_events_modifiers_get(ev->state);
|
|
|
|
e->x = ev->event_x;
|
|
|
|
e->y = ev->event_y;
|
|
|
|
e->root.x = ev->root_x;
|
|
|
|
e->root.y = ev->root_y;
|
|
|
|
if (ev->child)
|
|
|
|
e->win = ev->child;
|
|
|
|
else
|
|
|
|
e->win = ev->event;
|
|
|
|
e->event_win = ev->event;
|
|
|
|
e->same_screen = ev->same_screen_focus;
|
|
|
|
e->root_win = ev->root;
|
|
|
|
e->mode = _ecore_xcb_event_mode_get(ev->mode);
|
|
|
|
e->detail = _ecore_xcb_event_detail_get(ev->detail);
|
2010-08-02 11:54:27 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
e->time = ev->time;
|
|
|
|
_ecore_xcb_event_last_time = e->time;
|
|
|
|
_ecore_xcb_event_last_window = e->win;
|
|
|
|
_ecore_xcb_event_last_root_x = e->root.x;
|
|
|
|
_ecore_xcb_event_last_root_y = e->root.y;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_MOUSE_OUT, e, NULL, NULL);
|
|
|
|
}
|
2010-08-02 11:54:27 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
2012-11-25 01:55:32 -08:00
|
|
|
_ecore_xcb_event_handle_keymap_notify(xcb_generic_event_t *event EINA_UNUSED)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
2011-08-30 12:22:51 -07:00
|
|
|
// LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
2010-08-02 11:54:27 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
// FIXME: handle this event type
|
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
2011-07-14 08:35:42 -07:00
|
|
|
}
|
2010-08-02 11:54:27 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_focus_in(xcb_generic_event_t *event)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
xcb_focus_in_event_t *ev;
|
|
|
|
Ecore_X_Event_Window_Focus_In *e;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
ev = (xcb_focus_in_event_t *)event;
|
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Focus_In)))) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
e->win = ev->event;
|
|
|
|
e->mode = _ecore_xcb_event_mode_get(ev->mode);
|
|
|
|
e->detail = _ecore_xcb_event_detail_get(ev->detail);
|
2010-08-02 11:54:27 -07:00
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->time = _ecore_xcb_event_last_time;
|
|
|
|
_ecore_xcb_event_last_time = e->time;
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, e, NULL, NULL);
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_focus_out(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
xcb_focus_out_event_t *ev;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
Ecore_X_Event_Window_Focus_Out *e;
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
ev = (xcb_focus_out_event_t *)event;
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Focus_Out)))) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->win = ev->event;
|
2011-07-14 08:35:42 -07:00
|
|
|
e->mode = _ecore_xcb_event_mode_get(ev->mode);
|
|
|
|
e->detail = _ecore_xcb_event_detail_get(ev->detail);
|
2010-08-02 11:54:27 -07:00
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->time = _ecore_xcb_event_last_time;
|
|
|
|
_ecore_xcb_event_last_time = e->time;
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_WINDOW_FOCUS_OUT, e, NULL, NULL);
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_expose(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
xcb_expose_event_t *ev;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
Ecore_X_Event_Window_Damage *e;
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
ev = (xcb_expose_event_t *)event;
|
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Damage)))) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->win = ev->window;
|
|
|
|
e->time = _ecore_xcb_event_last_time;
|
|
|
|
e->x = ev->x;
|
|
|
|
e->y = ev->y;
|
|
|
|
e->w = ev->width;
|
|
|
|
e->h = ev->height;
|
|
|
|
e->count = ev->count;
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_WINDOW_DAMAGE, e, NULL, NULL);
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_graphics_exposure(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
|
|
|
xcb_graphics_exposure_event_t *ev;
|
|
|
|
Ecore_X_Event_Window_Damage *e;
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
ev = (xcb_graphics_exposure_event_t *)event;
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Damage)))) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->win = ev->drawable;
|
|
|
|
e->x = ev->x;
|
|
|
|
e->y = ev->y;
|
|
|
|
e->w = ev->width;
|
|
|
|
e->h = ev->height;
|
|
|
|
e->count = ev->count;
|
2011-07-14 08:35:42 -07:00
|
|
|
e->time = _ecore_xcb_event_last_time;
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_WINDOW_DAMAGE, e, NULL, NULL);
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_visibility_notify(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
|
|
|
xcb_visibility_notify_event_t *ev;
|
2011-07-14 08:35:42 -07:00
|
|
|
Ecore_X_Event_Window_Visibility_Change *e;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
ev = (xcb_visibility_notify_event_t *)event;
|
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Visibility_Change))))
|
|
|
|
return;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
e->win = ev->window;
|
|
|
|
e->time = _ecore_xcb_event_last_time;
|
|
|
|
if (ev->state == XCB_VISIBILITY_FULLY_OBSCURED)
|
|
|
|
e->fully_obscured = 1;
|
|
|
|
else
|
|
|
|
e->fully_obscured = 0;
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_WINDOW_VISIBILITY_CHANGE, e, NULL, NULL);
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_create_notify(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
xcb_create_notify_event_t *ev;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
Ecore_X_Event_Window_Create *e;
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
ev = (xcb_create_notify_event_t *)event;
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Create)))) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->win = ev->window;
|
2011-07-14 08:35:42 -07:00
|
|
|
e->parent = ev->parent;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
if (ev->override_redirect)
|
2011-07-14 08:35:42 -07:00
|
|
|
e->override = 1;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
else
|
2011-07-14 08:35:42 -07:00
|
|
|
e->override = 0;
|
|
|
|
e->x = ev->x;
|
|
|
|
e->y = ev->y;
|
|
|
|
e->w = ev->width;
|
|
|
|
e->h = ev->height;
|
|
|
|
e->border = ev->border_width;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->time = _ecore_xcb_event_last_time;
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_WINDOW_CREATE, e, NULL, NULL);
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_destroy_notify(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
xcb_destroy_notify_event_t *ev;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
Ecore_X_Event_Window_Destroy *e;
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
ev = (xcb_destroy_notify_event_t *)event;
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Destroy)))) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
|
|
|
e->win = ev->window;
|
2011-07-14 08:35:42 -07:00
|
|
|
e->event_win = ev->event;
|
2010-08-02 11:54:27 -07:00
|
|
|
if (e->win == _ecore_xcb_event_last_window)
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_window = 0;
|
|
|
|
e->time = _ecore_xcb_event_last_time;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_WINDOW_DESTROY, e, NULL, NULL);
|
2011-07-14 08:35:42 -07:00
|
|
|
}
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_map_notify(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
xcb_map_notify_event_t *ev;
|
|
|
|
Ecore_X_Event_Window_Show *e;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
ev = (xcb_map_notify_event_t *)event;
|
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Show)))) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->win = ev->window;
|
2011-07-14 08:35:42 -07:00
|
|
|
e->event_win = ev->event;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->time = _ecore_xcb_event_last_time;
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_WINDOW_SHOW, e, NULL, NULL);
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_unmap_notify(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
xcb_unmap_notify_event_t *ev;
|
|
|
|
Ecore_X_Event_Window_Hide *e;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
ev = (xcb_unmap_notify_event_t *)event;
|
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Hide)))) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->win = ev->window;
|
2011-07-14 08:35:42 -07:00
|
|
|
e->event_win = ev->event;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->time = _ecore_xcb_event_last_time;
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_WINDOW_HIDE, e, NULL, NULL);
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_map_request(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
xcb_map_request_event_t *ev;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
Ecore_X_Event_Window_Show_Request *e;
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
ev = (xcb_map_request_event_t *)event;
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Show_Request)))) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->win = ev->window;
|
|
|
|
e->parent = ev->parent;
|
|
|
|
e->time = _ecore_xcb_event_last_time;
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_WINDOW_SHOW_REQUEST, e, NULL, NULL);
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_reparent_notify(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
xcb_reparent_notify_event_t *ev;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
Ecore_X_Event_Window_Reparent *e;
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
ev = (xcb_reparent_notify_event_t *)event;
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Reparent)))) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->win = ev->window;
|
2011-07-14 08:35:42 -07:00
|
|
|
e->event_win = ev->event;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->parent = ev->parent;
|
|
|
|
e->time = _ecore_xcb_event_last_time;
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_WINDOW_REPARENT, e, NULL, NULL);
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_configure_notify(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
xcb_configure_notify_event_t *ev;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
Ecore_X_Event_Window_Configure *e;
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
ev = (xcb_configure_notify_event_t *)event;
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Configure)))) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->win = ev->window;
|
2011-07-14 08:35:42 -07:00
|
|
|
e->event_win = ev->event;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->abovewin = ev->above_sibling;
|
|
|
|
e->x = ev->x;
|
|
|
|
e->y = ev->y;
|
|
|
|
e->w = ev->width;
|
|
|
|
e->h = ev->height;
|
|
|
|
e->border = ev->border_width;
|
|
|
|
e->override = ev->override_redirect;
|
|
|
|
/* send_event is bit 7 (0x80) of response_type */
|
2011-07-14 08:35:42 -07:00
|
|
|
e->from_wm = ((ev->response_type & 0x80) ? 1 : 0);
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->time = _ecore_xcb_event_last_time;
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_WINDOW_CONFIGURE, e, NULL, NULL);
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_configure_request(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
xcb_configure_request_event_t *ev;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
Ecore_X_Event_Window_Configure_Request *e;
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
ev = (xcb_configure_request_event_t *)event;
|
2011-10-20 22:40:59 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Configure_Request))))
|
2011-07-14 08:35:42 -07:00
|
|
|
return;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->win = ev->window;
|
2011-07-14 08:35:42 -07:00
|
|
|
e->parent_win = ev->parent;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->abovewin = ev->sibling;
|
|
|
|
e->x = ev->x;
|
|
|
|
e->y = ev->y;
|
|
|
|
e->w = ev->width;
|
|
|
|
e->h = ev->height;
|
|
|
|
e->border = ev->border_width;
|
|
|
|
e->value_mask = ev->value_mask;
|
2011-10-20 22:40:59 -07:00
|
|
|
switch (ev->stack_mode)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
case XCB_STACK_MODE_ABOVE:
|
2011-07-14 08:35:42 -07:00
|
|
|
e->detail = ECORE_X_WINDOW_STACK_ABOVE;
|
|
|
|
break;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2010-08-02 11:54:27 -07:00
|
|
|
case XCB_STACK_MODE_BELOW:
|
2011-07-14 08:35:42 -07:00
|
|
|
e->detail = ECORE_X_WINDOW_STACK_BELOW;
|
|
|
|
break;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2010-08-02 11:54:27 -07:00
|
|
|
case XCB_STACK_MODE_TOP_IF:
|
2011-07-14 08:35:42 -07:00
|
|
|
e->detail = ECORE_X_WINDOW_STACK_TOP_IF;
|
|
|
|
break;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2010-08-02 11:54:27 -07:00
|
|
|
case XCB_STACK_MODE_BOTTOM_IF:
|
2011-07-14 08:35:42 -07:00
|
|
|
e->detail = ECORE_X_WINDOW_STACK_BOTTOM_IF;
|
|
|
|
break;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2010-08-02 11:54:27 -07:00
|
|
|
case XCB_STACK_MODE_OPPOSITE:
|
2011-07-14 08:35:42 -07:00
|
|
|
e->detail = ECORE_X_WINDOW_STACK_OPPOSITE;
|
|
|
|
break;
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->time = _ecore_xcb_event_last_time;
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_WINDOW_CONFIGURE_REQUEST, e, NULL, NULL);
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
2012-11-25 01:55:32 -08:00
|
|
|
_ecore_xcb_event_handle_gravity_notify(xcb_generic_event_t *event EINA_UNUSED)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-08-30 12:22:51 -07:00
|
|
|
/*
|
2011-07-14 08:35:42 -07:00
|
|
|
xcb_gravity_notify_event_t *ev;
|
|
|
|
Ecore_X_Event_Window_Gravity *e;
|
|
|
|
|
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
ev = (xcb_gravity_notify_event_t *)event;
|
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Gravity)))) return;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
e->win = ev->window;
|
|
|
|
e->event_win = ev->event;
|
|
|
|
e->time = _ecore_xcb_event_last_time;
|
|
|
|
|
|
|
|
ecore_event_add(ECORE_X_EVENT_WINDOW_GRAVITY, e, NULL, NULL);
|
2011-10-20 22:40:59 -07:00
|
|
|
*/
|
2011-07-14 08:35:42 -07:00
|
|
|
}
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_resize_request(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
xcb_resize_request_event_t *ev;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
Ecore_X_Event_Window_Resize_Request *e;
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
ev = (xcb_resize_request_event_t *)event;
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Resize_Request)))) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->win = ev->window;
|
|
|
|
e->w = ev->width;
|
|
|
|
e->h = ev->height;
|
|
|
|
e->time = _ecore_xcb_event_last_time;
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_WINDOW_RESIZE_REQUEST, e, NULL, NULL);
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_circulate_notify(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
|
|
|
xcb_circulate_notify_event_t *ev;
|
|
|
|
Ecore_X_Event_Window_Stack *e;
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
ev = (xcb_circulate_notify_event_t *)event;
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Stack)))) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->win = ev->window;
|
|
|
|
e->event_win = ev->event;
|
|
|
|
if (ev->place == XCB_PLACE_ON_TOP)
|
2011-07-14 08:35:42 -07:00
|
|
|
e->detail = ECORE_X_WINDOW_STACK_ABOVE;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
else
|
2011-07-14 08:35:42 -07:00
|
|
|
e->detail = ECORE_X_WINDOW_STACK_BELOW;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->time = _ecore_xcb_event_last_time;
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_WINDOW_STACK, e, NULL, NULL);
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_circulate_request(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
xcb_circulate_request_event_t *ev;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
Ecore_X_Event_Window_Stack_Request *e;
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
ev = (xcb_circulate_request_event_t *)event;
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Stack_Request)))) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->win = ev->window;
|
|
|
|
e->parent = ev->event;
|
|
|
|
if (ev->place == XCB_PLACE_ON_TOP)
|
2011-07-14 08:35:42 -07:00
|
|
|
e->detail = ECORE_X_WINDOW_STACK_ABOVE;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
else
|
2011-07-14 08:35:42 -07:00
|
|
|
e->detail = ECORE_X_WINDOW_STACK_BELOW;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->time = _ecore_xcb_event_last_time;
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_WINDOW_STACK_REQUEST, e, NULL, NULL);
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_property_notify(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
xcb_property_notify_event_t *ev;
|
|
|
|
Ecore_X_Event_Window_Property *e;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
ev = (xcb_property_notify_event_t *)event;
|
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Property)))) return;
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
e->win = ev->window;
|
|
|
|
e->atom = ev->atom;
|
|
|
|
e->time = ev->time;
|
|
|
|
_ecore_xcb_event_last_time = e->time;
|
|
|
|
|
|
|
|
ecore_event_add(ECORE_X_EVENT_WINDOW_PROPERTY, e, NULL, NULL);
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_selection_clear(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
xcb_selection_clear_event_t *ev;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
Ecore_X_Event_Selection_Clear *e;
|
2010-08-02 11:54:27 -07:00
|
|
|
Ecore_X_Atom sel;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
|
|
|
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
ev = (xcb_selection_clear_event_t *)event;
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = malloc(sizeof(Ecore_X_Event_Selection_Clear)))) return;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
|
|
|
e->win = ev->owner;
|
2009-03-22 11:19:17 -07:00
|
|
|
e->atom = sel = ev->selection;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
if (sel == ECORE_X_ATOM_SELECTION_PRIMARY)
|
2011-07-14 08:35:42 -07:00
|
|
|
e->selection = ECORE_X_SELECTION_PRIMARY;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
else if (sel == ECORE_X_ATOM_SELECTION_SECONDARY)
|
2011-07-14 08:35:42 -07:00
|
|
|
e->selection = ECORE_X_SELECTION_SECONDARY;
|
2009-03-22 11:19:17 -07:00
|
|
|
else if (sel == ECORE_X_ATOM_SELECTION_CLIPBOARD)
|
2011-07-14 08:35:42 -07:00
|
|
|
e->selection = ECORE_X_SELECTION_CLIPBOARD;
|
2009-03-22 11:19:17 -07:00
|
|
|
else
|
2011-07-14 08:35:42 -07:00
|
|
|
e->selection = ECORE_X_SELECTION_OTHER;
|
|
|
|
e->time = ev->time;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_SELECTION_CLEAR, e, NULL, NULL);
|
2011-07-14 08:35:42 -07:00
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_selection_request(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
xcb_selection_request_event_t *ev;
|
2010-06-14 12:22:45 -07:00
|
|
|
Ecore_X_Event_Selection_Request *e;
|
2010-08-02 11:54:27 -07:00
|
|
|
Ecore_X_Selection_Intern *sd;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
|
|
|
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
ev = (xcb_selection_request_event_t *)event;
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = malloc(sizeof(Ecore_X_Event_Selection_Request)))) return;
|
2010-06-14 12:22:45 -07:00
|
|
|
|
|
|
|
e->owner = ev->owner;
|
|
|
|
e->requestor = ev->requestor;
|
|
|
|
e->selection = ev->selection;
|
|
|
|
e->target = ev->target;
|
|
|
|
e->property = ev->property;
|
2011-07-14 08:35:42 -07:00
|
|
|
e->time = ev->time;
|
|
|
|
|
2010-06-14 12:22:45 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_SELECTION_REQUEST, e, NULL, NULL);
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
if ((sd = _ecore_xcb_selection_get(ev->selection)) &&
|
|
|
|
(sd->win == ev->owner))
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-08-30 12:22:51 -07:00
|
|
|
Ecore_X_Selection_Intern *si;
|
|
|
|
|
|
|
|
si = _ecore_xcb_selection_get(ev->selection);
|
2011-10-20 22:40:59 -07:00
|
|
|
if (si->data)
|
2010-08-02 11:54:27 -07:00
|
|
|
{
|
2011-08-30 12:22:51 -07:00
|
|
|
Ecore_X_Atom property = XCB_NONE, type;
|
|
|
|
void *data = NULL;
|
2011-07-14 08:35:42 -07:00
|
|
|
int len = 0, typesize = 0;
|
2010-06-14 12:22:45 -07:00
|
|
|
|
2010-08-02 11:54:27 -07:00
|
|
|
type = ev->target;
|
|
|
|
typesize = 8;
|
|
|
|
len = sd->length;
|
2011-08-30 12:22:51 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
if (!ecore_x_selection_convert(ev->selection, ev->target,
|
2010-06-14 12:22:45 -07:00
|
|
|
&data, &len, &type, &typesize))
|
2011-07-14 08:35:42 -07:00
|
|
|
property = XCB_NONE;
|
2011-08-30 12:22:51 -07:00
|
|
|
else if (data)
|
2010-06-14 12:22:45 -07:00
|
|
|
{
|
2011-10-20 22:40:59 -07:00
|
|
|
ecore_x_window_prop_property_set(ev->requestor, ev->property,
|
2011-07-14 08:35:42 -07:00
|
|
|
type, typesize, data, len);
|
2010-08-02 11:54:27 -07:00
|
|
|
property = ev->property;
|
|
|
|
free(data);
|
2010-06-14 12:22:45 -07:00
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
ecore_x_selection_notify_send(ev->requestor, ev->selection,
|
2011-07-14 08:35:42 -07:00
|
|
|
ev->target, property, ev->time);
|
2010-06-14 12:22:45 -07:00
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
}
|
2011-07-14 08:35:42 -07:00
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_selection_notify(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
xcb_selection_notify_event_t *ev;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
Ecore_X_Event_Selection_Notify *e;
|
2010-08-02 11:54:27 -07:00
|
|
|
unsigned char *data = NULL;
|
|
|
|
Ecore_X_Atom selection;
|
2011-07-14 08:35:42 -07:00
|
|
|
int num = 0, format = 0;
|
|
|
|
|
|
|
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
ev = (xcb_selection_notify_event_t *)event;
|
|
|
|
selection = ev->selection;
|
2011-10-20 22:40:59 -07:00
|
|
|
if (ev->target == ECORE_X_ATOM_SELECTION_TARGETS)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-10-20 22:40:59 -07:00
|
|
|
format =
|
|
|
|
ecore_x_window_prop_property_get(ev->requestor, ev->property,
|
2011-08-30 12:22:51 -07:00
|
|
|
XCB_ATOM_ATOM, 32, &data, &num);
|
2012-07-16 04:01:44 -07:00
|
|
|
if (!format)
|
|
|
|
{
|
|
|
|
/* fallback if targets handling is not working and try get the
|
|
|
|
* selection directly */
|
|
|
|
xcb_convert_selection(_ecore_xcb_conn, ev->requestor,
|
|
|
|
selection, selection,
|
|
|
|
ECORE_X_ATOM_UTF8_STRING, XCB_CURRENT_TIME);
|
|
|
|
return;
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else
|
2012-10-10 02:17:21 -07:00
|
|
|
format = ecore_x_window_prop_property_get(ev->requestor, ev->property,
|
|
|
|
XCB_GET_PROPERTY_TYPE_ANY, 8,
|
|
|
|
&data, &num);
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
|
|
|
e = calloc(1, sizeof(Ecore_X_Event_Selection_Notify));
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!e) return;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->win = ev->requestor;
|
|
|
|
e->time = ev->time;
|
2009-03-22 11:19:17 -07:00
|
|
|
e->atom = selection;
|
2011-07-14 08:35:42 -07:00
|
|
|
e->target = _ecore_xcb_selection_target_get(ev->target);
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
|
|
|
if (selection == ECORE_X_ATOM_SELECTION_PRIMARY)
|
2011-07-14 08:35:42 -07:00
|
|
|
e->selection = ECORE_X_SELECTION_PRIMARY;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
else if (selection == ECORE_X_ATOM_SELECTION_SECONDARY)
|
2011-07-14 08:35:42 -07:00
|
|
|
e->selection = ECORE_X_SELECTION_SECONDARY;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
else if (selection == ECORE_X_ATOM_SELECTION_XDND)
|
2011-07-14 08:35:42 -07:00
|
|
|
e->selection = ECORE_X_SELECTION_XDND;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
else if (selection == ECORE_X_ATOM_SELECTION_CLIPBOARD)
|
2011-07-14 08:35:42 -07:00
|
|
|
e->selection = ECORE_X_SELECTION_CLIPBOARD;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
else
|
2011-07-14 08:35:42 -07:00
|
|
|
e->selection = ECORE_X_SELECTION_OTHER;
|
2009-03-22 11:19:17 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
e->data = _ecore_xcb_selection_parse(e->target, data, num, format);
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_SELECTION_NOTIFY, e,
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_selection_notify_free, NULL);
|
|
|
|
}
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_colormap_notify(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
xcb_colormap_notify_event_t *ev;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
Ecore_X_Event_Window_Colormap *e;
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
ev = (xcb_colormap_notify_event_t *)event;
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Colormap)))) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->win = ev->window;
|
|
|
|
e->cmap = ev->colormap;
|
|
|
|
if (ev->state == XCB_COLORMAP_STATE_INSTALLED)
|
2011-07-14 08:35:42 -07:00
|
|
|
e->installed = 1;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
else
|
2011-07-14 08:35:42 -07:00
|
|
|
e->installed = 0;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->time = _ecore_xcb_event_last_time;
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_WINDOW_COLORMAP, e, NULL, NULL);
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_client_message(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
xcb_client_message_event_t *ev;
|
|
|
|
|
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
ev = (xcb_client_message_event_t *)event;
|
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
/* Special client message event handling here. need to put LOTS of if */
|
|
|
|
/* checks here and generate synthetic events per special message known */
|
|
|
|
/* otherwise generate generic client message event. this would handle*/
|
|
|
|
/* netwm, ICCCM, gnomewm, old kde and mwm hint client message protocols */
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
if ((ev->type == ECORE_X_ATOM_WM_PROTOCOLS) && (ev->format == 32) &&
|
|
|
|
(ev->data.data32[0] == ECORE_X_ATOM_WM_DELETE_WINDOW))
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
Ecore_X_Event_Window_Delete_Request *e;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Delete_Request))))
|
|
|
|
return;
|
2010-08-02 11:54:27 -07:00
|
|
|
e->win = ev->window;
|
|
|
|
e->time = _ecore_xcb_event_last_time;
|
|
|
|
ecore_event_add(ECORE_X_EVENT_WINDOW_DELETE_REQUEST, e, NULL, NULL);
|
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else if ((ev->type == ECORE_X_ATOM_NET_WM_MOVERESIZE) &&
|
|
|
|
(ev->format == 32) && (ev->data.data32[2] < 9))
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
Ecore_X_Event_Window_Move_Resize_Request *e;
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Move_Resize_Request))))
|
|
|
|
return;
|
2010-08-02 11:54:27 -07:00
|
|
|
e->win = ev->window;
|
|
|
|
e->x = ev->data.data32[0];
|
|
|
|
e->y = ev->data.data32[1];
|
|
|
|
e->direction = ev->data.data32[2];
|
|
|
|
e->button = ev->data.data32[3];
|
|
|
|
e->source = ev->data.data32[4];
|
|
|
|
ecore_event_add(ECORE_X_EVENT_WINDOW_MOVE_RESIZE_REQUEST, e, NULL, NULL);
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else if (ev->type == ECORE_X_ATOM_XDND_ENTER)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
Ecore_X_Event_Xdnd_Enter *e;
|
|
|
|
Ecore_X_DND_Target *target;
|
|
|
|
|
2011-09-08 16:11:33 -07:00
|
|
|
DBG("Got Xdnd Enter Event");
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Xdnd_Enter)))) return;
|
|
|
|
target = _ecore_xcb_dnd_target_get();
|
2010-08-02 11:54:27 -07:00
|
|
|
target->state = ECORE_X_DND_TARGET_ENTERED;
|
|
|
|
target->source = ev->data.data32[0];
|
|
|
|
target->win = ev->window;
|
2011-07-14 08:35:42 -07:00
|
|
|
target->version = (int)(ev->data.data32[1] >> 24);
|
2011-10-20 22:40:59 -07:00
|
|
|
if (target->version > ECORE_X_DND_VERSION)
|
2010-08-02 11:54:27 -07:00
|
|
|
{
|
2011-10-20 22:40:59 -07:00
|
|
|
WRN("DND: Requested version %d but we only support up to %d",
|
2011-07-14 08:35:42 -07:00
|
|
|
target->version, ECORE_X_DND_VERSION);
|
|
|
|
free(e);
|
2010-08-02 11:54:27 -07:00
|
|
|
return;
|
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
if (ev->data.data32[1] & 0x1UL)
|
2010-08-02 11:54:27 -07:00
|
|
|
{
|
|
|
|
unsigned char *data;
|
|
|
|
Ecore_X_Atom *types;
|
2011-07-14 08:35:42 -07:00
|
|
|
int num_ret = 0;
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
if (!ecore_x_window_prop_property_get(target->source,
|
|
|
|
ECORE_X_ATOM_XDND_TYPE_LIST,
|
|
|
|
ECORE_X_ATOM_ATOM, 32,
|
|
|
|
&data, &num_ret))
|
2010-08-02 11:54:27 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
WRN("DND: Could not fetch data type list from source window");
|
|
|
|
free(e);
|
2010-08-02 11:54:27 -07:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
types = (Ecore_X_Atom *)data;
|
|
|
|
e->types = calloc(num_ret, sizeof(char *));
|
2011-10-20 22:40:59 -07:00
|
|
|
if (e->types)
|
2010-08-02 11:54:27 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
int i = 0;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2010-08-02 11:54:27 -07:00
|
|
|
for (i = 0; i < num_ret; i++)
|
2011-07-14 08:35:42 -07:00
|
|
|
e->types[i] = ecore_x_atom_name_get(types[i]);
|
2010-08-02 11:54:27 -07:00
|
|
|
}
|
|
|
|
e->num_types = num_ret;
|
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else
|
2010-08-02 11:54:27 -07:00
|
|
|
{
|
|
|
|
int i = 0;
|
|
|
|
|
|
|
|
e->types = calloc(3, sizeof(char *));
|
2011-10-20 22:40:59 -07:00
|
|
|
if (e->types)
|
2010-08-02 11:54:27 -07:00
|
|
|
{
|
2011-10-20 22:40:59 -07:00
|
|
|
while ((i < 3) && (ev->data.data32[i + 2]))
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-10-20 22:40:59 -07:00
|
|
|
e->types[i] =
|
2011-07-14 08:35:42 -07:00
|
|
|
ecore_x_atom_name_get(ev->data.data32[i + 2]);
|
|
|
|
i++;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
}
|
2010-08-02 11:54:27 -07:00
|
|
|
}
|
|
|
|
e->num_types = i;
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2010-08-02 11:54:27 -07:00
|
|
|
e->win = target->win;
|
|
|
|
e->source = target->source;
|
2011-10-20 22:40:59 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_XDND_ENTER, e,
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_xdnd_enter_free, NULL);
|
2010-08-02 11:54:27 -07:00
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else if (ev->type == ECORE_X_ATOM_XDND_POSITION)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
Ecore_X_Event_Xdnd_Position *e;
|
|
|
|
Ecore_X_DND_Target *target;
|
|
|
|
|
2011-09-08 16:11:33 -07:00
|
|
|
DBG("Got Xdnd Position Event");
|
2011-07-14 08:35:42 -07:00
|
|
|
target = _ecore_xcb_dnd_target_get();
|
2011-10-20 22:40:59 -07:00
|
|
|
if ((target->source != (Ecore_X_Window)ev->data.data32[0]) ||
|
2011-09-08 16:11:33 -07:00
|
|
|
(target->win != ev->window)) return;
|
2011-07-14 08:35:42 -07:00
|
|
|
target->pos.x = ev->data.data32[2] >> 16;
|
|
|
|
target->pos.y = ev->data.data32[2] & 0xFFFFUL;
|
|
|
|
target->action = ev->data.data32[4];
|
2011-10-20 22:40:59 -07:00
|
|
|
target->time = (target->version >= 1) ?
|
2011-08-30 12:22:51 -07:00
|
|
|
(Ecore_X_Time)ev->data.data32[3] : XCB_CURRENT_TIME;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
|
|
|
e = calloc(1, sizeof(Ecore_X_Event_Xdnd_Position));
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!e) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
e->win = target->win;
|
|
|
|
e->source = target->source;
|
|
|
|
e->position.x = target->pos.x;
|
|
|
|
e->position.y = target->pos.y;
|
|
|
|
e->action = target->action;
|
|
|
|
ecore_event_add(ECORE_X_EVENT_XDND_POSITION, e, NULL, NULL);
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else if (ev->type == ECORE_X_ATOM_XDND_STATUS)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
Ecore_X_Event_Xdnd_Status *e;
|
|
|
|
Ecore_X_DND_Source *source;
|
|
|
|
|
2011-09-08 16:11:33 -07:00
|
|
|
DBG("Got Xdnd Status Event");
|
2011-07-14 08:35:42 -07:00
|
|
|
source = _ecore_xcb_dnd_source_get();
|
2011-10-20 22:40:59 -07:00
|
|
|
if ((source->win != ev->window) ||
|
2011-07-14 08:35:42 -07:00
|
|
|
(source->dest != (Ecore_X_Window)ev->data.data32[0]))
|
|
|
|
return;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
|
|
|
source->await_status = 0;
|
|
|
|
source->will_accept = ev->data.data32[1] & 0x1UL;
|
|
|
|
source->suppress = (ev->data.data32[1] & 0x2UL) ? 0 : 1;
|
2011-07-14 08:35:42 -07:00
|
|
|
source->rectangle.x = ev->data.data32[2] >> 16;
|
|
|
|
source->rectangle.y = ev->data.data32[2] & 0xFFFFUL;
|
|
|
|
source->rectangle.width = ev->data.data32[3] >> 16;
|
|
|
|
source->rectangle.height = ev->data.data32[3] & 0xFFFFUL;
|
2010-08-02 11:54:27 -07:00
|
|
|
source->accepted_action = ev->data.data32[4];
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2010-08-02 11:54:27 -07:00
|
|
|
e = calloc(1, sizeof(Ecore_X_Event_Xdnd_Status));
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!e) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
e->win = source->win;
|
|
|
|
e->target = source->dest;
|
|
|
|
e->will_accept = source->will_accept;
|
|
|
|
e->rectangle.x = source->rectangle.x;
|
|
|
|
e->rectangle.y = source->rectangle.y;
|
|
|
|
e->rectangle.width = source->rectangle.width;
|
|
|
|
e->rectangle.height = source->rectangle.height;
|
|
|
|
e->action = source->accepted_action;
|
|
|
|
|
|
|
|
ecore_event_add(ECORE_X_EVENT_XDND_STATUS, e, NULL, NULL);
|
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else if (ev->type == ECORE_X_ATOM_XDND_LEAVE)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
Ecore_X_Event_Xdnd_Leave *e;
|
|
|
|
Ecore_X_DND_Target *target;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-09-08 16:11:33 -07:00
|
|
|
DBG("Got Xdnd Leave Event");
|
2011-07-14 08:35:42 -07:00
|
|
|
target = _ecore_xcb_dnd_target_get();
|
2011-10-20 22:40:59 -07:00
|
|
|
if ((target->source != (Ecore_X_Window)ev->data.data32[0]) ||
|
|
|
|
(target->win != ev->window))
|
2011-07-14 08:35:42 -07:00
|
|
|
return;
|
2010-08-02 11:54:27 -07:00
|
|
|
target->state = ECORE_X_DND_TARGET_IDLE;
|
|
|
|
e = calloc(1, sizeof(Ecore_X_Event_Xdnd_Leave));
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!e) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
e->win = ev->window;
|
2011-07-14 08:35:42 -07:00
|
|
|
e->source = (Ecore_X_Window)ev->data.data32[0];
|
2010-08-02 11:54:27 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_XDND_LEAVE, e, NULL, NULL);
|
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else if (ev->type == ECORE_X_ATOM_XDND_DROP)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
Ecore_X_Event_Xdnd_Drop *e;
|
|
|
|
Ecore_X_DND_Target *target;
|
|
|
|
|
2011-09-08 16:11:33 -07:00
|
|
|
DBG("Got Xdnd Drop Event");
|
2011-07-14 08:35:42 -07:00
|
|
|
target = _ecore_xcb_dnd_target_get();
|
2011-10-20 22:40:59 -07:00
|
|
|
if ((target->source != (Ecore_X_Window)ev->data.data32[0]) ||
|
2010-08-02 11:54:27 -07:00
|
|
|
(target->win != ev->window))
|
2011-07-14 08:35:42 -07:00
|
|
|
return;
|
2011-10-20 22:40:59 -07:00
|
|
|
target->time = (target->version >= 1) ?
|
2011-09-08 16:11:33 -07:00
|
|
|
(Ecore_X_Time)ev->data.data32[2] : _ecore_xcb_event_last_time;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
|
|
|
e = calloc(1, sizeof(Ecore_X_Event_Xdnd_Drop));
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!e) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
e->win = target->win;
|
|
|
|
e->source = target->source;
|
|
|
|
e->action = target->action;
|
|
|
|
e->position.x = target->pos.x;
|
|
|
|
e->position.y = target->pos.y;
|
|
|
|
ecore_event_add(ECORE_X_EVENT_XDND_DROP, e, NULL, NULL);
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else if (ev->type == ECORE_X_ATOM_XDND_FINISHED)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
Ecore_X_Event_Xdnd_Finished *e;
|
|
|
|
Ecore_X_DND_Source *source;
|
2011-07-14 08:35:42 -07:00
|
|
|
Eina_Bool completed = EINA_TRUE;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
2011-09-08 16:11:33 -07:00
|
|
|
DBG("Got Xdnd Finished Event");
|
2011-07-14 08:35:42 -07:00
|
|
|
source = _ecore_xcb_dnd_source_get();
|
2011-10-20 22:40:59 -07:00
|
|
|
if ((source->win != ev->window) ||
|
2011-07-14 08:35:42 -07:00
|
|
|
(source->dest != (Ecore_X_Window)ev->data.data32[0]))
|
|
|
|
return;
|
2011-10-20 22:40:59 -07:00
|
|
|
if ((source->version < 5) || (ev->data.data32[1] & 0x1UL))
|
2010-08-02 11:54:27 -07:00
|
|
|
{
|
|
|
|
ecore_x_selection_xdnd_clear();
|
|
|
|
source->state = ECORE_X_DND_SOURCE_IDLE;
|
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else if (source->version >= 5)
|
2010-08-02 11:54:27 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
completed = EINA_FALSE;
|
2010-08-02 11:54:27 -07:00
|
|
|
source->state = ECORE_X_DND_SOURCE_CONVERTING;
|
2011-10-20 22:40:59 -07:00
|
|
|
/* FIXME: Probably need to add a timer to switch back to idle
|
2010-08-02 11:54:27 -07:00
|
|
|
* and discard the selection data */
|
|
|
|
}
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Xdnd_Finished))))
|
|
|
|
return;
|
2010-08-02 11:54:27 -07:00
|
|
|
e->win = source->win;
|
|
|
|
e->target = source->dest;
|
|
|
|
e->completed = completed;
|
2011-10-20 22:40:59 -07:00
|
|
|
if (source->version >= 5)
|
2010-08-02 11:54:27 -07:00
|
|
|
{
|
|
|
|
source->accepted_action = ev->data.data32[2];
|
|
|
|
e->action = source->accepted_action;
|
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else
|
2010-08-02 11:54:27 -07:00
|
|
|
{
|
|
|
|
source->accepted_action = 0;
|
|
|
|
e->action = source->action;
|
|
|
|
}
|
|
|
|
ecore_event_add(ECORE_X_EVENT_XDND_FINISHED, e, NULL, NULL);
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else if (ev->type == ECORE_X_ATOM_NET_WM_STATE)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
Ecore_X_Event_Window_State_Request *e;
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_State_Request))))
|
|
|
|
return;
|
2010-08-02 11:54:27 -07:00
|
|
|
e->win = ev->window;
|
|
|
|
if (ev->data.data32[0] == 0)
|
2011-07-14 08:35:42 -07:00
|
|
|
e->action = ECORE_X_WINDOW_STATE_ACTION_REMOVE;
|
2010-08-02 11:54:27 -07:00
|
|
|
else if (ev->data.data32[0] == 1)
|
2011-07-14 08:35:42 -07:00
|
|
|
e->action = ECORE_X_WINDOW_STATE_ACTION_ADD;
|
2010-08-02 11:54:27 -07:00
|
|
|
else if (ev->data.data32[0] == 2)
|
2011-07-14 08:35:42 -07:00
|
|
|
e->action = ECORE_X_WINDOW_STATE_ACTION_TOGGLE;
|
2011-10-20 22:40:59 -07:00
|
|
|
else
|
2010-08-02 11:54:27 -07:00
|
|
|
{
|
|
|
|
free(e);
|
|
|
|
return;
|
|
|
|
}
|
2011-07-14 08:35:42 -07:00
|
|
|
e->state[0] = _ecore_xcb_netwm_window_state_get(ev->data.data32[1]);
|
2011-10-20 22:40:59 -07:00
|
|
|
if (e->state[0] == ECORE_X_WINDOW_STATE_UNKNOWN)
|
2010-08-02 11:54:27 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
/* FIXME */
|
2010-08-02 11:54:27 -07:00
|
|
|
}
|
2011-07-14 08:35:42 -07:00
|
|
|
e->state[1] = _ecore_xcb_netwm_window_state_get(ev->data.data32[2]);
|
2011-10-20 22:40:59 -07:00
|
|
|
if (e->state[1] == ECORE_X_WINDOW_STATE_UNKNOWN)
|
2010-08-02 11:54:27 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
/* FIXME */
|
2010-08-02 11:54:27 -07:00
|
|
|
}
|
|
|
|
e->source = ev->data.data32[3];
|
|
|
|
ecore_event_add(ECORE_X_EVENT_WINDOW_STATE_REQUEST, e, NULL, NULL);
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else if ((ev->type == ECORE_X_ATOM_WM_CHANGE_STATE) && (ev->format == 32) &&
|
|
|
|
(ev->data.data32[0] == XCB_ICCCM_WM_STATE_ICONIC))
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
Ecore_X_Event_Window_State_Request *e;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_State_Request))))
|
|
|
|
return;
|
2010-08-02 11:54:27 -07:00
|
|
|
e->win = ev->window;
|
|
|
|
e->action = ECORE_X_WINDOW_STATE_ACTION_ADD;
|
|
|
|
e->state[0] = ECORE_X_WINDOW_STATE_ICONIFIED;
|
|
|
|
ecore_event_add(ECORE_X_EVENT_WINDOW_STATE_REQUEST, e, NULL, NULL);
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else if ((ev->type == ECORE_X_ATOM_NET_WM_DESKTOP) && (ev->format == 32))
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
Ecore_X_Event_Desktop_Change *e;
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Desktop_Change))))
|
|
|
|
return;
|
2010-08-02 11:54:27 -07:00
|
|
|
e->win = ev->window;
|
|
|
|
e->desk = ev->data.data32[0];
|
|
|
|
e->source = ev->data.data32[1];
|
|
|
|
ecore_event_add(ECORE_X_EVENT_DESKTOP_CHANGE, e, NULL, NULL);
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else if (ev->type == ECORE_X_ATOM_NET_REQUEST_FRAME_EXTENTS)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
Ecore_X_Event_Frame_Extents_Request *e;
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Frame_Extents_Request))))
|
|
|
|
return;
|
2010-08-02 11:54:27 -07:00
|
|
|
e->win = ev->window;
|
|
|
|
ecore_event_add(ECORE_X_EVENT_FRAME_EXTENTS_REQUEST, e, NULL, NULL);
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else if ((ev->type == ECORE_X_ATOM_WM_PROTOCOLS) &&
|
|
|
|
((Ecore_X_Atom)ev->data.data32[0] == ECORE_X_ATOM_NET_WM_PING) &&
|
|
|
|
(ev->format == 32))
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
Ecore_X_Event_Ping *e;
|
2011-07-14 08:35:42 -07:00
|
|
|
Ecore_X_Window root = 0;
|
|
|
|
int count = 0;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Ping)))) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
e->win = ev->window;
|
|
|
|
e->time = ev->data.data32[1];
|
|
|
|
e->event_win = ev->data.data32[2];
|
|
|
|
ecore_event_add(ECORE_X_EVENT_PING, e, NULL, NULL);
|
2011-07-14 08:35:42 -07:00
|
|
|
|
2011-09-20 02:12:02 -07:00
|
|
|
CHECK_XCB_CONN;
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
count = xcb_setup_roots_length(xcb_get_setup(_ecore_xcb_conn));
|
2011-10-20 22:40:59 -07:00
|
|
|
if (count > 1)
|
2011-07-14 08:35:42 -07:00
|
|
|
root = ecore_x_window_root_get(e->win);
|
2011-10-20 22:40:59 -07:00
|
|
|
else
|
2011-07-14 08:35:42 -07:00
|
|
|
root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
if (ev->window != root)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
2011-08-30 12:22:51 -07:00
|
|
|
ev->window = root;
|
2011-10-20 22:40:59 -07:00
|
|
|
xcb_send_event(_ecore_xcb_conn, 0, root,
|
|
|
|
(XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
|
|
|
|
XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY),
|
2011-08-30 12:22:51 -07:00
|
|
|
(const char *)&ev);
|
2011-09-13 09:32:34 -07:00
|
|
|
// ecore_x_flush();
|
2011-07-14 08:35:42 -07:00
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else if ((ev->type == ECORE_X_ATOM_NET_STARTUP_INFO_BEGIN) &&
|
|
|
|
(ev->format == 8))
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_netwm_startup_info_begin(ev->window, ev->data.data8[0]);
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else if ((ev->type == ECORE_X_ATOM_NET_STARTUP_INFO) && (ev->format == 8))
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-08-30 12:22:51 -07:00
|
|
|
_ecore_xcb_netwm_startup_info(ev->window, ev->data.data8[0]);
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else if ((ev->type == 27777) && (ev->data.data32[0] == 0x7162534) &&
|
|
|
|
(ev->format == 32)) // && (ev->window = _private_window))
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
if (ev->data.data32[1] == 0x10000001)
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_window_button_grab_remove(ev->data.data32[2]);
|
2011-10-20 22:40:59 -07:00
|
|
|
else if (ev->data.data32[1] == 0x10000002)
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_window_key_grab_remove(ev->data.data32[2]);
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2010-08-02 11:54:27 -07:00
|
|
|
Ecore_X_Event_Client_Message *e;
|
2011-07-14 08:35:42 -07:00
|
|
|
int i = 0;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Client_Message))))
|
|
|
|
return;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
|
|
|
e->win = ev->window;
|
2011-09-01 13:21:36 -07:00
|
|
|
e->message_type = ev->type;
|
2010-08-02 11:54:27 -07:00
|
|
|
e->format = ev->format;
|
|
|
|
for (i = 0; i < 5; i++)
|
2011-07-14 08:35:42 -07:00
|
|
|
e->data.l[i] = ev->data.data32[i];
|
2010-08-02 11:54:27 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_CLIENT_MESSAGE, e, NULL, NULL);
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
}
|
2011-07-14 08:35:42 -07:00
|
|
|
}
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_mapping_notify(xcb_generic_event_t *event)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
xcb_mapping_notify_event_t *ev;
|
|
|
|
Ecore_X_Event_Mapping_Change *e;
|
|
|
|
|
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
|
|
|
|
ev = (xcb_mapping_notify_event_t *)event;
|
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Mapping_Change)))) return;
|
|
|
|
|
|
|
|
_ecore_xcb_keymap_refresh(ev);
|
2011-09-29 02:56:07 -07:00
|
|
|
_ecore_xcb_modifiers_get();
|
2011-10-20 22:40:59 -07:00
|
|
|
|
|
|
|
switch (ev->request)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
case XCB_MAPPING_MODIFIER:
|
|
|
|
e->type = ECORE_X_MAPPING_MODIFIER;
|
|
|
|
break;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
case XCB_MAPPING_KEYBOARD:
|
|
|
|
e->type = ECORE_X_MAPPING_KEYBOARD;
|
|
|
|
break;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
case XCB_MAPPING_POINTER:
|
|
|
|
default:
|
|
|
|
e->type = ECORE_X_MAPPING_MOUSE;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
e->keycode = ev->first_keycode;
|
|
|
|
e->num = ev->count;
|
|
|
|
|
|
|
|
ecore_event_add(ECORE_X_EVENT_MAPPING_CHANGE, e, NULL, NULL);
|
|
|
|
}
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_damage_notify(xcb_generic_event_t *event)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
#ifdef ECORE_XCB_DAMAGE
|
|
|
|
xcb_damage_notify_event_t *ev;
|
|
|
|
Ecore_X_Event_Damage *e;
|
2011-08-08 11:05:07 -07:00
|
|
|
#endif
|
2011-07-14 08:35:42 -07:00
|
|
|
|
2011-08-08 11:05:07 -07:00
|
|
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
|
|
|
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
#ifdef ECORE_XCB_DAMAGE
|
2011-07-14 08:35:42 -07:00
|
|
|
ev = (xcb_damage_notify_event_t *)event;
|
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Damage)))) return;
|
|
|
|
|
|
|
|
e->level = ev->level;
|
|
|
|
e->drawable = ev->drawable;
|
|
|
|
e->damage = ev->damage;
|
|
|
|
e->time = ev->timestamp;
|
|
|
|
e->area.x = ev->area.x;
|
|
|
|
e->area.y = ev->area.y;
|
|
|
|
e->area.width = ev->area.width;
|
|
|
|
e->area.height = ev->area.height;
|
|
|
|
e->geometry.x = ev->geometry.x;
|
|
|
|
e->geometry.y = ev->geometry.y;
|
|
|
|
e->geometry.width = ev->geometry.width;
|
|
|
|
e->geometry.height = ev->geometry.height;
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_DAMAGE_NOTIFY, e, NULL, NULL);
|
|
|
|
#endif
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_randr_change(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
#ifdef ECORE_XCB_RANDR
|
|
|
|
xcb_randr_screen_change_notify_event_t *ev;
|
|
|
|
Ecore_X_Event_Screen_Change *e;
|
2011-08-08 11:05:07 -07:00
|
|
|
#endif
|
|
|
|
|
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
#ifdef ECORE_XCB_RANDR
|
2011-07-14 08:35:42 -07:00
|
|
|
ev = (xcb_randr_screen_change_notify_event_t *)event;
|
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Screen_Change)))) return;
|
|
|
|
|
|
|
|
e->win = ev->request_window;
|
|
|
|
e->root = ev->root;
|
|
|
|
e->size.width = ev->width;
|
|
|
|
e->size.height = ev->height;
|
|
|
|
e->time = ev->timestamp;
|
|
|
|
e->config_time = ev->config_timestamp;
|
|
|
|
e->size.width_mm = ev->mwidth;
|
|
|
|
e->size.height_mm = ev->mheight;
|
|
|
|
e->orientation = ev->rotation;
|
|
|
|
e->subpixel_order = ev->subpixel_order;
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_SCREEN_CHANGE, e, NULL, NULL);
|
|
|
|
#endif
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_randr_notify(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-08-08 11:05:07 -07:00
|
|
|
#ifdef ECORE_XCB_RANDR
|
|
|
|
xcb_randr_notify_event_t *ev;
|
|
|
|
#endif
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
#ifdef ECORE_XCB_RANDR
|
|
|
|
ev = (xcb_randr_notify_event_t *)event;
|
2011-10-20 22:40:59 -07:00
|
|
|
switch (ev->subCode)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
case XCB_RANDR_NOTIFY_CRTC_CHANGE:
|
|
|
|
_ecore_xcb_event_handle_randr_crtc_change(event);
|
|
|
|
break;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
case XCB_RANDR_NOTIFY_OUTPUT_CHANGE:
|
|
|
|
_ecore_xcb_event_handle_randr_output_change(event);
|
|
|
|
break;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
case XCB_RANDR_NOTIFY_OUTPUT_PROPERTY:
|
|
|
|
_ecore_xcb_event_handle_randr_output_property_change(event);
|
|
|
|
break;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_randr_crtc_change(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
#ifdef ECORE_XCB_RANDR
|
|
|
|
xcb_randr_notify_event_t *ev;
|
|
|
|
Ecore_X_Event_Randr_Crtc_Change *e;
|
2011-08-08 11:05:07 -07:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef ECORE_XCB_RANDR
|
2011-07-14 08:35:42 -07:00
|
|
|
ev = (xcb_randr_notify_event_t *)event;
|
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Randr_Crtc_Change))))
|
|
|
|
return;
|
|
|
|
|
|
|
|
e->win = ev->u.cc.window;
|
|
|
|
e->crtc = ev->u.cc.crtc;
|
|
|
|
e->mode = ev->u.cc.mode;
|
|
|
|
e->orientation = ev->u.cc.rotation;
|
|
|
|
e->geo.x = ev->u.cc.x;
|
|
|
|
e->geo.y = ev->u.cc.y;
|
|
|
|
e->geo.w = ev->u.cc.width;
|
|
|
|
e->geo.h = ev->u.cc.height;
|
|
|
|
|
|
|
|
ecore_event_add(ECORE_X_EVENT_RANDR_CRTC_CHANGE, e, NULL, NULL);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_randr_output_change(xcb_generic_event_t *event)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
#ifdef ECORE_XCB_RANDR
|
|
|
|
xcb_randr_notify_event_t *ev;
|
|
|
|
Ecore_X_Event_Randr_Output_Change *e;
|
2011-08-08 11:05:07 -07:00
|
|
|
#endif
|
2011-07-14 08:35:42 -07:00
|
|
|
|
2011-08-08 11:05:07 -07:00
|
|
|
#ifdef ECORE_XCB_RANDR
|
2011-07-14 08:35:42 -07:00
|
|
|
ev = (xcb_randr_notify_event_t *)event;
|
2012-10-03 22:49:28 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Randr_Output_Change))))
|
2011-07-14 08:35:42 -07:00
|
|
|
return;
|
|
|
|
|
|
|
|
e->win = ev->u.oc.window;
|
|
|
|
e->output = ev->u.oc.output;
|
|
|
|
e->crtc = ev->u.oc.crtc;
|
|
|
|
e->mode = ev->u.oc.mode;
|
|
|
|
e->orientation = ev->u.oc.rotation;
|
|
|
|
e->connection = ev->u.oc.connection;
|
|
|
|
e->subpixel_order = ev->u.oc.subpixel_order;
|
|
|
|
|
|
|
|
ecore_event_add(ECORE_X_EVENT_RANDR_OUTPUT_CHANGE, e, NULL, NULL);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_randr_output_property_change(xcb_generic_event_t *event)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
#ifdef ECORE_XCB_RANDR
|
|
|
|
xcb_randr_notify_event_t *ev;
|
|
|
|
Ecore_X_Event_Randr_Output_Property_Notify *e;
|
2011-08-08 11:05:07 -07:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef ECORE_XCB_RANDR
|
2011-07-14 08:35:42 -07:00
|
|
|
ev = (xcb_randr_notify_event_t *)event;
|
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Randr_Output_Property_Notify))))
|
|
|
|
return;
|
|
|
|
|
|
|
|
e->win = ev->u.op.window;
|
|
|
|
e->output = ev->u.op.output;
|
|
|
|
e->property = ev->u.op.atom;
|
|
|
|
e->time = ev->u.op.timestamp;
|
|
|
|
if (ev->u.op.status == XCB_PROPERTY_NEW_VALUE)
|
|
|
|
e->state = ECORE_X_RANDR_PROPERTY_CHANGE_ADD;
|
|
|
|
else
|
|
|
|
e->state = ECORE_X_RANDR_PROPERTY_CHANGE_DEL;
|
|
|
|
|
|
|
|
ecore_event_add(ECORE_X_EVENT_RANDR_OUTPUT_PROPERTY_NOTIFY, e, NULL, NULL);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_screensaver_notify(xcb_generic_event_t *event)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
#ifdef ECORE_XCB_SCREENSAVER
|
2010-08-02 11:54:27 -07:00
|
|
|
xcb_screensaver_notify_event_t *ev;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
Ecore_X_Event_Screensaver_Notify *e;
|
2011-08-08 11:05:07 -07:00
|
|
|
#endif
|
|
|
|
|
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
#ifdef ECORE_XCB_SCREENSAVER
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
ev = (xcb_screensaver_notify_event_t *)event;
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Screensaver_Notify)))) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->win = ev->window;
|
2011-07-14 08:35:42 -07:00
|
|
|
e->on = EINA_FALSE;
|
2012-08-26 08:34:40 -07:00
|
|
|
if ((ev->state == XCB_SCREENSAVER_STATE_ON) ||
|
|
|
|
(ev->state == XCB_SCREENSAVER_STATE_CYCLE)) e->on = EINA_TRUE;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->time = ev->time;
|
2011-07-14 08:35:42 -07:00
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_SCREENSAVER_NOTIFY, e, NULL, NULL);
|
2011-07-14 08:35:42 -07:00
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
2011-11-04 05:44:28 -07:00
|
|
|
#ifdef ECORE_XCB_XGESTURE
|
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_gesture_notify_flick(xcb_generic_event_t *event)
|
|
|
|
{
|
|
|
|
xcb_gesture_notify_flick_event_t *ev;
|
|
|
|
Ecore_X_Event_Gesture_Notify_Flick *e;
|
|
|
|
|
|
|
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
fprintf(stderr, "[ECORE_XCB][%s]...\n", __FUNCTION__);
|
|
|
|
|
|
|
|
ev = (xcb_gesture_notify_flick_event_t *)event;
|
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Gesture_Notify_Flick)))) return;
|
|
|
|
|
|
|
|
e->win = ev->window;
|
|
|
|
e->time = ev->time;
|
|
|
|
e->subtype = ev->kind;
|
|
|
|
e->num_fingers = ev->num_finger;
|
|
|
|
e->distance = ev->distance;
|
|
|
|
e->duration = ev->duration;
|
|
|
|
e->direction = ev->direction;
|
|
|
|
e->angle = XFixedToDouble(ev->angle);
|
|
|
|
|
|
|
|
ecore_event_add(ECORE_X_EVENT_GESTURE_NOTIFY_FLICK, e, NULL, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_gesture_notify_pan(xcb_generic_event_t *event)
|
|
|
|
{
|
|
|
|
xcb_gesture_notify_pan_event_t *ev;
|
|
|
|
Ecore_X_Event_Gesture_Notify_Pan *e;
|
|
|
|
|
|
|
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
fprintf(stderr, "[ECORE_XCB][%s]...\n", __FUNCTION__);
|
|
|
|
|
|
|
|
ev = (xcb_gesture_notify_pan_event_t *)event;
|
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Gesture_Notify_Pan)))) return;
|
|
|
|
|
|
|
|
e->win = ev->window;
|
|
|
|
e->time = ev->time;
|
|
|
|
e->subtype = ev->kind;
|
|
|
|
e->num_fingers = ev->num_finger;
|
|
|
|
e->dx = ev->dx;
|
|
|
|
e->dy = ev->dy;
|
|
|
|
e->distance = ev->distance;
|
|
|
|
e->duration = ev->duration;
|
|
|
|
e->direction = ev->direction;
|
|
|
|
|
|
|
|
ecore_event_add(ECORE_X_EVENT_GESTURE_NOTIFY_PAN, e, NULL, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_gesture_notify_pinchrotation(xcb_generic_event_t *event)
|
|
|
|
{
|
|
|
|
xcb_gesture_notify_pinch_rotation_event_t *ev;
|
|
|
|
Ecore_X_Event_Gesture_Notify_PinchRotation *e;
|
|
|
|
|
|
|
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
fprintf(stderr, "[ECORE_XCB][%s]...\n", __FUNCTION__);
|
|
|
|
|
|
|
|
ev = (xcb_gesture_notify_pinch_rotation_event_t *)event;
|
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Gesture_Notify_PinchRotation)))) return;
|
|
|
|
|
|
|
|
e->win = ev->window;
|
|
|
|
e->time = ev->time;
|
|
|
|
e->subtype = ev->kind;
|
|
|
|
e->num_fingers = ev->num_finger;
|
|
|
|
e->distance = ev->distance;
|
|
|
|
e->cx = ev->cx;
|
|
|
|
e->cy = ev->cy;
|
|
|
|
e->zoom = XFixedToDouble(ev->zoom);
|
|
|
|
e->angle = XFixedToDouble(ev->angle);
|
|
|
|
|
|
|
|
ecore_event_add(ECORE_X_EVENT_GESTURE_NOTIFY_PINCHROTATION, e, NULL, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_gesture_notify_tap(xcb_generic_event_t *event)
|
|
|
|
{
|
|
|
|
xcb_gesture_notify_tap_event_t *ev;
|
|
|
|
Ecore_X_Event_Gesture_Notify_Tap *e;
|
|
|
|
|
|
|
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
fprintf(stderr, "[ECORE_XCB][%s]...\n", __FUNCTION__);
|
|
|
|
|
|
|
|
ev = (xcb_gesture_notify_tap_event_t *)event;
|
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Gesture_Notify_Tap)))) return;
|
|
|
|
|
|
|
|
e->win = ev->window;
|
|
|
|
e->time = ev->time;
|
|
|
|
e->subtype = ev->kind;
|
|
|
|
e->num_fingers = ev->num_finger;
|
|
|
|
e->cx = ev->cx;
|
|
|
|
e->cy = ev->cy;
|
|
|
|
e->tap_repeat = ev->tap_repeat;
|
|
|
|
e->interval = ev->interval;
|
|
|
|
|
|
|
|
ecore_event_add(ECORE_X_EVENT_GESTURE_NOTIFY_TAP, e, NULL, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_gesture_notify_tapnhold(xcb_generic_event_t *event)
|
|
|
|
{
|
|
|
|
xcb_gesture_notify_tap_n_hold_event_t *ev;
|
|
|
|
Ecore_X_Event_Gesture_Notify_TapNHold *e;
|
|
|
|
|
|
|
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
fprintf(stderr, "[ECORE_XCB][%s]...\n", __FUNCTION__);
|
|
|
|
|
|
|
|
ev = (xcb_gesture_notify_tap_n_hold_event_t *)event;
|
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Gesture_Notify_TapNHold)))) return;
|
|
|
|
|
|
|
|
e->win = ev->window;
|
|
|
|
e->time = ev->time;
|
|
|
|
e->subtype = ev->kind;
|
|
|
|
e->num_fingers = ev->num_finger;
|
|
|
|
e->cx = ev->cx;
|
|
|
|
e->cy = ev->cy;
|
|
|
|
e->interval = ev->interval;
|
|
|
|
e->hold_time = ev->holdtime;
|
|
|
|
|
|
|
|
ecore_event_add(ECORE_X_EVENT_GESTURE_NOTIFY_TAPNHOLD, e, NULL, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_gesture_notify_hold(xcb_generic_event_t *event)
|
|
|
|
{
|
|
|
|
xcb_gesture_notify_hold_event_t *ev;
|
|
|
|
Ecore_X_Event_Gesture_Notify_Hold *e;
|
|
|
|
|
|
|
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
fprintf(stderr, "[ECORE_XCB][%s]...\n", __FUNCTION__);
|
|
|
|
|
|
|
|
ev = (xcb_gesture_notify_hold_event_t *)event;
|
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Gesture_Notify_Hold)))) return;
|
|
|
|
|
|
|
|
e->win = ev->window;
|
|
|
|
e->time = ev->time;
|
|
|
|
e->subtype = ev->kind;
|
|
|
|
e->num_fingers = ev->num_finger;
|
|
|
|
e->cx = ev->cx;
|
|
|
|
e->cy = ev->cy;
|
|
|
|
e->hold_time = ev->holdtime;
|
|
|
|
|
|
|
|
ecore_event_add(ECORE_X_EVENT_GESTURE_NOTIFY_HOLD, e, NULL, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_gesture_notify_group(xcb_generic_event_t *event)
|
|
|
|
{
|
|
|
|
xcb_gesture_notify_group_event_t *ev;
|
|
|
|
Ecore_X_Event_Gesture_Notify_Group *e;
|
|
|
|
|
|
|
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
fprintf(stderr, "[ECORE_XCB][%s]...\n", __FUNCTION__);
|
|
|
|
|
|
|
|
ev = (xcb_gesture_notify_group_event_t *)event;
|
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Gesture_Notify_Group)))) return;
|
|
|
|
|
|
|
|
e->win = ev->window;
|
|
|
|
e->time = ev->time;
|
|
|
|
e->subtype = ev->kind;
|
|
|
|
e->num_groups = ev->num_group;
|
|
|
|
e->group_id = ev->groupid;
|
|
|
|
|
|
|
|
ecore_event_add(ECORE_X_EVENT_GESTURE_NOTIFY_GROUP, e, NULL, NULL);
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
#ifdef ECORE_XCB_SHAPE
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_shape_change(xcb_generic_event_t *event)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
xcb_shape_notify_event_t *ev;
|
|
|
|
Ecore_X_Event_Window_Shape *e;
|
|
|
|
|
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
ev = (xcb_shape_notify_event_t *)event;
|
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Shape)))) return;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
e->win = ev->affected_window;
|
|
|
|
e->time = ev->server_time;
|
2011-10-20 22:40:59 -07:00
|
|
|
switch (ev->shape_kind)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
case XCB_SHAPE_SK_BOUNDING:
|
|
|
|
e->type = ECORE_X_SHAPE_BOUNDING;
|
|
|
|
break;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
case XCB_SHAPE_SK_CLIP:
|
|
|
|
e->type = ECORE_X_SHAPE_CLIP;
|
|
|
|
break;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
case XCB_SHAPE_SK_INPUT:
|
|
|
|
e->type = ECORE_X_SHAPE_INPUT;
|
|
|
|
break;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
e->x = ev->extents_x;
|
|
|
|
e->y = ev->extents_y;
|
|
|
|
e->w = ev->extents_width;
|
|
|
|
e->h = ev->extents_height;
|
|
|
|
e->shaped = ev->shaped;
|
|
|
|
|
|
|
|
ecore_event_add(ECORE_X_EVENT_WINDOW_SHAPE, e, NULL, NULL);
|
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
#endif
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_sync_counter(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-08-08 11:05:07 -07:00
|
|
|
#ifdef ECORE_XCB_SYNC
|
|
|
|
xcb_sync_counter_notify_event_t *ev;
|
|
|
|
Ecore_X_Event_Sync_Counter *e;
|
|
|
|
#endif
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
|
|
|
|
#ifdef ECORE_XCB_SYNC
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
ev = (xcb_sync_counter_notify_event_t *)event;
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Sync_Counter)))) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->time = ev->timestamp;
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_SYNC_COUNTER, e, NULL, NULL);
|
|
|
|
#endif
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_sync_alarm(xcb_generic_event_t *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
#ifdef ECORE_XCB_SYNC
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
xcb_sync_alarm_notify_event_t *ev;
|
2010-08-02 11:54:27 -07:00
|
|
|
Ecore_X_Event_Sync_Alarm *e;
|
2011-08-08 11:05:07 -07:00
|
|
|
#endif
|
|
|
|
|
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
#ifdef ECORE_XCB_SYNC
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
ev = (xcb_sync_alarm_notify_event_t *)event;
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Sync_Alarm)))) return;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
e->time = ev->timestamp;
|
|
|
|
e->alarm = ev->alarm;
|
2011-07-14 08:35:42 -07:00
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_SYNC_ALARM, e, NULL, NULL);
|
2011-07-14 08:35:42 -07:00
|
|
|
#endif
|
|
|
|
}
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_xfixes_selection_notify(xcb_generic_event_t *event)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
2011-08-08 11:05:07 -07:00
|
|
|
#ifdef ECORE_XCB_XFIXES
|
2011-08-08 07:36:02 -07:00
|
|
|
Ecore_X_Event_Fixes_Selection_Notify *e;
|
|
|
|
Ecore_X_Atom sel;
|
|
|
|
xcb_xfixes_selection_notify_event_t *ev;
|
2011-08-08 11:05:07 -07:00
|
|
|
#endif
|
2011-07-14 08:35:42 -07:00
|
|
|
|
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
2011-08-08 11:05:07 -07:00
|
|
|
#ifdef ECORE_XCB_XFIXES
|
2011-08-08 07:36:02 -07:00
|
|
|
ev = (xcb_xfixes_selection_notify_event_t *)event;
|
|
|
|
|
2011-08-08 11:05:07 -07:00
|
|
|
if (!(e = calloc(1, sizeof(*e)))) return;
|
2011-08-08 07:36:02 -07:00
|
|
|
|
|
|
|
e->win = ev->window;
|
|
|
|
e->owner = ev->owner;
|
|
|
|
e->time = ev->timestamp;
|
|
|
|
e->selection_time = ev->selection_timestamp;
|
|
|
|
e->atom = sel = ev->selection;
|
|
|
|
if (sel == ECORE_X_ATOM_SELECTION_PRIMARY)
|
2011-08-08 11:05:07 -07:00
|
|
|
e->selection = ECORE_X_SELECTION_PRIMARY;
|
2011-08-08 07:36:02 -07:00
|
|
|
else if (sel == ECORE_X_ATOM_SELECTION_SECONDARY)
|
2011-08-08 11:05:07 -07:00
|
|
|
e->selection = ECORE_X_SELECTION_SECONDARY;
|
2011-08-08 07:36:02 -07:00
|
|
|
else if (sel == ECORE_X_ATOM_SELECTION_CLIPBOARD)
|
2011-08-08 11:05:07 -07:00
|
|
|
e->selection = ECORE_X_SELECTION_CLIPBOARD;
|
2011-08-08 07:36:02 -07:00
|
|
|
else
|
2011-08-08 11:05:07 -07:00
|
|
|
e->selection = ECORE_X_SELECTION_OTHER;
|
2011-08-08 07:36:02 -07:00
|
|
|
e->reason = ev->subtype;
|
|
|
|
|
|
|
|
ecore_event_add(ECORE_X_EVENT_FIXES_SELECTION_NOTIFY, e, NULL, NULL);
|
2011-08-08 11:05:07 -07:00
|
|
|
#endif
|
2011-07-14 08:35:42 -07:00
|
|
|
}
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
2012-11-25 01:55:32 -08:00
|
|
|
_ecore_xcb_event_handle_xfixes_cursor_notify(xcb_generic_event_t *event EINA_UNUSED)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
|
|
// FIXME: TBD
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_generic_event(xcb_generic_event_t *event)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
xcb_ge_event_t *ev;
|
|
|
|
Ecore_X_Event_Generic *e;
|
|
|
|
|
|
|
|
ev = (xcb_ge_event_t *)event;
|
2011-09-20 23:17:22 -07:00
|
|
|
|
|
|
|
/* pad0 *IS* extension - bug in xcb */
|
|
|
|
if (ev->pad0 == _ecore_xcb_event_input)
|
|
|
|
{
|
|
|
|
_ecore_xcb_event_handle_input_event(event);
|
2011-10-20 22:40:59 -07:00
|
|
|
// FIXME: should we generate generic events as WELL as input events?
|
2011-09-20 23:17:22 -07:00
|
|
|
// return;
|
|
|
|
}
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
if (!(e = calloc(1, sizeof(Ecore_X_Event_Generic))))
|
|
|
|
return;
|
|
|
|
|
|
|
|
DBG("Handle Generic Event: %d", ev->event_type);
|
|
|
|
|
|
|
|
e->cookie = ev->sequence;
|
2011-10-20 22:40:59 -07:00
|
|
|
/* NB: These are bugs in xcb ge_event structure. The struct should have a
|
|
|
|
* field for extension & data, but does not.
|
|
|
|
*
|
2011-07-14 08:35:42 -07:00
|
|
|
* XCB people have been notified of this issue */
|
|
|
|
e->extension = ev->pad0;
|
|
|
|
/* e->data = ev->pad1; */
|
2011-09-20 23:17:22 -07:00
|
|
|
if (ev->length > 0)
|
|
|
|
{
|
|
|
|
int len = ev->length * sizeof(int);
|
|
|
|
e->data = malloc(len);
|
|
|
|
if (e->data) memcpy(e->data, &(event[1]), len);
|
|
|
|
}
|
2011-07-14 08:35:42 -07:00
|
|
|
|
|
|
|
e->evtype = ev->event_type;
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
ecore_event_add(ECORE_X_EVENT_GENERIC, e,
|
2011-09-20 23:17:22 -07:00
|
|
|
_ecore_xcb_event_generic_event_free, e->data);
|
2011-07-14 08:35:42 -07:00
|
|
|
}
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_handle_input_event(xcb_generic_event_t *event)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
|
|
|
|
|
|
_ecore_xcb_input_handle_event(event);
|
|
|
|
}
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_key_press(xcb_generic_event_t *event)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
Ecore_Event_Key *e;
|
|
|
|
xcb_keysym_t sym = XCB_NO_SYMBOL;
|
|
|
|
xcb_keycode_t keycode = 0;
|
|
|
|
xcb_key_press_event_t *xevent;
|
|
|
|
char *keyname = NULL, *key = NULL;
|
2011-11-24 15:58:26 -08:00
|
|
|
char *compose = NULL;
|
2011-07-14 08:35:42 -07:00
|
|
|
char compose_buffer[256];
|
|
|
|
int val = 0;
|
|
|
|
|
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
xevent = (xcb_key_press_event_t *)event;
|
|
|
|
keycode = xevent->detail;
|
|
|
|
|
|
|
|
sym = _ecore_xcb_keymap_keycode_to_keysym(keycode, xevent->state);
|
|
|
|
keyname = _ecore_xcb_keymap_keysym_to_string(sym);
|
2011-10-20 22:40:59 -07:00
|
|
|
if (!keyname)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
char buff[256];
|
|
|
|
|
|
|
|
snprintf(buff, sizeof(buff), "Keycode-%i", keycode);
|
|
|
|
keyname = buff;
|
|
|
|
}
|
2010-08-02 11:54:27 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
val =
|
|
|
|
_ecore_xcb_keymap_lookup_string(keycode, xevent->state, compose_buffer,
|
2011-07-14 08:35:42 -07:00
|
|
|
sizeof(compose_buffer), &sym);
|
2011-10-20 22:40:59 -07:00
|
|
|
if (val > 0)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
compose_buffer[val] = 0;
|
2011-10-20 22:40:59 -07:00
|
|
|
compose =
|
2011-07-14 08:35:42 -07:00
|
|
|
eina_str_convert(nl_langinfo(CODESET), "UTF-8", compose_buffer);
|
2011-11-22 03:08:45 -08:00
|
|
|
if (!compose)
|
|
|
|
ERR("Ecore_X cannot convert input key string '%s' to UTF-8. "
|
|
|
|
"Is Eina built with iconv support?", compose_buffer);
|
2011-07-14 08:35:42 -07:00
|
|
|
}
|
2010-08-02 11:54:27 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
key = _ecore_xcb_keymap_keysym_to_string(sym);
|
|
|
|
if (!key) key = keyname;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
e = malloc(sizeof(Ecore_Event_Key) + strlen(key) + strlen(keyname) +
|
2011-07-14 08:35:42 -07:00
|
|
|
(compose ? strlen(compose) : 0) + 3);
|
2011-10-20 22:40:59 -07:00
|
|
|
if (e)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
e->keyname = (char *)(e + 1);
|
|
|
|
e->key = e->keyname + strlen(keyname) + 1;
|
|
|
|
|
|
|
|
e->compose = NULL;
|
|
|
|
if (compose) e->compose = (e->key + strlen(key) + 1);
|
|
|
|
e->string = e->compose;
|
|
|
|
|
|
|
|
strcpy((char *)e->keyname, keyname);
|
|
|
|
strcpy((char *)e->key, key);
|
|
|
|
if (compose) strcpy((char *)e->compose, compose);
|
|
|
|
|
|
|
|
e->modifiers = _ecore_xcb_events_modifiers_get(xevent->state);
|
|
|
|
e->timestamp = xevent->time;
|
|
|
|
e->window = xevent->child ? xevent->child : xevent->event;
|
|
|
|
e->event_window = xevent->event;
|
|
|
|
e->same_screen = xevent->same_screen;
|
|
|
|
e->root_window = xevent->root;
|
|
|
|
|
2011-08-30 12:22:51 -07:00
|
|
|
DBG("Sending Key Down Event: %s", e->keyname);
|
2011-07-14 08:35:42 -07:00
|
|
|
ecore_event_add(ECORE_EVENT_KEY_DOWN, e, NULL, NULL);
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
}
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_time = xevent->time;
|
|
|
|
}
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_key_release(xcb_generic_event_t *event)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
Ecore_Event_Key *e;
|
|
|
|
xcb_keysym_t sym = XCB_NO_SYMBOL;
|
|
|
|
xcb_keycode_t keycode = 0;
|
|
|
|
xcb_key_release_event_t *xevent;
|
|
|
|
char *keyname = NULL, *key = NULL;
|
2011-08-08 11:05:07 -07:00
|
|
|
char *compose = NULL;
|
2011-07-14 08:35:42 -07:00
|
|
|
char compose_buffer[256];
|
|
|
|
int val = 0;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
|
|
|
|
xevent = (xcb_key_release_event_t *)event;
|
|
|
|
keycode = xevent->detail;
|
|
|
|
|
|
|
|
sym = _ecore_xcb_keymap_keycode_to_keysym(keycode, xevent->state);
|
|
|
|
keyname = _ecore_xcb_keymap_keysym_to_string(sym);
|
2011-10-20 22:40:59 -07:00
|
|
|
if (!keyname)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
char buff[256];
|
|
|
|
|
|
|
|
snprintf(buff, sizeof(buff), "Keycode-%i", keycode);
|
|
|
|
keyname = buff;
|
|
|
|
}
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
val =
|
|
|
|
_ecore_xcb_keymap_lookup_string(keycode, xevent->state, compose_buffer,
|
2011-07-14 08:35:42 -07:00
|
|
|
sizeof(compose_buffer), &sym);
|
2011-10-20 22:40:59 -07:00
|
|
|
if (val > 0)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
compose_buffer[val] = 0;
|
2011-10-20 22:40:59 -07:00
|
|
|
compose =
|
2011-07-14 08:35:42 -07:00
|
|
|
eina_str_convert(nl_langinfo(CODESET), "UTF-8", compose_buffer);
|
2011-08-08 11:05:07 -07:00
|
|
|
// tmp = compose;
|
2011-07-14 08:35:42 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
key = _ecore_xcb_keymap_keysym_to_string(sym);
|
|
|
|
if (!key) key = keyname;
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
e = malloc(sizeof(Ecore_Event_Key) + strlen(key) + strlen(keyname) +
|
2011-07-14 08:35:42 -07:00
|
|
|
(compose ? strlen(compose) : 0) + 3);
|
2011-10-20 22:40:59 -07:00
|
|
|
if (e)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
e->keyname = (char *)(e + 1);
|
|
|
|
e->key = e->keyname + strlen(keyname) + 1;
|
|
|
|
|
|
|
|
e->compose = NULL;
|
|
|
|
if (compose) e->compose = (e->key + strlen(key) + 1);
|
|
|
|
e->string = e->compose;
|
|
|
|
|
|
|
|
strcpy((char *)e->keyname, keyname);
|
|
|
|
strcpy((char *)e->key, key);
|
|
|
|
if (compose) strcpy((char *)e->compose, compose);
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
e->modifiers = _ecore_xcb_events_modifiers_get(xevent->state);
|
|
|
|
e->timestamp = xevent->time;
|
|
|
|
e->window = xevent->child ? xevent->child : xevent->event;
|
|
|
|
e->event_window = xevent->event;
|
|
|
|
e->same_screen = xevent->same_screen;
|
|
|
|
e->root_window = xevent->root;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
ecore_event_add(ECORE_EVENT_KEY_UP, e, NULL, NULL);
|
|
|
|
}
|
|
|
|
_ecore_xcb_event_last_time = xevent->time;
|
|
|
|
}
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
void
|
|
|
|
_ecore_xcb_event_mouse_move(uint16_t timestamp,
|
|
|
|
uint16_t modifiers,
|
|
|
|
int16_t x,
|
|
|
|
int16_t y,
|
|
|
|
int16_t root_x,
|
|
|
|
int16_t root_y,
|
|
|
|
xcb_window_t event_win,
|
|
|
|
xcb_window_t win,
|
|
|
|
xcb_window_t root_win,
|
|
|
|
uint8_t same_screen,
|
|
|
|
int dev,
|
|
|
|
double radx,
|
|
|
|
double rady,
|
|
|
|
double pressure,
|
|
|
|
double angle,
|
|
|
|
int16_t mx,
|
|
|
|
int16_t my,
|
|
|
|
int16_t mrx,
|
|
|
|
int16_t mry)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
Ecore_Event_Mouse_Move *e;
|
|
|
|
Ecore_Event *event;
|
|
|
|
|
|
|
|
if (!(e = malloc(sizeof(Ecore_Event_Mouse_Move)))) return;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
e->window = win;
|
|
|
|
e->root_window = root_win;
|
|
|
|
e->timestamp = timestamp;
|
|
|
|
e->same_screen = same_screen;
|
|
|
|
e->event_window = event_win;
|
|
|
|
e->modifiers = _ecore_xcb_events_modifiers_get(modifiers);
|
|
|
|
e->x = x;
|
|
|
|
e->y = y;
|
|
|
|
e->root.x = root_x;
|
|
|
|
e->root.y = root_y;
|
|
|
|
e->multi.device = dev;
|
|
|
|
e->multi.radius = ((radx + rady) / 2);
|
|
|
|
e->multi.radius_x = radx;
|
|
|
|
e->multi.radius_y = rady;
|
|
|
|
e->multi.pressure = pressure;
|
|
|
|
e->multi.angle = angle;
|
|
|
|
e->multi.x = mx;
|
|
|
|
e->multi.y = my;
|
|
|
|
e->multi.root.x = mrx;
|
|
|
|
e->multi.root.y = mry;
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
event = ecore_event_add(ECORE_EVENT_MOUSE_MOVE, e,
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_mouse_move_free, NULL);
|
|
|
|
|
|
|
|
_ecore_xcb_event_last_time = e->timestamp;
|
|
|
|
_ecore_xcb_event_last_window = e->window;
|
|
|
|
_ecore_xcb_event_last_root_x = root_x;
|
|
|
|
_ecore_xcb_event_last_root_y = root_y;
|
2011-09-20 00:17:55 -07:00
|
|
|
// _ecore_xcb_event_last_mouse_move_event = event;
|
2011-07-14 08:35:42 -07:00
|
|
|
}
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
2012-11-25 01:55:32 -08:00
|
|
|
_ecore_xcb_event_mouse_move_free(void *data EINA_UNUSED,
|
2011-10-20 22:40:59 -07:00
|
|
|
void *event)
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-07-14 08:35:42 -07:00
|
|
|
Ecore_Event_Mouse_Move *ev;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
ev = event;
|
2011-10-20 22:40:59 -07:00
|
|
|
// if (_ecore_xcb_event_last_mouse_move_event)
|
2011-09-20 00:17:55 -07:00
|
|
|
// {
|
|
|
|
// _ecore_xcb_event_last_mouse_move = EINA_FALSE;
|
|
|
|
// _ecore_xcb_event_last_mouse_move_event = NULL;
|
|
|
|
// }
|
2011-07-14 08:35:42 -07:00
|
|
|
if (ev) free(ev);
|
|
|
|
}
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
Ecore_Event_Mouse_Button *
|
2011-10-20 22:40:59 -07:00
|
|
|
_ecore_xcb_event_mouse_button(int event,
|
|
|
|
uint16_t timestamp,
|
|
|
|
uint16_t modifiers,
|
|
|
|
xcb_button_t buttons,
|
|
|
|
int16_t x,
|
|
|
|
int16_t y,
|
|
|
|
int16_t root_x,
|
|
|
|
int16_t root_y,
|
|
|
|
xcb_window_t event_win,
|
|
|
|
xcb_window_t win,
|
|
|
|
xcb_window_t root_win,
|
|
|
|
uint8_t same_screen,
|
|
|
|
int dev,
|
|
|
|
double radx,
|
|
|
|
double rady,
|
|
|
|
double pressure,
|
|
|
|
double angle,
|
|
|
|
int16_t mx,
|
|
|
|
int16_t my,
|
|
|
|
int16_t mrx,
|
|
|
|
int16_t mry)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
Ecore_Event_Mouse_Button *e;
|
2011-08-30 12:22:51 -07:00
|
|
|
Ecore_X_Mouse_Down_Info *info = NULL;
|
2011-07-14 08:35:42 -07:00
|
|
|
|
|
|
|
if (!(e = malloc(sizeof(Ecore_Event_Mouse_Button)))) return NULL;
|
|
|
|
|
|
|
|
e->window = win;
|
|
|
|
e->root_window = root_win;
|
|
|
|
e->timestamp = timestamp;
|
|
|
|
e->same_screen = same_screen;
|
|
|
|
e->event_window = event_win;
|
|
|
|
e->buttons = buttons;
|
|
|
|
e->modifiers = _ecore_xcb_events_modifiers_get(modifiers);
|
|
|
|
e->double_click = 0;
|
|
|
|
e->triple_click = 0;
|
|
|
|
e->x = x;
|
|
|
|
e->y = y;
|
|
|
|
e->root.x = root_x;
|
|
|
|
e->root.y = root_y;
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
if ((info = _ecore_xcb_event_mouse_down_info_get(dev)))
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
2011-10-20 22:40:59 -07:00
|
|
|
if ((event == ECORE_EVENT_MOUSE_BUTTON_DOWN) &&
|
2011-08-30 12:22:51 -07:00
|
|
|
(info->did_triple))
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
2011-08-30 12:22:51 -07:00
|
|
|
info->last_win = 0;
|
|
|
|
info->last_last_win = 0;
|
|
|
|
info->last_event_win = 0;
|
|
|
|
info->last_time = 0;
|
|
|
|
info->last_last_time = 0;
|
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
if (event_win == win)
|
2011-08-30 12:22:51 -07:00
|
|
|
{
|
2011-10-20 22:40:59 -07:00
|
|
|
if (event == ECORE_EVENT_MOUSE_BUTTON_DOWN)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
2011-10-20 22:40:59 -07:00
|
|
|
if (((int)(timestamp - info->last_time) <=
|
|
|
|
(int)(1000 * _ecore_xcb_double_click_time)) &&
|
|
|
|
(win == info->last_win) &&
|
|
|
|
(event_win == info->last_event_win))
|
2011-08-30 12:22:51 -07:00
|
|
|
{
|
|
|
|
e->double_click = 1;
|
|
|
|
info->did_double = EINA_TRUE;
|
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else
|
2011-08-30 12:22:51 -07:00
|
|
|
{
|
|
|
|
info->did_double = EINA_FALSE;
|
|
|
|
info->did_triple = EINA_FALSE;
|
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
if (((int)(timestamp - info->last_last_time) <=
|
|
|
|
(int)(2 * 1000 * _ecore_xcb_double_click_time)) &&
|
|
|
|
(win == info->last_win) &&
|
|
|
|
(win == info->last_last_win) &&
|
|
|
|
(event_win == info->last_event_win) &&
|
2011-08-30 12:22:51 -07:00
|
|
|
(event_win == info->last_last_event_win))
|
|
|
|
{
|
|
|
|
e->triple_click = 1;
|
|
|
|
info->did_triple = EINA_TRUE;
|
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else
|
2011-08-30 12:22:51 -07:00
|
|
|
info->did_triple = EINA_FALSE;
|
2011-07-14 08:35:42 -07:00
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
else
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
2011-08-30 12:22:51 -07:00
|
|
|
if (info->did_double) e->double_click = 1;
|
|
|
|
if (info->did_triple) e->triple_click = 1;
|
2011-07-14 08:35:42 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* NB: Comment out right now because _ecore_xcb_mouse_up_count is
|
|
|
|
* only used here...nowhere else in the code */
|
|
|
|
|
|
|
|
/* if ((event == ECORE_EVENT_MOUSE_BUTTON_DOWN) && */
|
|
|
|
/* (!e->double_click) && (!e->triple_click)) */
|
|
|
|
/* _ecore_xcb_mouse_up_count = 0; */
|
2009-04-21 10:42:25 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
e->multi.device = dev;
|
|
|
|
e->multi.radius = ((radx + rady) / 2);
|
|
|
|
e->multi.radius_x = radx;
|
|
|
|
e->multi.radius_y = rady;
|
|
|
|
e->multi.pressure = pressure;
|
|
|
|
e->multi.angle = angle;
|
|
|
|
e->multi.x = mx;
|
|
|
|
e->multi.y = my;
|
|
|
|
e->multi.root.x = mrx;
|
|
|
|
e->multi.root.y = mry;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
_ecore_xcb_event_last_time = e->timestamp;
|
|
|
|
_ecore_xcb_event_last_window = e->window;
|
|
|
|
_ecore_xcb_event_last_root_x = root_x;
|
|
|
|
_ecore_xcb_event_last_root_y = root_y;
|
|
|
|
|
|
|
|
ecore_event_add(event, e, NULL, NULL);
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
if ((info) && (event == ECORE_EVENT_MOUSE_BUTTON_DOWN) &&
|
|
|
|
(win == event_win) && (!info->did_triple))
|
2011-08-30 12:22:51 -07:00
|
|
|
{
|
|
|
|
info->last_last_win = info->last_win;
|
|
|
|
info->last_win = win;
|
|
|
|
info->last_last_event_win = info->last_event_win;
|
|
|
|
info->last_event_win = event_win;
|
|
|
|
info->last_last_time = info->last_time;
|
|
|
|
info->last_time = timestamp;
|
|
|
|
}
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
return e;
|
|
|
|
}
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static Ecore_X_Event_Mode
|
|
|
|
_ecore_xcb_event_mode_get(uint8_t mode)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
2011-10-20 22:40:59 -07:00
|
|
|
switch (mode)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
case XCB_NOTIFY_MODE_NORMAL:
|
|
|
|
return ECORE_X_EVENT_MODE_NORMAL;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
case XCB_NOTIFY_MODE_WHILE_GRABBED:
|
|
|
|
return ECORE_X_EVENT_MODE_WHILE_GRABBED;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
case XCB_NOTIFY_MODE_GRAB:
|
|
|
|
return ECORE_X_EVENT_MODE_GRAB;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
case XCB_NOTIFY_MODE_UNGRAB:
|
|
|
|
return ECORE_X_EVENT_MODE_UNGRAB;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
default:
|
|
|
|
return ECORE_X_EVENT_MODE_NORMAL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static Ecore_X_Event_Detail
|
|
|
|
_ecore_xcb_event_detail_get(uint8_t detail)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
2011-10-20 22:40:59 -07:00
|
|
|
switch (detail)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
case XCB_NOTIFY_DETAIL_ANCESTOR:
|
|
|
|
return ECORE_X_EVENT_DETAIL_ANCESTOR;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
case XCB_NOTIFY_DETAIL_VIRTUAL:
|
|
|
|
return ECORE_X_EVENT_DETAIL_VIRTUAL;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
case XCB_NOTIFY_DETAIL_INFERIOR:
|
|
|
|
return ECORE_X_EVENT_DETAIL_INFERIOR;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
case XCB_NOTIFY_DETAIL_NONLINEAR:
|
|
|
|
return ECORE_X_EVENT_DETAIL_NON_LINEAR;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
case XCB_NOTIFY_DETAIL_NONLINEAR_VIRTUAL:
|
|
|
|
return ECORE_X_EVENT_DETAIL_NON_LINEAR_VIRTUAL;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
case XCB_NOTIFY_DETAIL_POINTER:
|
|
|
|
return ECORE_X_EVENT_DETAIL_POINTER;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
case XCB_NOTIFY_DETAIL_POINTER_ROOT:
|
|
|
|
return ECORE_X_EVENT_DETAIL_POINTER_ROOT;
|
2011-10-20 22:40:59 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
case XCB_NOTIFY_DETAIL_NONE:
|
|
|
|
default:
|
|
|
|
return ECORE_X_EVENT_DETAIL_ANCESTOR;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
2012-11-25 01:55:32 -08:00
|
|
|
_ecore_xcb_event_xdnd_enter_free(void *data EINA_UNUSED,
|
2011-10-20 22:40:59 -07:00
|
|
|
void *event)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
Ecore_X_Event_Xdnd_Enter *e;
|
|
|
|
int i = 0;
|
|
|
|
|
|
|
|
e = event;
|
|
|
|
for (i = 0; i < e->num_types; i++)
|
|
|
|
free(e->types[i]);
|
|
|
|
free(e->types);
|
|
|
|
free(e);
|
|
|
|
}
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
2012-11-25 01:55:32 -08:00
|
|
|
_ecore_xcb_event_selection_notify_free(void *data EINA_UNUSED,
|
2011-10-20 22:40:59 -07:00
|
|
|
void *event)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
Ecore_X_Event_Selection_Notify *e;
|
|
|
|
Ecore_X_Selection_Data *sel;
|
|
|
|
|
|
|
|
e = event;
|
|
|
|
if (!(sel = e->data)) return;
|
|
|
|
if (sel->free) sel->free(sel);
|
|
|
|
free(e->target);
|
|
|
|
free(e);
|
|
|
|
}
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_generic_event_free(void *data,
|
|
|
|
void *event)
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
Ecore_X_Event_Generic *e;
|
|
|
|
|
|
|
|
e = (Ecore_X_Event_Generic *)event;
|
|
|
|
if (e->data) free(data);
|
|
|
|
free(e);
|
|
|
|
}
|
2011-08-30 12:22:51 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
static void
|
|
|
|
_ecore_xcb_event_mouse_down_info_clear(void)
|
2011-08-30 12:22:51 -07:00
|
|
|
{
|
|
|
|
Eina_Inlist *l;
|
|
|
|
Ecore_X_Mouse_Down_Info *info = NULL;
|
|
|
|
|
|
|
|
l = _ecore_xcb_mouse_down_info_list;
|
2011-10-20 22:40:59 -07:00
|
|
|
while (l)
|
2011-08-30 12:22:51 -07:00
|
|
|
{
|
|
|
|
info = EINA_INLIST_CONTAINER_GET(l, Ecore_X_Mouse_Down_Info);
|
|
|
|
l = eina_inlist_remove(l, l);
|
|
|
|
free(info);
|
|
|
|
}
|
|
|
|
_ecore_xcb_mouse_down_info_list = NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
static Ecore_X_Mouse_Down_Info *
|
2011-10-20 22:40:59 -07:00
|
|
|
_ecore_xcb_event_mouse_down_info_get(int dev)
|
2011-08-30 12:22:51 -07:00
|
|
|
{
|
|
|
|
Eina_Inlist *l;
|
|
|
|
Ecore_X_Mouse_Down_Info *info = NULL;
|
|
|
|
|
|
|
|
l = _ecore_xcb_mouse_down_info_list;
|
|
|
|
EINA_INLIST_FOREACH(l, info)
|
|
|
|
if (info->dev == dev) return info;
|
|
|
|
|
|
|
|
if (!(info = calloc(1, sizeof(Ecore_X_Mouse_Down_Info)))) return NULL;
|
|
|
|
|
|
|
|
info->dev = dev;
|
|
|
|
l = eina_inlist_append(l, (Eina_Inlist *)info);
|
|
|
|
_ecore_xcb_mouse_down_info_list = l;
|
|
|
|
|
|
|
|
return info;
|
|
|
|
}
|
2011-10-20 22:40:59 -07:00
|
|
|
|