Enlightenment CVS committal

Author  : handyande
Project : misc
Module  : engage

Dir     : misc/engage/src


Modified Files:
        config.c dock.c engage.h window.c 


Log Message:
Composite patch from Hannes Janetzek - thanks very much :)

===================================================================
RCS file: /cvs/e/misc/engage/src/config.c,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -3 -r1.58 -r1.59
--- config.c    25 Feb 2006 18:29:04 -0000      1.58
+++ config.c    9 Aug 2006 21:38:13 -0000       1.59
@@ -136,7 +136,12 @@
                               "ignore-running", "Ignore running apps");
   ecore_config_boolean_create("engage.options.ignore_iconified", 0, 'I',
                               "ignore-iconified", "Ignore iconified windows");
-
+  
+  
+  ecore_config_boolean_create("engage.options.use_composite", 0, 'C',
+                              "use-composite","Use with composite manager for 
nice transparency effects");
+                          
+                              
   ecore_config_load();
   ret = ecore_config_args_parse();
 
@@ -179,7 +184,8 @@
   options.tray = ecore_config_boolean_get("engage.options.tray");
   options.ignore_run = 
ecore_config_boolean_get("engage.options.ignore_running");
   options.ignore_min = 
ecore_config_boolean_get("engage.options.ignore_iconified");
-
+  
+  options.use_composite = 
ecore_config_boolean_get("engage.options.use_composite");
   return ret;
 }
 
===================================================================
RCS file: /cvs/e/misc/engage/src/dock.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -3 -r1.20 -r1.21
--- dock.c      25 Oct 2005 00:54:54 -0000      1.20
+++ dock.c      9 Aug 2006 21:38:13 -0000       1.21
@@ -118,11 +118,25 @@
   need_redraw = true;
 }
 
