add a cde pretend routinne in our attempt to fix java... FUCKING JAVA!
authorCarsten Haitzler <raster@rasterman.com>
Wed, 16 Mar 2005 15:24:38 +0000 (15:24 +0000)
committerCarsten Haitzler <raster@rasterman.com>
Wed, 16 Mar 2005 15:24:38 +0000 (15:24 +0000)
SVN revision: 13749

src/bin/e_hints.c
src/bin/e_hints.h
src/bin/e_manager.c

index aac6596..1df66de 100644 (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);
+}
index 2a3b872..f508b67 100644 (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
index 0c0e857..ad65434 100644 (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;
 }