add a cde pretend routinne in our attempt to fix java... FUCKING JAVA!

SVN revision: 13749
This commit is contained in:
Carsten Haitzler 2005-03-16 15:24:38 +00:00
parent 7594b28c6e
commit fb6f43eefb
3 changed files with 41 additions and 0 deletions

View File

@ -426,3 +426,41 @@ e_hints_window_icon_name_get(Ecore_X_Window win)
bd->client.icccm.icon_name = name;
bd->changed = 1;
}
/* this SHIT is for e17 to PRETEND it is CDE so java doesnt go all fucked and
* do the wrong thing. java is NOT porperly writtey to comply with x
* standards such as icccm. etc. you need to just check it's x code to find
* out. this caused us a LOT of pain to find out - thanks HandyAnde
*
* BTW - this PARTYL fixes batik - it does not fix cgoban or batik fully.
* batik still requests its window to be twice the width and height it should be
* and thinks its half the width and height it is. cgoban wont render its first
* window because it THINKS it smaller than it is.
*/
void
e_hints_root_cde_pretend(Ecore_X_Window root)
{
static Ecore_X_Atom _XA_DT_SM_WINDOW_INFO = 0;
static Ecore_X_Atom _XA_DT_SM_STATE_INFO = 0;
Ecore_X_Window data[2], info_win;
if (_XA_DT_SM_WINDOW_INFO == 0)
_XA_DT_SM_WINDOW_INFO = ecore_x_atom_get("_DT_SM_WINDOW_INFO");
if (_XA_DT_SM_STATE_INFO == 0)
_XA_DT_SM_STATE_INFO = ecore_x_atom_get("_DT_SM_STATE_INFO");
data[0] = 0;
data[1] = 0;
info_win = ecore_x_window_override_new(root, -99, -99, 1, 1);
ecore_x_window_prop_property_set(info_win,
_XA_DT_SM_STATE_INFO,
_XA_DT_SM_STATE_INFO,
32, data, 1);
data[0] = 0;
data[1] = info_win;
ecore_x_window_prop_property_set(root,
_XA_DT_SM_WINDOW_INFO,
_XA_DT_SM_WINDOW_INFO,
32, data, 2);
}

View File

@ -31,5 +31,7 @@ EAPI void e_hints_window_sticky_set(Ecore_X_Window win, int on);
EAPI int e_hints_window_sticky_isset(Ecore_X_Window win);
EAPI void e_hints_window_icon_name_get(Ecore_X_Window win);
EAPI void e_hints_root_cde_pretend(Ecore_X_Window root);
#endif
#endif

View File

@ -89,6 +89,7 @@ e_manager_new(Ecore_X_Window root)
if (h) man->handlers = evas_list_append(man->handlers, h);
h = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_CONFIGURE, _e_manager_cb_window_configure, man);
if (h) man->handlers = evas_list_append(man->handlers, h);
e_hints_root_cde_pretend(man->root);
return man;
}