+double lasttime = 0;
+
 void
 od_dock_redraw(Ecore_Evas * ee)
 {
-  Evas_List      *item = dock.icons;
+  
+
+    double time = ecore_time_get();
+       
+       if(time - lasttime < 0.04)
+       {
+        // need_redraw = false; // ????
+         return;
+       }
+    
+    lasttime = time;
 
+
+  Evas_List      *item = dock.icons;
   while (item) {
     OD_Icon        *icon = (OD_Icon *) item->data;
 
===================================================================
RCS file: /cvs/e/misc/engage/src/engage.h,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -3 -r1.30 -r1.31
--- engage.h    25 Oct 2005 00:54:54 -0000      1.30
+++ engage.h    9 Aug 2006 21:38:13 -0000       1.31
@@ -104,6 +104,7 @@
   unsigned        bg_fore, bg_back; // color - ARGB
   double          icon_appear_duration;
   int             tray, ignore_run, ignore_min;
+  int                    use_composite;
 };
 
 struct _OD_Window {
===================================================================
RCS file: /cvs/e/misc/engage/src/window.c,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -3 -r1.31 -r1.32
--- window.c    13 Jun 2005 18:55:14 -0000      1.31
+++ window.c    9 Aug 2006 21:38:13 -0000       1.32
@@ -6,6 +6,8 @@
 #include <X11/Xlib.h>
 #include <X11/Xatom.h>
 #include <X11/Xutil.h>
+#include <X11/extensions/shape.h>
+
 #ifdef XINERAMA
 #include <X11/extensions/Xinerama.h>
 #endif
@@ -32,6 +34,22 @@
 static void     handle_menu_draw(void *data, Evas * e, Evas_Object * obj,
                                  void *event);
 static void     od_window_set_hidden(int hidden);
+static void    window_input_shape_rectangle_set(Ecore_X_Window win, int x, int 
y, int w, int h);
+
+
+static void
+window_input_shape_rectangle_set(Ecore_X_Window win, int x, int y, int w, int 
h)
+{
+   XRectangle rect;
+   
+   rect.x = x;
+   rect.y = y;
+   rect.width = w;
+   rect.height = h;
+   XShapeCombineRectangles(ecore_x_display_get(), win, ShapeInput, 0, 0, 
&rect, 1, ShapeSet, Unsorted);
+}
+
+
 int
 od_window_hide_timer_cb(void *data)
 {
@@ -82,6 +100,13 @@
 {
   if (_ee != ee)
     return;
+    
+  if(options.use_composite)
+  {
+    Ecore_X_Window win = ecore_evas_software_x11_window_get(_ee);
+    window_input_shape_rectangle_set(win,0,0,options.width,options.height);
+  }
+  
   if (mouse_focus_timer)
     ecore_timer_del(mouse_focus_timer);
   mouse_focus_timer = NULL;
@@ -94,6 +119,13 @@
 {
   if (_ee != ee)
     return;
+  
+  if(options.use_composite) // it should be enough to do this at zoom out, but 
so it looks less cluttered
+  { 
+    Ecore_X_Window win = ecore_evas_software_x11_window_get(_ee);
+    
window_input_shape_rectangle_set(win,0,options.height-options.size,options.width,options.size);
    
+  }
+    
   if (mouse_focus_timer)
     ecore_timer_del(mouse_focus_timer);
   mouse_focus_timer = ecore_timer_add(0.5, od_window_hide_timer_cb, NULL);
@@ -188,7 +220,7 @@
   if (!(strcmp(options.engine, "gl")))
     ee = ecore_evas_gl_x11_new(NULL, 0,
                                (int) ((res_x - options.width) / 2.0 + x),
-                               (int) (res_y - options.height + y),
+                               (int) (res_y - options.height + y), 
                                options.width, options.height);
   else {
     if (strcmp(options.engine, "software")) {
@@ -198,18 +230,33 @@
     }
     ee = ecore_evas_software_x11_new(NULL, 0,
                                      (int) ((res_x - options.width) / 2.0 + x),
-                                     (int) (res_y - options.height + y),
+                                     (int) (res_y - options.height + y), 
                                      options.width, options.height);
   }
 
   ecore_evas_title_set(ee, "Engage");
   ecore_evas_name_class_set(ee, "engage", "engage");
-  ecore_evas_borderless_set(ee, 1);
-  if (options.mode == OM_ONTOP) {
+ 
+  if(options.use_composite)
+  {
+    ecore_evas_alpha_set(ee, 1);
+    Ecore_X_Window win = ecore_evas_software_x11_window_get(ee);
+    ecore_x_window_override_set(win,1);
+    
window_input_shape_rectangle_set(win,0,options.height-options.size,options.width,options.size);
+  }
+  else
+    ecore_evas_borderless_set(ee, 1);  
+
+
+
+  if (options.mode == OM_ONTOP) 
+  {
     ecore_evas_avoid_damage_set(ee, 1);
-    ecore_evas_shaped_set(ee, 1);
-  } else
+     if(!options.use_composite) ecore_evas_shaped_set(ee, 1);
+  } 
+  else
     ecore_evas_shaped_set(ee, 0);
+    
   ecore_evas_callback_post_render_set(ee, handle_post_render_cb);
   ecore_evas_callback_pre_render_set(ee, handle_pre_render_cb);
   ecore_evas_callback_delete_request_set(ee, handle_delete_cb);
@@ -234,11 +281,15 @@
                                  handle_mouse_move, NULL);
 
   od_window = ecore_evas_software_x11_window_get(ee);
-  printf("move %d %d\n", (int) ((res_x - options.width) / 2.0 + x),
-                                       (int) (res_y - options.height + y));
+ 
+ 
+//  printf("move %d %d\n", (int) ((res_x - options.width) / 2.0 + x),
+//                                     (int) (res_y - options.height + y);
+
   ecore_x_window_move(od_window,
                       (int) ((res_x - options.width) / 2.0 + x),
                       (int) (res_y - options.height + y));
+  
   ecore_x_netwm_window_type_set(od_window, ECORE_X_WINDOW_TYPE_DOCK);
 
   // Reserve a strut
@@ -317,6 +368,9 @@
 #endif
   }
 
+  od_dock_redraw(ee);
+  
+  
   if (options.auto_hide)
     od_window_hide();
 }
@@ -389,7 +443,14 @@
       od_dock_zoom_in();
     need_redraw = true;
   } else if (dock.state == zoomed || dock.state == zooming)
-    od_dock_zoom_out();
+       {
+      od_dock_zoom_out();
+      if(options.use_composite)
+      {
+           Ecore_X_Window win = ecore_evas_software_x11_window_get(ee);
+        window_input_shape_rectangle_set(win, 0, options.height-options.size, 
options.width, options.size); 
+      }
+       }
 }
 
 static void
@@ -398,8 +459,10 @@
   Evas_Event_Mouse_Down *ev = (Evas_Event_Mouse_Down *) event;
 
 #ifdef HAVE_EWL
+/* this doesnt work with the override window or composite, dont know, have to 
look at it... */
+if(!options.use_composite)
   if (ev->button == 3)
-    od_config_menu_draw(ev->canvas.x, ev->canvas.y);
+      od_config_menu_draw(ev->canvas.x, ev->canvas.y);
 #endif
 }
 



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to