just DONT ask! DONT! x. focvus. client, self, not getting key events... fuck!

workarounds.


SVN revision: 16904
This commit is contained in:
Carsten Haitzler 2005-09-24 09:00:23 +00:00
parent e0ac761a1f
commit 7e34d600b7
6 changed files with 49 additions and 5 deletions

View File

@ -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);

View File

@ -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;

View File

@ -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);
}

View File

@ -1022,7 +1022,6 @@ void
ecore_x_window_container_manage(Ecore_X_Window win)
{
XSelectInput(_ecore_x_disp, win,
ResizeRedirectMask |
SubstructureRedirectMask |
SubstructureNotifyMask);
}

View File

@ -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,

View File

@ -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 |