From 7e34d600b7c6e083368daeb83a65fea1990f7673 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Sat, 24 Sep 2005 09:00:23 +0000 Subject: [PATCH] just DONT ask! DONT! x. focvus. client, self, not getting key events... fuck! workarounds. SVN revision: 16904 --- legacy/ecore/src/lib/ecore_evas/Ecore_Evas.h | 2 + .../src/lib/ecore_evas/ecore_evas_private.h | 1 + .../ecore/src/lib/ecore_evas/ecore_evas_x.c | 42 +++++++++++++++++++ legacy/ecore/src/lib/ecore_x/ecore_x.c | 1 - legacy/ecore/src/lib/ecore_x/ecore_x_events.c | 2 +- legacy/ecore/src/lib/ecore_x/ecore_x_window.c | 6 +-- 6 files changed, 49 insertions(+), 5 deletions(-) diff --git a/legacy/ecore/src/lib/ecore_evas/Ecore_Evas.h b/legacy/ecore/src/lib/ecore_evas/Ecore_Evas.h index 108de52702..b5564bb617 100644 --- a/legacy/ecore/src/lib/ecore_evas/Ecore_Evas.h +++ b/legacy/ecore/src/lib/ecore_evas/Ecore_Evas.h @@ -79,12 +79,14 @@ EAPI Ecore_X_Window ecore_evas_software_x11_window_get(Ecore_Evas *ee); EAPI Ecore_X_Window ecore_evas_software_x11_subwindow_get(Ecore_Evas *ee); EAPI void ecore_evas_software_x11_direct_resize_set(Ecore_Evas *ee, int on); EAPI int ecore_evas_software_x11_direct_resize_get(Ecore_Evas *ee); +EAPI void ecore_evas_software_x11_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win); EAPI Ecore_Evas *ecore_evas_gl_x11_new(const char *disp_name, Ecore_X_Window parent, int x, int y, int w, int h); EAPI Ecore_X_Window ecore_evas_gl_x11_window_get(Ecore_Evas *ee); EAPI Ecore_X_Window ecore_evas_gl_x11_subwindow_get(Ecore_Evas *ee); EAPI void ecore_evas_gl_x11_direct_resize_set(Ecore_Evas *ee, int on); EAPI int ecore_evas_gl_x11_direct_resize_get(Ecore_Evas *ee); +EAPI void ecore_evas_gl_x11_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win); EAPI Ecore_Evas *ecore_evas_fb_new(char *disp_name, int rotation, int w, int h); diff --git a/legacy/ecore/src/lib/ecore_evas/ecore_evas_private.h b/legacy/ecore/src/lib/ecore_evas/ecore_evas_private.h index decfd5ff93..129725f1f7 100644 --- a/legacy/ecore/src/lib/ecore_evas/ecore_evas_private.h +++ b/legacy/ecore/src/lib/ecore_evas/ecore_evas_private.h @@ -90,6 +90,7 @@ struct _Ecore_Evas_Engine Ecore_X_Window win_root; Ecore_X_Window win_container; Ecore_X_Window win; + Evas_List *win_extra; Ecore_X_Pixmap pmap; Ecore_X_Pixmap mask; Ecore_X_GC gc; diff --git a/legacy/ecore/src/lib/ecore_evas/ecore_evas_x.c b/legacy/ecore/src/lib/ecore_evas/ecore_evas_x.c index 2e79c07987..587e4f1cb1 100644 --- a/legacy/ecore/src/lib/ecore_evas/ecore_evas_x.c +++ b/legacy/ecore/src/lib/ecore_evas/ecore_evas_x.c @@ -872,6 +872,15 @@ _ecore_evas_x_free(Ecore_Evas *ee) ee->engine.x.damages = 0; ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee); ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win_container), ee); + while (ee->engine.x.win_extra) + { + Ecore_X_Window *winp; + + winp = ee->engine.x.win_extra->data; + ee->engine.x.win_extra = evas_list_remove_list(ee->engine.x.win_extra, ee->engine.x.win_extra); + ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(*winp), ee); + free(winp); + } ecore_evases = _ecore_list2_remove(ecore_evases, ee); _ecore_evas_x_shutdown(); ecore_x_shutdown(); @@ -1752,6 +1761,28 @@ ecore_evas_software_x11_direct_resize_get(Ecore_Evas *ee) #endif } +/** + * To be documented. + * + * FIXME: To be fixed. + */ +void +ecore_evas_software_x11_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win) +{ +#ifdef BUILD_ECORE_X + Ecore_X_Window *winp; + + winp = malloc(sizeof(Ecore_X_Window)); + if (winp) + { + *winp = win; + ee->engine.x.win_extra = evas_list_append(ee->engine.x.win_extra, winp); + ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(win), ee); + } +#else +#endif +} + /** * To be documented. * @@ -1953,3 +1984,14 @@ ecore_evas_gl_x11_direct_resize_get(Ecore_Evas *ee) #endif } +/** + * To be documented. + * + * FIXME: To be fixed. + */ +void +ecore_evas_gl_x11_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win) +{ + ecore_evas_software_x11_extra_event_window_add(ee, win); +} + diff --git a/legacy/ecore/src/lib/ecore_x/ecore_x.c b/legacy/ecore/src/lib/ecore_x/ecore_x.c index 005a54efce..426809f835 100644 --- a/legacy/ecore/src/lib/ecore_x/ecore_x.c +++ b/legacy/ecore/src/lib/ecore_x/ecore_x.c @@ -1022,7 +1022,6 @@ void ecore_x_window_container_manage(Ecore_X_Window win) { XSelectInput(_ecore_x_disp, win, - ResizeRedirectMask | SubstructureRedirectMask | SubstructureNotifyMask); } diff --git a/legacy/ecore/src/lib/ecore_x/ecore_x_events.c b/legacy/ecore/src/lib/ecore_x/ecore_x_events.c index 8a26225228..af154bf428 100644 --- a/legacy/ecore/src/lib/ecore_x/ecore_x_events.c +++ b/legacy/ecore/src/lib/ecore_x/ecore_x_events.c @@ -171,7 +171,7 @@ _ecore_x_event_handle_key_press(XEvent *xevent) char buf[256]; KeySym sym; XComposeStatus stat; - + e = calloc(1, sizeof(Ecore_X_Event_Key_Down)); if (!e) return; keyname = XKeysymToString(XKeycodeToKeysym(xevent->xkey.display, diff --git a/legacy/ecore/src/lib/ecore_x/ecore_x_window.c b/legacy/ecore/src/lib/ecore_x/ecore_x_window.c index 3577b74fec..e0fddbd3fa 100644 --- a/legacy/ecore/src/lib/ecore_x/ecore_x_window.c +++ b/legacy/ecore/src/lib/ecore_x/ecore_x_window.c @@ -52,7 +52,7 @@ ecore_x_window_new(Ecore_X_Window parent, int x, int y, int w, int h) ColormapChangeMask; win = XCreateWindow(_ecore_x_disp, parent, x, y, w, h, 0, - 0, /*DefaultDepth(_ecore_x_disp, DefaultScreen(_ecore_x_disp)),*/ + CopyFromParent, /*DefaultDepth(_ecore_x_disp, DefaultScreen(_ecore_x_disp)),*/ InputOutput, CopyFromParent, /*DefaultVisual(_ecore_x_disp, DefaultScreen(_ecore_x_disp)),*/ CWBackingStore | @@ -109,7 +109,7 @@ ecore_x_window_override_new(Ecore_X_Window parent, int x, int y, int w, int h) ColormapChangeMask; win = XCreateWindow(_ecore_x_disp, parent, x, y, w, h, 0, - 0, /*DefaultDepth(_ecore_x_disp, DefaultScreen(_ecore_x_disp)),*/ + CopyFromParent, /*DefaultDepth(_ecore_x_disp, DefaultScreen(_ecore_x_disp)),*/ InputOutput, CopyFromParent, /*DefaultVisual(_ecore_x_disp, DefaultScreen(_ecore_x_disp)),*/ CWBackingStore | @@ -161,7 +161,7 @@ ecore_x_window_input_new(Ecore_X_Window parent, int x, int y, int w, int h) ColormapChangeMask; win = XCreateWindow(_ecore_x_disp, parent, x, y, w, h, 0, - 0, + CopyFromParent, InputOnly, CopyFromParent, /*DefaultVisual(_ecore_x_disp, DefaultScreen(_ecore_x_disp)),*/ CWOverrideRedirect |